Android关于libs,jniLibs库的基本使用说明及冲突解决
想必大家都遇到过这样的问题
java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK_v3_0_0 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.volcano.axehelp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.volcano.axehelp-1, /vendor/lib, /system/li
如果是在eclipse中,需要放到libs下对应库的目录。
如果是在Android Studio中,则会默认匹配main下的jniLibs目录,如果没有目录需要自己手动创建
Eclicpse中
android {
......
sourceSets {
main {
jniLibs.srcDirs = ['libs']
......
//jniLibs.srcDirs = ['libs']
jniLibs.srcDirs = ['src/main/libs']//设置目标的so存放路径
jni.srcDirs = [] //disable automatic ndk-build call
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
正确的解决冲突方法
正确姿势是把所有的.so所对应的库
(eclipse现在的使用者已经很少了,所以还是以Android Studio为主。建议全部放在jniLibs)
要么全部放在libs,
要么全部放在jniLibs。
//代码:
android {
defaultConfig {
ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8a" }// 其他忽略
}
}
我遇到的是百度的语音换醒jniLIbs文件和讯飞的libs文件有冲突,当用了sourceSets{}时就有一个有问题
这里是成对的
面百度语音换醒放在libs提示找不到 ,后来我把两个文件合并到一个文件里,其它的删除掉