android 马甲包中的 so 文件适配


项目中经常会用到三方库,包括 jar 、arr 或者 so 文件,对于它们的使用,我们常是将 jar和arr 直接放到项目目录 \app\libs 下即可,对于so文件则是 \app\src\main\jniLibs\ 下面对应的 armeabi-v7a 、armeabi 等目录下,以上是默认的情况。我们如果想修改so文件的目录,可以通过 gradle 来修改,gradle 可以对 jni 的目录做个修改,比如我们想把 so 文件也放在 \app\libs 目录下,则可以

android{
   ……
  sourceSet{
     main{
           jinLibs.srcDirs = ['libs'}
           }
   }
}

这样就把 main\jinLibs 的默认目录指向了 app\libs 。 以上操作比较简单,如果不巧碰上了马甲包怎么办?还是上面操作,没问题。

如果再进一步,比如说 app\libs\armeabi-v7a 目录下有五个so文件,分别是 a.so 、b.so 、c.so 、d.so 、e.so ,这五个so文件支持着app的某些功能;当项目开始增加马甲包时,由于某些原因,a.so 这个文件不适用了,需要替换为 a1.so 文件,其他四个文件不变,怎么办? 如果是 jar 包的话,可以通过 dependencies 中的命令来添加指定的 jar,但 so 文件似乎没有指定的命令。换个思路,既然 jni 的目录可以指定,那么我们把通用的 so 文件继续放在 app\libs\armeabi-v7a 下,把不同的 so 文件找个单独的目录放下,并且通过 gradle 来指定路径。由于 jni 的默认文件名为 jniLibs,我也就选它了,并且在 gradle 配置中 jinLibs.srcDirs 指定目录中添加它; 在马甲包中, 与 java 和 res 平级目录,创建 jniLibs 文件夹,在它里面添加 armeabi-v7a ,然后添加
so文件,这样就可以了。

android{
   ……
  sourceSet{
     main{
           jinLibs.srcDirs = ['libs', 'jniLibs']
           }
   }
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值