优化Gradle 依赖使用方式
经历过模块化后,项目依赖变的错综复杂,以至于编译速度过慢,部分模块依赖不合理导致包增大等。所以清理了一些不必要的依赖及重复依赖详见 commit:
现在仍有些问题,比如 SpaceBase 依赖了 VirusEngine 等问题。
全新的依赖方式
需要那个开那个
修改项目中 module.properties
的配置, true
代表以Project
方式引入,反之则是aar
方式,该配置已被忽略,只对当前工程配置有效。
如果你确实想提交修改,请使用 git add -f module.properties
命令强制添加。
|
|
添加新的模块依赖
如果你需要添加新的模块依赖,请按照以下方法,在 module.gradle
脚本中新增 compile_*
方法,如下:
|
|
然后通过闭包形式传递出去,在 module.gradle
脚本中有ext
扩展属性 ,添加如下:
|
|
最终通过以下方式使用
|
|
模块公用的Libs库
在工程目录的顶级 libs
文件夹中存放着各个模块的 aar
,如果需要更新,可以通过脚本进行
全量更新,或者各模块部分更新。
更新AAR
在cleaner
工程目录下,在你每次运行程序时 update-aar.gradle
会自动更新已开启模块(如isJunkDebug=true
)的aar
到 公用libs
库中,你所需要做的就是 commit
,这样能保证各位小伙伴使用的都是较新的aar
。
同样的你也可以手动触发Task
来更新aar
,相应Task
如下:
|
|
版本发布
如果需要全部通过 Project
形式构建版本发布,只需添加动态参数 isAllDebug=true
,比如:
|
|
同样的可以添加更多的模块参数,来表示某些模块通过 Project
形式构建,比如:
|
|
注意: 默认都是以引入
aar
形式构建(除SpaceBase),所以如果不添加参数,需要及时更新aar
更新日志
2017/4/21 优化Gradle编译速度,最快3s。
1、修改
isAllDebug
作用域,由原存放在module.properties
修改存放在gradle.properties
中。
2、可选模块include,只有在module.properties
配置文件中开关为true 的模块,才会被Android Studio 所include。
3、新增task
耗时监听,方便查看耗时task
,在Gradle Console 中输出。
4、区分测试开发输出,新增dev
productFlavors
,同时关闭一些不用的productFlavors
,其中dev
用于测试Jenkins 输出apkflavors
,buildVersion
用于研发本地输出apk,minSdkVersion=21,关闭fabric 在buildVersion
中上报初始化,同时也优化了其他模块的依赖。
5、本地默认只有buildVersion
flavors
,只有在isAllDebug=true
的情况,才会开启其他的flavors
。以便获得更好的编译体验。还有修改完gradle配置文件后记得点build sync进行同步一下。
2017/5/27 添加自动合并多语言task
1 、使用
Python
脚本自动化合入多语言的task
,所以在使用前需要有Python
环境,相应代码块如下:
|
|
其中第一个参数是需要添入多语言模块文件目录,第二个参数是存放多语言文件目录。修改参数 执行mergeLanguage
task
即可合并多语言。
2017/5/31 Auto Update Librarys AAR
1 、
quartz-robot
会在每周一至周五(8,12,16,20h)准时自动更新aar
到git repos。
2017/5/1 更新说明
以上是模块化后解决过渡时期编译速度慢,方便开发调试等各种便利的方案,各位研发大拿体验
下,感受如丝般顺滑,如有问题及时沟通。