Android - Gradle架构中使用的“.so”库

Android使用Gradle架构的Android应用,需要对.so库做特殊的处理,因为会找不到,就会导致编译正确,使用错误;常见的使用情况是根据不同的cpu,有不同的库,包括:armeabi,mips,x86等。
报错:

?
1
java.lang.UnsatisfiedLinkError: Couldn't load weibosdkcore from loader dalvik.system.PathClassLoader[DexPathList[[zip file /data/app/xxx.apk],nativeLibraryDirectories=[/data/app-lib/xxx- 2 , /vendor/lib, /system/lib]]]: findLibrary returned null


有两种方法可以解决:

1. 将“.so”库生成jar

把jar引入项目即可,需要注意目录的顺序:

?
1
2
3
-lib
--armeabi
---xxx.so

命令:

?
1
jar cvf xxx_cpu.jar ./lib

再加载到应用中,即可;

2. 使用gradle配置

Android{}的范围内,添加:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//noinspection all
task copyNativeLibs(type: Copy) {
     // third party lib so
     from( new File(projectDir, 'libs' )) { include 'armeabi/*.so' }
     into new File(buildDir, 'native-libs' )
}
 
tasks.withType(JavaCompile) {
     compileTask ->
         //noinspection all
         compileTask.dependsOn copyNativeLibs
}
 
//noinspection all
tasks.withType(com.android.build.gradle.tasks.PackageApplication) {
     pkgTask ->
         pkgTask.jniFolders = new HashSet<file>()
         pkgTask.jniFolders.add( new File(buildDir, 'native-libs' ))
}</file>


即可,//noinspection all可以去除warning

 

结伴旅游,一个免费的交友网站:www.jieberu.com

推推族,免费得门票,游景区:www.tuituizu.com

转载于:https://www.cnblogs.com/rabbit-bunny/p/4200373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值