我已经编写了一个调用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位模式执行。
答案 0 :(得分:0)
问题在于依赖于许多不同架构的本地库(领域,librealm-jni.so)。
因此,安装程序检测到这个单独的64位共享库,并确定该应用程序是64位知识/安全的。