前言作为一名Android开发同学,当你的项目和代码达到一定规模后,相信你一定遇到过编译速度慢的问题。等待编译的时间仿佛过了一个??世纪,是不是?对于程序员来说,时间尤为宝贵。当你修改完一个BUG或者想验证一个功能的时候,因为编译速度太慢,不得不打断思路。也会严重影响你的开发效率。俗话说,磨刀不误砍柴工,因此降低和提高项目的编译速度是一项值得立即着手的重要工作。如何优化Gradle官方的一些优化建议尽量使用最新版本的Gradle和JVM。这是最简单、最直接的方式。Gradle开发团队将持续更新Gradle版本以优化构建速度并提供一些新功能。使用新版本的JVM是因为Gradle运行在JVM之上,所以如果新版本的JVM提升了性能,也会让Gradle运行得更快。Parallelexecution,并行执行Gradle任务,在你的gradle.properties文件中添加如下配置:org.gradle.parallel=trueBuildScan是一个很好的诊断工具,可以帮助你分析和解决编译速度慢的问题。使用方法:在你的Gradle构建工程中执行如下命令/gradlewbuild--scan需要注意的是,BuildScan是Gradle高版本(4.3+)默认的功能,低版本(4.3以下))的Gradle需要额外安装一个插件才能使用。具体信息请点击:BuildScanPluginUserManual配置阶段,减少不必要的applyplugin,按需使用。如果插件未被所有模块使用,请不要使用allprojects{}方法。避免在配置阶段执行一些耗时的任务,如IO操作或网络请求等。依赖分析减少动态(2.+)版本和SNAPSHOT版本依赖库。通常,这种依赖会迫使Gradle去远程仓库进行比对。检查新的更改。避免不必要和未使用的依赖任务执行阶段增量构建,请点击用户指南中的:。Daemon在老版本的Gradle中开启Daemon配置,3.0之后的Gradle版本默认支持。调整daemon的堆大小,默认1GB,如果需要增加,可以在gradle.properties中设置:org.gradle.jvmargs=-Xmx2048M使用实现代替编译,有效减少编译时的依赖一次,你需要升级到Gradle版本3.4增量编译,Gradle可以分析依赖项到单个类级别,以便只重新编译受更改影响的类。自Gradle4.10以来,增量编译是默认编译。在旧版本中,可以这样激活:tasks.withType(JavaCompile){options.incremental=true}使用分析报告,编译完成后可以生成本地分析报告,命令如下:./gradlewassembleDebug--profileAndroid一些官方优化推荐使用最新版本的工具AndroidStudio和SDK工具AndroidpluginforGradle避免编译不必要的资源,比如不必要的语言本地化,可以只指定一种语言资源和屏幕适配配置,如图在下面的例子中:android{...productFlavors{dev{...//下面的配置限制"dev"flavorousing//Englishstringresourcesandxxhdpiscreen-densityresources.resConfigs"en","xxhdpi"}...}}启用offlinemode,开启按需配置注1:如果你使用的是Gradle4.6版本,并且com.android.tools.build:gradle版本是3.0.1或者3.1.0,需要关闭这个配置,避免这样我不必要的问题,这个问题将在未来版本的AndroidGradle插件中修复。注2:在最新版本的AndroidStudio中,取消了按需配置。使用WebP格式图像有效地减小图像文件大小,而无需执行构建时压缩,这可以加快你的构建速度关闭PNGcrunching以通过禁用自动图像压缩来加速你的构建,这在debug构建类型中默认是禁用的Gradle版本3.0及以上。如果你需要手动配置其他构建类型,下面的例子:android{buildTypes{release{//DisablesPNGcrunchingforthereleasebuildtype.crunchPngsfalse}}//如果你使用的是旧版本的插件,使用//下面的://aaptOptions{//cruncherEnabledfalse//}}启用InstantRun***多说几句,其实有些同学对此关注度不高,不愿意花精力去折腾。然而,随着编译次数的增加,实际浪费的时间远超你的想象。从提高团队生产力的角度来看,这是一个投入产出比非常高的事情。以我参与的一个项目为例。比如优化后,构建时间比优化前减少了50%,很容易就有多余的时间喝咖啡,整个团队节省下来的时间可以用来codereview,学习,和早点下班。总比坐着发呆等待构建好!
