【问题标题】:UnsatisfiedLinkError on 64-bit Android when loading 32-bit JNI library (on LG Flex2)UnsatisfiedLinkError on 64-bit Android when loading 32-bit JNI library (on LG Flex2)
【发布时间】:2016-05-04 10:42:04
【问题描述】:

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

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

这是我检查/尝试过的: - 整个 APK 中不存在 64 位库 - 在 APK (lib/armeabi-v7a) 中只有一个特定于架构的目录
- 原生库是用“LOCAL_MULTILIB := 32”构建的

知道为什么 Android 坚持在 64 位模式下运行这个应用程序吗? 根据我的阅读,Android 应该在安装期间仅遇到 32 位本机共享库时自动检测旧版 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 位模式下执行。

【问题讨论】:

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


    【解决方案1】:

    问题是一个依赖关系,它为许多不同的架构引入了本机库(领域、librealm-jni.so)。

    所以安装程序检测到这个单一的 64 位共享库并确定应用程序是 64 位感知/安全的。

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 2020-01-19
      • 2015-03-08
      • 2014-04-08
      • 1970-01-01
      • 2017-03-25
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多