sdk封装、供第三方接入备忘

自己做的一个很大的App,突然接到要把其中一个核心功能,拉出来,提供给第三方做sdk接入。

一想就头大,之前都是一个人搞,也没有模块化。而且该功能关联相当的多,很是复杂。

 

*第一阶段:

先想办法把功能封装出来,两个目标,一,封装不影响自身app;二,封装sdk尽量精简;

第一步:把依赖库拉出来,全局公用类,来出来做了一个lib module,生成aar

第二步:把几个全局都需要的第三方插件module都独立出来。生成aar

第三步:把该功能,所有代码、页面、模板、资源文件等,都拉出来,同时对此功能进行了封装,初始化等工作,做一个module,依赖前两个module。

此处,因为和其他功能有很多关联,于是定义了一些回调和Handler,实现对sdk外部相关跳转等,不确定相应的回调机制。然后打包成aar。

最后,主工程,依赖以上三步的module,保证了自己app的正常推进。

同时,实现了一个demo工程,将1、2、3步生成的aar接入进来,按照3module的封装,进行demo接入跳转。

经过上面,算是实现了简单的封装,和demo;但是多个aar合并,却尝试受阻。尝试fat-aar,结果只支持gradle 2.x....崩溃,试了一天,退版本带来一堆问题,后来放弃。索性就几个aar一起用吧(gradle3.x版本合并aar,谁知道好办法欢迎告诉我,多谢啊)

-------------

*第二阶段:

合作商接入时,觉得大了,一些他们用不上的辅助功能想要去掉,比如内部包含的各种推送渠道。

第一时间,删除了引用和代码,满足了第三方调用。

但这时问题来了,我的app还需要这几个东西啊。怎么办,不想分两个版本代码,也不想天天改来改去的。于是深入研究了一下。

发现productFlavors

http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html

之前也没用过,但是一了解,发现特适合这种情况,于是按照此方式修改,接入,ok。

注意:

代码中有差异的,要在app/src目录中,创建与main同级的文件(文件名与productFlavors里的命名一样),然后各自实现,注意main中就不要保留,否则会报重复。

--------------

谨以此,记录一下。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值