1. 問題描述:
在android-studio中,進行項目編譯時,出現以下error:
Init library failed & error:!java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/xxxxx/base.apk"],nativeLibraryDirectories=[/data/app/xxxxx/base/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libxxx.so"
2. 原因分析:
很顯然,是因為沒有正确load相應的so庫。可是,我已經在libs下面放置了so庫了啊。通過在/data/data/包名/lib下面檢視,的确沒有這個.so檔案(我的手機是root過的,是以可以用root權限打開/data/data/包名/lib這個目錄),
那麼,為什麼會這樣呢?
經查,是因為在gradle檔案中沒有指定相應的so檔案的目錄
3. 解決辦法:
在項目的build.gradle檔案中,加入以下code,再編譯,問題解決:
sourceSets {
main {
jniLibs.srcDirs = ['libs'] //
jni.srcDirs = [] //disable automatic ndk-build
}
}
其中,jniLibs.srcDirs指定的就是so所在的目錄。
用android-studio開發,了解gradle相關知識,必不可少。