在 64 位 Android 上加载 32 位 JNI 库(在 LG Flex2 上)时出现不满意的 LinkError



我编写了一个调用 32 位 JNI 库的 Android 应用程序。在Galaxy Note 4(32位,Snapdragon 805)上,一切都按预期工作,在LG Flex2(64位,Snapdragon 810)上,该应用程序仅在将参数"--abi armeabi-v7a"传递给ADB时才有效(显然)。

但是,当手动安装jar文件时,Android假定它是一个64位应用程序,这会导致下面列出的不满意链接错误。

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

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

提前谢谢你,克莱门斯

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位模式执行。

问题是依赖关系

正在为许多不同的体系结构拉入本机库(领域,librealm-jni.so)。

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

最新更新