举个简单得例子,最近在写code的时候,遇到个小bug,还是花了点时间来解决。记录一下。在一个项目中需要集成一个第三方支付平台。然后和原本集成的宁一个分享的第三方的sdk的jar冲突了。但是最开始不是这个错误,最开始是报的Android-v4包的错误。
解决之后发觉。是第三方控件的jar重复冲突。比较如果2个依赖工程的jar 比较多。看那个少的 除去必要的jar,剩余的一个一个删掉测试。宁外也可能是工具问题,但是大部分不是。因为你之前都是ok的。所以网上流传什么重启 工具 重新下载sdk 都是感觉蛮不靠谱的。
异常: java.lang.UnsatisfiedLinkError: Couldn’t load sm2 from loader dalvik.system.PathClassLoader[DexPathList[[zip file”data/app/com.libCom.androidsm2-.apk”],nativeLibraryDirectories=[/data/app-lib/com.libCom.androidsm2-2, /vendor/lib, /system/lib]]]: findLibrary returned null
原因:导入so文件没有编译到apk里面去,所以导致UnsatisfiedLinkError异常。
解决:
1、AS工程(module)目录下直接新建一个lib文件夹,lib文件夹跟Eclipse类似的加入armeabi文件夹,所有的so文件放入此文件夹下
2、打开build.gradle,在android的标签下加入如下代码:
sourceSets {
main {
//jni库的调用会到资源文件夹下libs里面找so文件
jniLibs.srcDirs = ['libs']
}
}
代码很简单,加入之后直接编译。