java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader...... couldn't find "libweibos 問題解決辦法

今天在集成好友盟SDK測試新浪微博時突然蹦出來的一個異常(如下圖),關鍵信息就是:couldn't find "libweibosdkcore.so"。

項目崩潰的原因也是因爲 "libweibosdkcore.so"這個庫沒有找到,可我看了下我的Project目錄結構,各個平臺的架包(arm64-v8a、armeabi、armeabi-v7a、x86、x86_64)下我都存放了"libweibosdkcore.so"這個庫,爲什麼運行時卻找不到呢?

後來查閱大量資料,發現我的sourceSets設置中沒有引用到我在項目中新建的JniLibs文件夾裏架包的so庫,那SourceSets又是什麼呢?

java插件引入了一個概念叫做SourceSets,通過修改SourceSets中的屬性,可以指定哪些源文件(或文件夾下的源文件)要被編譯,哪些源文件要被排除。Gradle就是通過它實現Java項目的佈局定義。 
SourceSets目錄結構是固定的Java的標準項目目錄佈局,如下圖:

修改方式如下:

 

所以我需要在sourceSets設置中把"libweibosdkcore.so"這個庫的具體位置添加進去。具體操作如下:

修改 Module:app/build.gredle 中的sourceSets節點配置,將  jniLibs.srcDirs = ['libs'] (默認配置,將JniLibs資源文件的位置指向libs文件) 改爲   jniLibs.srcDirs = ['src/main/jniLibs']  (指出了JniLibs資源文件夾的具體位置),這樣便會引用到jniLibs目錄文件下的庫和jar包了。修改完畢後該異常解決,運行測試無誤。

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章