我正在尝试编译一个静态库以在Android上使用,但我无法弄清楚如何编译它.该库使用标准库(stdio.h等...)和libxml2.
我正在尝试使用arm-eabi-gcc进行编译,但是我收到以下错误:
/cygdrive/c/android-ndk-r4/build/platforms/android-8/arch-x86/usr/include/asm/posix_types.h:15:28:错误:posix_types_64.h:没有这样的文件或目录
我如何让它工作?
我发现这篇文章几乎是我需要的:
基本上,我的项目中有一些部分从未更新,所以我试图避免在每次更新Android.mk文件时添加它们.
上面的答案显示了如何将一些代码内置到一个单独的静态库中,但是当我尝试在单独的Android.mk文件中预构建上述代码时,它不会自行构建.这看起来有点多余......如果我必须同时构建它们,那么制作单独的静态库有什么意义呢?
如果我在单独的项目中更改Android.mk,请阅读:
包含$(BUILD_SHARED_LIBRARY)
并在主项目中包含它:
LOCAL_SHARED_LIBRARIES:= libMyaccessories.so
然后我得到未解析的(函数名称)引用,可能是因为它找不到共享库(在调用路径中)
任何人都可以帮我解决这个问题吗?
我有一个libs像这样的文件夹结构的android项目:
/libs
/armeabi
libfoo.so
libbar.so
libmystuff.so
libgnustl_shared.so
/armeabi-v7a
libfoo.so
libbar.so
Run Code Online (Sandbox Code Playgroud)
foo并且bar是第三方库,mystuff是我自己的库,来自一个单独的Android JNI项目,它需要gnustl_shared来自同一个JNI项目.
当我在Eclipse中构建项目时,我可以使用查看生成的APK的内容unzip -l,它确实显示所有这些库文件都已包含在内.
但是,安装APK后,即使其他库存在,该/data/data/com.myproject/lib文件夹也不包含libgnustl_shared.so.
这不可避免地导致以下错误:
UnsatisfiedLinkError: Couldn't load gnustl_shared: findLibrary returned null
Run Code Online (Sandbox Code Playgroud)
作为一个完整性检查,我运行adb push ./libs/armeabi/libgnustl_shared.so /data/data/com.myproject/lib并且确定,应用程序按预期启动.
我没有在构建日志或Eclipse控制台中看到任何建议构建或安装应用程序的任何问题.
libgnustl_shared.so我的应用程序安装?如果我能提供任何可能有用的具体信息,请在评论中告诉我.