描述下Gradle 构建过程中的核心任务,以及我们能做哪些事干涉整个过程,例如:
第一类: 通过配置影响 task,例如:混淆,BuildConfig 等;
第二类:我们可以add一些 listener,插入一些 task 等;
对于第一类,回答我们可以配置什么,有何作用;
对于第二类,回答我们可以怎么干,有何使用场景;
更多问答 >>
-
2019-09-17 22:41
-
2019-09-23 01:01
-
2019-09-25 21:58
-
玩Android更新记录 [from 2019-10-02]
2019-10-08 21:44 -
2019-10-15 23:26
-
每日一问 gradle项目构建,需要经历哪些核心task,整个构建流程哪些我们可以干涉?
2019-09-15 23:29 -
2019-09-11 00:24
-
2019-09-09 00:19
-
2019-09-04 23:33
-
2019-09-01 23:16

抛砖引玉
构建过程
下面几步是从网上搜索到
可以配置什么
比如下面这个配置url.properties中定义不同版本的url
以前我们项目中区分是不是打线上的包,或者通过判断是不是debug版本来关闭log打印的功能,一般都是在一个常量类中保存,打包的时候改对应的地方,缺点有时候可能会忘记修改。使用上面的配置就可以不用修改自动打包成对应的包了。
可以怎么干
可以在第3步和第4步之间干点事情,就是编译时插桩。可以实现统计埋点,bug追踪等功能,比如今年微信开源的无反射插件化框架Shasow也用了这块的技术。
Google官方在Adnroid Gradle1.5.0版本提供了Transform API,允许第三方Plugin在打包dex文件之前的编译过程中操作.class文件
所以可以通过Transform API拿到class文件,然后通过ASM或者别的AOP框架,动态的在class文件中插入代码或者生成新的class文件。
第一类
针对第一类,其实module中的build.gradle中很多配置可以影响到task,比如以下
第二类
可以自定义Plugin,自定义Task,并依赖assembleRelease这个task,实现快速多渠道打包。比如:Walle