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包了。修改完毕后该异常解决,运行测试无误。

  

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