1. 程式人生 > >Android Studio在報錯java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file

Android Studio在報錯java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file

集成了極光推送的SDK後,發現初始化Init一直失敗的問題,

以為自己的SDK整合有問題,對著整合指南比對了一遍,沒發現問題.
又通過看Logcat的日誌輸出,發現竟然報loadLibrary失敗,也即是載入so時失敗了.

難道是極光的sdk有問題,載入so的路徑有問題,如果是這樣的話,官方應該早就發現了才對.

再想一想,既然這個問題只有我遇到了,並且整合步驟是正常的, 那麼會不會是AS的版本不同,導致的環境不同,從而導致的.

AS的環境最有可能的地方是 build.gradle了.

又在網上找了下,果然在一些AS的版本上.so的載入需要在build.gradle進行配置,並且不同的版本配置出的效果還不同.
否則會導致打包出的apk檔案中缺少lib目錄,有的是有lib目錄,但是裡面缺少so檔案.

我的AS是3.1.2版本,對應的在app下的build.gradle中android裡配置:
sourceSets {
         main {
             jniLibs.srcDirs = ['libs']
         }
}

有的版本是對應的在app下的build.gradle中android裡配置:
 sourceSets {
         main {
             jni.srcDirs = []
             jniLibs.srcDirs = ['src/main/jniLibs']
         }
}
這種配置方法在我的3.1.2上測試,打包apk時依舊不會生成lib目錄.