编译速度,这个当前gradle最大的弱势,是大多数新人还有许多准备切换平台的老鸟的郁结所在。
下文所说的编译大致包括以下三个场景:
- project sync(sync now)
- clean project(build-clean project)
- run app(可爱的绿色三角)
查看编译过程主要通过以下两个窗口(若不慎关闭可在View-Tool Windows中开启):
- Event log
- Gradle Console
1. 少在compile时使用"+"号而改用特定版本并手动升级
配合第2条使用风味更佳。
之前的我在个人开发时就觉得这样写既高端大气又方便,然而在工作环境不可能冒险使用最新版的包,而是需要稳定的代码环境。
2. 灵活地使用offline work
当我们完成了项目的第一次导入或者依赖的加载想要避免查找更新内容时就可以启用Gradle Settings中的offline work选项
只要别手贱清空C:\Users\{userName}\.gradle\caches\modules-2
路径下的compile缓存
这一条可以极大地缩短Event log中提到的Gradle sync started与Gradle sync completed
以及在[:assembleDebug]中由
Incremental java compilation is an incubating feature.```
占用的大段时间占用的时间
####3. 对gradle.properties进行配置
具体的Max数值还可以提高
```org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.daemon=true
org.gradle.parallel=true
android.enableBuildCache=true```
另外在Settings-Build,Execution,Deployment-Commond-line Options中设置"--parallel-threads={cpu线程数量}"也有一定作用
####4. 用aar替代不(常)变的module
具体方法此处略过。
####5. 更换电脑配置(cpu、内存)以调高第三条中Max相关数值
这才是最重要的。
**//6. 父子集成对task中MergeResource的影响
//对最后的编译速度似乎没有明显的影响。**
**//7. 管理好主项目的AndroidManifest,清除标红部分,清除重复Permission
//对最后的编译速度应该有小部分的影响。**