android - 手动(aapt)将 native 库.so添加到apk

标签 android android-ndk aapt

由于多种原因,我正在手动构建我的项目(或多或少遵循这些步骤 http://geosoft.no/development/android.html ),而不使用 ant。

我的项目使用 NDK 并构建 .so 库。

  • 使用 Eclipse:

当我使用 Eclipse 构建项目时,一切正常:我将 libMyNativeLib.so 拖放到 libs/armeabi 目录中,当我调用 loadLibrary(MyNativeLib ) 它工作得很好:我可以从我的 Java 代码中调用 native 方法。

  • 手动:

现在我想手动构建我的.apk。除了 native 库加载之外,一切正常。 使用aapt add,我在我的apk中添加了:lib/armeabi/libMyNativeLib.so(我看到Eclipse生成的apk在lib中包含这个.so/armeabi 所以我在 apk 中使用了相同的路径)。 调用 loadLibrary(MyNativeLib) 时,出现以下异常

java.lang.UnsatisfiedLinkError: Couldn't load MyNativeLib from loader dalvik.system.PathClassLoader[DexPathList...

这是为什么?

我应该在 dx --dex 步骤中针对 native 代码 (.so lib) 执行某些操作吗?我不这么认为,但我可能错了? (我只将 dx --dex 与我的 .jar 库一起使用,我猜这是逻辑)。

你有什么想法吗?

谢谢

最佳答案

感谢 apktool ( http://ibotpeaches.github.io/Apktool/ ) 我发现了问题所在。

生成最终 .apk 包的 makefile 有错误。事实上,aapt add 命令在路径中包含 \ 而不是 /。当我在 Windows 上生成时,我的所有路径都使用 \ 作为分隔符。这就是为什么我使用 \ 作为 aapt add 的原因。然而,由于在 Android (Unix) 上安装 .apk 时使用了此路径,所以我应该使用 / 分隔符。

关于android - 手动(aapt)将 native 库.so添加到apk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23522153/

相关文章:

android - 如何下载 : Android NDK, 修订版 8e

android - 带有 AAR 的 gradle 构建失败,没有找到资源错误

android - OnActivityResult 和 OnResume 的执行顺序

Android 媒体播放器停止

Android ndk r15b - Posix_memalign () 未声明的标识符

java - TessBaseAPI 无法解析符号 tess-two OCR Android

java - 通过 java 在 Linux 上执行 aapt

android - 获取 "' 安卓 :icon' attribute: attribute is not a string value” error while uploading an APK to the play store

android - 如何通过复制保护来复制我的申请?

java - 通话失败: tts engine connection not fully setup in the TextToSpeech functionality