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" }// 其他忽略
    }
}

Android关于libs,jniLibs库的基本使用说明及冲突解决_第1张图片

Android关于libs,jniLibs库的基本使用说明及冲突解决_第2张图片

我遇到的是百度的语音换醒jniLIbs文件和讯飞的libs文件有冲突,当用了sourceSets{}时就有一个有问题

这里是成对的

Android关于libs,jniLibs库的基本使用说明及冲突解决_第3张图片

面百度语音换醒放在libs提示找不到 ,后来我把两个文件合并到一个文件里,其它的删除掉

Android关于libs,jniLibs库的基本使用说明及冲突解决_第4张图片

Android关于libs,jniLibs库的基本使用说明及冲突解决_第5张图片

你可能感兴趣的:(Android关于libs,jniLibs库的基本使用说明及冲突解决)