记录一次集成第三方功能遇到的问题,包含so包问题,最小sdk问题还有资源覆盖问题

第三方sdk简介:
一个aar包,内部有一个armeabi的so包,一个jar包,一个res资源包;

制作:
本着解耦和模块化的原则,建了一个module,单独来实现相关的功能;这个module叫做tvu

小成果:
demo里依赖这个module,成功能接入功能;

But:
将这个module导入项目中时,问题就多了,本项目,涉及多个module,几乎每个module里都有so包;

遇到的问题:

  • 由于tvu本身依赖了aar,那么依赖tvu的项目,在项目的app的build.gradle里应该声明:
repositories {
    mavenCentral()
    flatDir {
        dirs project(':tvu').file('libs')
    }
}
  • 由于tvu的minisdk=19,而项目的minisdk<19,应该在tvu清单文件里声明:

  • 目前tvu的aar里只有armeabi类型的so包,而项目中主要做的armeabi-v7a兼容,此处有两种做法:
    1-所有的so包,都补上个armeabi类型的,两点不好,性能差,apk包大;
    2- 反向解压更改aar中的jni里的so包,改为armeabi-v7a,再压缩更改为aar;

  • tvu的so包扛不住混淆,出现了类似问题:**java.lang.UnsatisfiedLinkError:
    JNI_ERR returned from JNI_OnLoad in** ……注意规避,或者项目都不混淆,或者类似的在混淆文件里添加:
    -libraryjars ../XXX(此处为library名称)/src/main/jniLibs/armeabi/xxxxx.so
    -libraryjars ../XXX(此处为library名称)/src/main/jniLibs/armeabi-v7a/xxxxx.so
    -…

  • tvu的jar包里,values文件里有个string资源< string name=”normal” >metadata< /string >,这是某个功能的开关,项目里也有个< string name=”normal” >一般< /string >,本着资源覆盖的原则,那个metadata开关会被覆盖,导致功能打不开,报了个莫名其妙的view的空指针,所以项目里的这个normal应该改名,真坑。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值