我尝试在Nexus 9上使用本地库运行应用程序。
该应用程序以错误消息退出:
java.lang.UnsatisfiedLinkError: dlopen failed: "lib_xyz.so" is 32-bit instead of 64-bit
除了重新编译库并使apk变大,是否有已知的解决此问题的方法?
我尝试在Nexus 9上使用本地库运行应用程序。
该应用程序以错误消息退出:
java.lang.UnsatisfiedLinkError: dlopen failed: "lib_xyz.so" is 32-bit instead of 64-bit
除了重新编译库并使apk变大,是否有已知的解决此问题的方法?
重点是将运行环境转换为32位
在 build.gradle 中添加以下内容:
defaultConfig: { ... ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "mips" } }
在 gradle.properties 中添加 android.useDeprecatedNdk=true
.so
文件复制到新文件夹中。ndk { abiFilters "armeabi-v7a", "x86" }
。 - Mark O'Sullivan ndk {
abiFilters 'armeabi-v7a', 'x86'
}
不行,你需要获取本地库以使其与64位兼容才能正常工作。
请参阅官方文档:JNI技巧:64位注意事项
我遇到了同样的问题,当我从Android Studio 2.1更新到2.2.3(使用ndk v.13.1)时,谷歌上没有找到真正帮助我的提示(例如使用abiFilters,排除'lib / x86_64 / lib… .so',LOCAL_MULTILIB:= 32或TARGET_PREFER_32_BIT:= true等)。
最终,我能够再次使用最新的AS v2.2.3使其正常工作(在Android.mk或build.gradle中未更改任何内容),只需使用以前的ndk编译器即android-ndk-r10e
我手动使用ndk-build仅为“armeabi-v7a”和“x86”构建了库,它在带有arm64的Android上完美运行。