我有一个
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失败:“libfoobar.so”是32位而不是64位
我使用以下java代码加载本机库 –
if ( ENABLE_ANDROID_INTEGRATION )
{
System.load("/system/lib/libfoobar.so");
}
else
{
System.loadLibrary("foobar");
}
当我使用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