java.lang.UnsatisfiedLinkError:dlopen failed: "..//xxxxx.os" is 32-bit instead of 64-bit

最近项目引入第三方串口so库时遇到的问题,原因是手机cpu默认先调用64位虚拟机,而so包是32位的。

解决思路

让APP默认调用32位虚拟机,64位so库兼容32位。

解决方案
在启动项目的build.gradle文件中以下代码即可,切记是启动项目

defaultConfig {
        ......

        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }
    }

记录一下引入so库的方式

第一种方式

  1. 在把so库文件复制到libs下,注意复制后的so库要有对应文件夹。
    java.lang.UnsatisfiedLinkError:dlopen failed:
  2. 在含有so库文件项目下的build.gradle文件中添加以下代码:
android {
  	......
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

第二种方式

在需要导入so库项目的src下的main文件夹下新建jniLibs文件夹,把对应的so库添加到该文件夹中即可。
java.lang.UnsatisfiedLinkError:dlopen failed:

你可能感兴趣的:(Android)