相关疑难解决方法(0)

如何使用Android NDK编译静态库?

我正在尝试编译一个静态库以在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 static-libraries android-ndk

35
推荐指数
2
解决办法
6万
查看次数

在Android NDK项目中使用我自己的预建共享库

我发现这篇文章几乎是我需要的:

如何使用Android NDK编译静态库?

基本上,我的项目中有一些部分从未更新,所以我试图避免在每次更新Android.mk文件时添加它们.

上面的答案显示了如何将一些代码内置到一个单独的静态库中,但是当我尝试在单独的Android.mk文件中预构建上述代码时,它不会自行构建.这看起来有点多余......如果我必须同时构建它们,那么制作单独的静态库有什么意义呢?

如果我在单独的项目中更改Android.mk,请阅读:

包含$(BUILD_SHARED_LIBRARY)

并在主项目中包含它:

LOCAL_SHARED_LIBRARIES:= libMyaccessories.so

然后我得到未解析的(函数名称)引用,可能是因为它找不到共享库(在调用路径中)

任何人都可以帮我解决这个问题吗?

c++ android build android-ndk

14
推荐指数
1
解决办法
2万
查看次数

为什么不从我的APK复制libgnustl_shared.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我的应用程序安装?
  • 我在哪里可以了解安装APK时会发生什么?

如果我能提供任何可能有用的具体信息,请在评论中告诉我.

java-native-interface android android-ndk

9
推荐指数
1
解决办法
9535
查看次数