为什么不从我的APK复制libgnustl_shared.so?

nam*_*uol 9 java-native-interface android android-ndk

我有一个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时会发生什么?

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

cao*_*eng 0

我认为你的libgnustl_shared.so需要在/armeabi-v7a下而不是在/armeabi下

请尝试将libgnustl_shared.so复制到/armeabi-v7a