前言:本来在Android studio下编译速度尚可,约1min可以编译完成,但是过了个周末,再次编译时发现编译不通过,或者用时超长,达到1h或30min,明显不属于可开发状态。本次编译主要是利用gradlew assembleRelease进行编译。
步骤一
发现在下载maven时采用地址为“http://maven.aliyun.com/nexus/content/groups/public/”,经过查找发现该地址为老版地址,阿里云提供了新地址“https://maven.aliyun.com/repository/public”,改动后,发现该处编译通过。
记录:通过结果来看,具有一定效果,但是用时很长,且并不能判断一定就是老版仓库有问题。具有一定意义
步骤二
老版仓库改为新版仓库后,编译继续,但是用时可达30min以上,且不一定每次都会完成。故考虑是否为编译环境资源问题。
执行方案:编译时在D:\项目\android\gradle.properties中添加各类限制
rg.gradle.jvmargs=-Xmx8192m
android.enableD8=true
org.gradle.daemon=true
记录:修改jvm大小具有一定意义,而其他含义不明,且效果不明,最终对编译速度没有明显提升
步骤三
在编译过程中发现基本上每次都需要下载gradle,理论上来说不需要每次下载,只要一次就可以。故执行gradle本地下载,防止在“项目path\android\gradle\wrapper\dists”中
记录:该方案是将gradle下载,编译时避免远程下载,可减少部分编译时间。
步骤四
查找编译时耗时位置为 :app:preReleaseBuild;
从网上资料查询可知设备理论上应该只用2ms左右即可通过该项,但实际上可达到15min以上。目标是需要进行快速编译,而该处可以在初次编译之后,实际不用再次编译,只需执行“gradlew assembleRelease -offline”即可,经过时间验证后,编译时间约30s。
总结
采用“gradlew assembleRelease -offline”实际上是离线编译模式,并没有实际解决问题,只能算一种方案或者优化。不过,在实际使用中,并不需要每次编译都从远处仓库中更新,所以该方案在编译时有良好的使用体验。