本文主要是介绍Android7.0加载.so文件报UnsatisfiedLinkError异常解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在做串口开发的时候,一般会在Application中初始化JNI的加载
{try {System.loadLibrary("serial_port"); } catch (UnsatisfiedLinkError ule) {ule.printStackTrace();}}
之前项目一直运行在5.0系统上,没什么问题。今天把项目运行在7.0的时候,出现了UnsatisfiedLinkError
异常,导致项目也不能正常运行。
为了解决问题这边做了以下尝试
- 开始以为权限问题,就加了读写权限,并没有用
- 把targetSdkVersion调到22也没用
- 把compileSdkVersion调到19才能加载成功,显然不能这样配置
- 百度了一大把UnsatisfiedLinkError ,并没有给出原因
误打误撞找到了Google NDK的例子 https://github.com/googlesamples/android-ndk
就点进去看了下他们的配置,最后发现是没有加NDK编译的架构
ndk {abiFilters "armeabi","x86","armeabi-v7a"}
加上以后就可以正常加载了。
Demo完整配置:
compileSdkVersion 25buildToolsVersion '25.0.2'defaultConfig {applicationId "com.machin.testzy"minSdkVersion 15targetSdkVersion 22versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"sourceSets.main {jni.srcDirs = []}//不加ndk 7.0加载.so文件会报UnsatisfiedLinkError异常ndk {abiFilters "armeabi","x86","armeabi-v7a"}}externalNativeBuild {cmake {path "CMakeLists.txt"}}
这篇关于Android7.0加载.so文件报UnsatisfiedLinkError异常解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!