[Android]如何做一个崩溃率少于千分之三噶应用app(11)-Gradle组件化优化

以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。

[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表

我建立了一个关于Android架构学习的群,里面可以进一步进行组件化学习的交流。

群号是316556016,也可以扫码进群。我在这里期待你们的加入!!!


ModuleBus地址

例子里面会有简单的演示,只要下载之后就能看到源码和调用了。

我也会封装越来越好用得功能到里面。

如果觉得有用的话,请大家给一个github的星


这个系列已经到了第十一课了。

那么在这里先做个过渡性的总结

我开展的这个系列的文章,其属于android的组件化开发,组件化开发有效让我们开发只关注于一个独立的功能模块,让我们代码更加有条理和统一。

介绍的是组件化开发的一些特殊技巧,一些关于跨module通信,多渠道开发等,而第九节写是是组件化转化插件化的过程,其具体介绍可以查看第九节Small插件化Small源码分析系列文章


这一节我要介绍的是关于gradle对于module组件化的一个开发体会,谨遵参考。

组件开发中设计到多个模块的统一性,我们每一个module都需要统一需要安装的module参数,我们可以抽离到一个common_config.gradle里面

1.新建一个common_config.gradle


2.里面写一些我们基本的开发参数,全部都是自定义的


3.引入到每个module的build.gradle里面,这里提供两种的连接代码


4.然后就可以引用我们的参数到全部的module里面了


*第八节的文章有介绍如果将gradle和AndroidMainfest,Android代码间交互,有兴趣可以翻一翻那个资料。

参数统一的意义在于

1.我只要在根目录的地方就可以调节我整个项目的参数。

2.如果不小心引入不同版本的apk,你最后会发现你的apk容量会不知不觉地增大啦。然后你想着如果优化。其实你引入了多个不同版本的sdk,最后时候引用会增加sdk,所以容量会增大很多的。

这小小的修改,无疑对我们组件化开发是巨大的助力。


下一个必备技巧

因为我们将每个功能模块最后用lib来封装,那么如果我们需要单独调试一个功能模块的话,需要如何去做呢?

我们并不想每次都全编译全部的内容,我们只需要编译我们需要的那个模块内容,并验证就可以了。

那么需要验证我们需要app进入的入口,将lib改为lib,我们如何才能lib和application的编译呢?

(1)这里通过设置isDebug的标志来配置入口


(2)通过isDebug来判断引用哪一个文件夹里面的AndroidManifest.xml

manifest.srcFile指定使用哪个地址里面的AndroidMainifest

res.scrDirs指定编译的资源的地址

exclude使用用来编译时排除编入debug文件里面的文件


(3)建立debug和main的文件夹AndroidManifest.xml和独有有Activity接口来特别定制出来。


(4)到达这里或许觉得完了,我们还需要移除主module对其他功能module的依赖

这里也是通过isDebug来区隔


(5)这里需要注意因为指定了resDir为debug里面,所以需要将引用的也复制一份到debug的res里面。

有人会问为何不将debug的文件夹也放到main里面,那么就可以引入mian文件夹里面,其实这样做也是可以的,但是请将debug的AndroidMainfest.xml的地址也要指定好。


*2016.12.09更新

发现只是修改common_config.gradle的isDebug属性,不会触发到其他module提示,是否有属性更改的情况,这里,需要完全clean工程里面的缓存,然后重编一次,才能替换成application的。

还有一个问题,引入的顺序最好先引入common_config.gradle,再判断。因为有可能需要会因为先后问题让读取不到isDebug的属性。



*2016.12.15更新

网上有人提到可能会出现资源冲突问题

其实只需要在每个组件的gradle加入一段代码就可以让资源前缀加入module相关的标示


加入resourcePrefix就可以了


这一节就到这里,希望这样小小的优化,可以让大家组件化开发更加方便。

下一节,请继续期待!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值