G B*_*G B 28 java-native-interface android 32bit-64bit
我尝试在Nexus 9上使用本机库运行应用程序.
应用程序退出并显示错误消息:
java.lang.UnsatisfiedLinkError: dlopen failed: "lib_xyz.so" is 32-bit instead of 64-bit
Run Code Online (Sandbox Code Playgroud)
是否有任何已知的解决方法来解决此问题(当然,重新编译库并使apk更大)?
G B*_*G B 30
找到一个解释:64位Android可以使用32位本机库作为后备,只有当System.loadlLibrary()在默认搜索路径中找不到更好的东西时.如果强制系统使用带有完整库路径的System.load()加载32位库,则会出现UnsatisfiedLinkError.所以第一个解决方法是使用System.loadLibrary()而不是System.load().
还需要考虑的另一件事是库不能混合:回退行为仅适用于应用程序加载的第一个库.如果第一个是64位,则同一应用程序不能加载32位库,反之亦然.
小智 13
关键是将运行环境转换为32位
在build.gradle中添加以下内容
defaultConfig:{... ndk {abiFilters"armeabi","armeabi-v7a","x86","mips"}}
添加android.useDeprecatedNdk=true到gradle.properties中
.so文件复制到新文件夹中| 归档时间: |
|
| 查看次数: |
31117 次 |
| 最近记录: |