加载32位JNI库时在64位Android上出现UnsatisfiedLinkError(在LG Flex2上)

时间:2016-01-27 12:58:07

标签: android java-native-interface 32bit-64bit native-code

我已经编写了一个调用32位JNI库的Android应用程序。 在Galaxy Note 4(32位,Snapdragon 805)上,一切都按预期工作,在LG Flex2(64位,Snapdragon 810)上该应用程序仅在传递参数时起作用" - abi armeabi-v7a&#34 ;到了亚行(显然)。

但是,手动安装jar文件时,Android会假定它是64位应用程序,导致下面列出了UnsatisfiedLinkError。

这是我检查/尝试的内容:   - 整个APK中没有64位库   - APK(lib / armeabi-v7a)中只有一个特定于arch的目录   - 本地库使用" LOCAL_MULTILIB:= 32"

构建

知道为什么Android坚持以64位模式运行这个应用程序? 根据我的阅读,Android在安装过程中遇到32位本机共享库时应自动检测旧版32位应用程序。

提前谢谢,Clemens

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/at.ac.ait.modentity-2/base.apk"],nativeLibraryDirectories=[/data/app/at.ac.ait.modentity-2/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "liblept.so"
java.lang.Runtime.loadLibrary(Runtime.java:366)

PS:请不要建议部署64位库,我希望应用程序以32位模式执行。

1 个答案:

答案 0 :(得分:0)

问题在于依赖于许多不同架构的本地库(领域,librealm-jni.so)。

因此,安装程序检测到这个单独的64位共享库,并确定该应用程序是64位知识/安全的。