Mer*_*mad 9 64-bit android-ndk android-source android-5.0-lollipop
我有一个Android应用程序,我用AOSP(Kitkat)编译为android系统应用程序,它运行正常.我的应用程序依赖于使用Android-NDK编译为32位库的本机代码.我在我的android应用程序libs/armeabi文件夹中复制本机库,然后在AOSP中构建我的android应用程序(我还修改了device.mk以复制/ system/lib文件夹中的libs ).在Android Kitkat上一切正常.
当我在Android-L(64位平台)上移植我的应用程序时,我无法从Android应用程序加载我的本机库,错误就像 -
java.lang.UnsatisfiedLinkError: dlopen failed: "libfoobar.so" is 32-bit instead of 64-bit
我使用以下java代码加载本机库 -
if ( ENABLE_ANDROID_INTEGRATION )
{
System.load("/system/lib/libfoobar.so");
}
else
{
System.loadLibrary("foobar");
}
Run Code Online (Sandbox Code Playgroud)
当我使用AOSP构建代码时,ENABLE_ANDROID_INTEGRATION为真
更有趣的是,当我关闭ENABLE_ANDROID_INTEGRATION并在Eclipse中构建我的应用程序时,在AOSP之外作为普通的"可下载"应用程序,然后我的应用程序在64位Android平台上正常运行.
我想知道的是 - 如何构建我的应用程序作为64位Android平台的32位库(即AOSP构建)的本机android系统应用程序?
我试过的 - 我在我的Android应用程序的Android.mk文件中使用了LOCAL_32_BIT_ONLY = true标志,但它接缝它没用.可能是我不完全了解这个标志的使用.
因为我的时间不多了所以我更喜欢在这里发布这个问题而不是RnD.如果有人遇到这个问题,请指导.
此致,Meraj
它作为第三方应用程序安装时的工作原理是,在安装时,包管理器会扫描APK并检查它是否使用本机库,如果找到它,它会存储它们使用的ABI(因为它只安装库)对于一个单一的ABI,所以关于做出哪个选择的信息需要存储在某个地方).
对于使用/ system/lib中的库安装在系统范围内的应用程序,不清楚此特定应用程序是否依赖于/ system/lib中的某些特定于应用程序的库(在/ system /中的64位版本中不可用) lib64),因此包/应用程序管理器无法知道此特定应用程序需要特定的ABI,因此以64位模式运行它.
设置LOCAL_32_BIT_ONLY可能只影响它是否应该以32位模式编译,而不是应该以哪种方式运行.
http://www.slideshare.net/hidenorly/investigation-result-on-64-bit-support-in-aosp上的一份旧的(可能是过时的)报告似乎表明应用程序的本机库应该进入/ system/lib/apkname,但在实际的Android 5.0系统上似乎不是这样.相反,libs似乎在/ system/app/appname/lib/abiname中.有些应用程序似乎有多个体系结构的本机库(例如,"arm"和"arm64"都是abiname),而其他应用程序只有一个体系结构(这会强制进程在ABI模式下启动).
所以我认为你需要改变你如何安装你的本机库的机制(你说你手动修改了device.mk) - 我不熟悉如何构建自己的应用程序作为AOSP构建的一部分,但我建议试图查看现有的捆绑应用程序他们是如何做到的,这个提交可能是相关的:https://android.googlesource.com/platform/packages/apps/Terminal/+/1a161f75%5E%21/
小智 5
我有同样的问题,在这里和这里找到了答案。 删除所有64位库,只保留32位库:在Android.mk中:
APP_API := armeabi armeabi-v7a x86 mips
Run Code Online (Sandbox Code Playgroud)
在build.gradle(Module:app)中:
ndk {
moduleName "<module_name>"
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24776 次 |
| 最近记录: |