android打包sdk过程中关于library中含有aar依赖的解决方案

android打包sdk过程中aar依赖的处理
由于项目需求上架google play,涉及到一些重复性代码和业务逻辑的需求,公司决定对现有的产品做一些打包sdk的操作, 第一次接到这样的需求也是很懵逼,没办法。。。然后一顿百度,找到了很多篇技术博客,上面都是说用到github上一个比较老的开源库 fat-aar ([https://github.com/adwiv/android-fat-aar],由于作者几年没有更新过了,可能对gradle 3.0+以上支持不是很友好,可能自己能力有限试着去修改脚本兼容,但是尝试过都失败了,毕竟这个库要求把gradle版本回退到2.3.3,一切过去项目好多地方直接一片姨妈红。最后决定用maven仓库来解决这个问题,其中的辛酸只有自己能懂,网上的博客千篇一律,都是最简单的例子,自己的项目library中居然还依赖了aar库(打包sdk的时候,library里面的aar依赖无法传递。),网上没有一篇这样的情况的解决方案。废话少说 ,先上我之前code的目录结构
在这里插入图片描述

可以看到项目依赖了一个baseLibrary,另外两个库是liveness和一个自定义camera的库,其中liveness库里面包含了两个aar的库,而问题就出在这两个aar的库上。玩过sdk就不说了,这一路走来的坑真的不少,我在打包过程中发现liveness库中的aar依赖无法传递到主工程中,于是想到了使用maven来传递依赖。。。我这里用的是单位的私服maven,具体怎么搭建,自行百度。好了,废话少说直接上图:在这里插入图片描述
到此,不出意外你的aar可以上传到maven服务器(maven服务器上的权限记得打开,我刚开始传到maven由于没有权限,一直传不上去,还以为代码问题,浪费我半天时间!!!!),这个时候你可以把liveness中两个aar的依赖嵌入到liveness中了。。
在这里插入图片描述
这里是拿liveness这个库中两个aar来写的,当然是在liveness中这样去依赖就好啦。。。。。不出意外的话,你在这里已经依赖成功了。。。。。。。其实写到这里,大家心里也有数了。通过api的方式引入了aar的依赖,主工程这个时候其实也能引用到aar资源了,这就是借助maven来传递依赖。。新建一个demo,新建一个module库,最后我把整个完整项目全部打包成了sdk,把项目中该有的业务逻辑代码及资源目录,还有baseLibrary,liveness,idcamera三个库中的代码和资源目录**手动合并了成了一个commLibs的module!!!!!**给大家看看我合并成的最终项目的结构:apps这个目录下是项目主工程中的业务逻辑代码,bases是baseLibrary中的业务代码,idcamera,liveness同上。在这里插入图片描述
其中commLibs里面是我抽出来的整体项目业务代码和三个库中所有资源,依赖在了一个空项目(壳子)中,还没完。。。。。。。。。这个时候还剩最后一步再把commLibs这个库上传到maven仓库中在这里插入图片描述
然后整个完整项目的sdk最后小手一点,上传至Maven大功告成,这个时候,你就可以在任意项目中去使用自己抽出来的sdk啦。。最近单位招人,也问了很多来面试的童靴,好像大家并没有遇到过这样的情况,特此写一篇博客。中间遇到的坑很多,例如在library中butterKnife中的R文件要改成R2,也够折腾的了。。。。。。,引用一篇大佬的博客 给大家避免坑ButterKnife在library中的使用。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值