Android为别人提供SDK、aar时踩过的坑。

Android为别人提供SDK、aar时踩过的坑。

最近项目中的某些功能需要为第三方提供一个SDK,android这边使用aar包的形式提供出去。
在集成的过程中,踩过了一些坑,自己也花了很长的时间来解决这些坑,在此记录下,以后好翻阅。若有碰上同样错误的有缘人,也可参考。
(暂且将集成我们sdk的应用称为宿主)
1.:宿主应用名称变成提供的aar包中的module名了
:宿主的androidmanifest.xml中的应用名是string/app_name,应用名被我们module中Strings.xml中的app_name覆盖了。要么宿主改个字段名,要么我们module中的strings中的app_name改一下。

2.:宿主应用与SDK主题不一致,导致运行崩溃
错误描述为:java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
:宿主使用的是Activity的Theme,而我们应用使用的是APPCompatActivity,Theme不同不能运行,要么我们的Activity继承Activity,如果实在不好改成继承Activity,那么在我们module的AndroidManifest.xml文件中在对应Activity的节点中添加AppCompatActivity的Theme。

3.:aar中的jar包或者第三方框架与宿主应用中的jar包或源码冲突
:尝试使用了exclude{}等方式,均无效。后来使用provided字段解决。
若使用api ‘xxx.jar’依赖jar包,则改成provided ‘xxx.jar’,provided能保证引用但不打入包中。
若使用api ‘com.xx.xx’依赖第三方库,则同样改成provided。
若使用了implementation fileTree(dir:‘libs’,include:[’*.jar’])这种,也可以改为provided字段,保证不把三方框架打入包中,防止冲突。

4.:有时会碰到android.view.InflateException: Binary XML file line #16 in 问题,找不到aar中的控件。
:我们这边的项目是因为lib中的aar,宿主应用漏加了几个,导致运行失败。所以这边提供出去的aar在宿主那边一定要全部加上。不然会出现很难排查的问题。

先记录这么多吧,踩坑掉头发。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值