1、使用最新的Android gradle插件

Google tools team一直致力于提高android studio的编译速度,使用最新的gradle插件可以搞编译速度 在Android Gradle Plugin 3.0后,google推出了新的依赖方式,并强制要求废弃老的依赖方式,将原有的compile闭包方法,拆分成implementation,api以明确项目的依赖关系。
其中implementation仅对当前module依赖有效,api同compile,存在依赖的传递性。错误的使用则会导致依赖被加载两次,增加编译时间。
更多3.0之后的特性可以参考官方文档中的 Dependency configurations 部分:
https://developer.android.com/studio/build/dependencies

- compile 'com.android.support:appcompat-v7:27.1.1'
+ implementation 'com.android.support:appcompat-v7:27.1.1'

2、避免使用multidex

当minSdkVersion为21以下的时候的时候(不包含21),则编译时间会大大增加。我们可以通过定制开发版本编译minSdkVersion为21来提高开发效率,具体配置如下:

android {defaultConfig {        ...multiDexEnabled true}productFlavors {dev {minSdkVersion 21        }prod {minSdkVersion your_minSDKVersion        }    }    ...
}

3、避免使用multi-APK(不常使用)

当需要针对不同的ABI或dpi做支持,使用spilts{}对工程生成不同apk时可以使用该方法。
在开发调试的时候,关闭splits功能,具体配置如下:

android {    ...  if (project.hasProperty(‘devBuild’)){splits.abi.enable = falsesplits.density.enable =false   }   ...
}

使用命令行构建时使用这个命令:

./gradlew assembleDevelopmentDebug -PdevBuild

当使用Android Studio构建可做以下配置:
打开Preferences -> Build, Execution, Deployment -> Compiler,再Command-line选项后填写-PdevBuild,如下图所示:

4、减少打包的资源文件

在我们进行开发调试的时候,没有必要对所有的资源文件进行编译,通常只选择一种可以减少编译时间,具体配置如下:

android{...productFlavors {development {minSdkVersion 21//only package english translations, and xxhdpi resources   resConfigs (“zh”, “xxhdpi”)}}...
}

5、禁用PNG压缩

android构建的时候默认开启了PNG压缩,在开发调试时,可以将PNG压缩关闭,具体配置如下:

android {...if (project.hasProperty(‘devBuild’)){aaptOptions.cruncherEnabled = false}...
}

6、使用Instant run

andorid studio 3.0之后对instant run进行了很大的优化,之前的版本出现过更新的代码没有运行到手机上,所以一直关闭着。现在可以尝试使用。

7、不在gradle中定义动态变量

在开发调试的情况下,不要使用动态定义

// def buildDateTime = new Date().format(‘yyMMddHHmm’).toInteger()
def buildDateTime = project.hasProperty(‘devBuild’) ? 100 : new Date().format(‘yyMMddHHmm’).toInteger()
android {defaultConfig {versionCode buildDateTime}
}

8、不要使用动态依赖版本

项目在构建的过程中具有不确定性,可能因为网络问题导致编译时间过长或编译失败。并且Gradle会每24小时检查一次新的依赖版本从而增加依赖解析时间。
不要使用下面的依赖方式:

// 错误的示范
implementation 'com.appadhoc:abtest:latest'
implementation 'com.android.support:appcompat-v7:27+'

  

9、对Gradle后台进程的最大堆大小的分配

分配更大的内存可能会对大的项目的构建有时间上的减少,具体还要看电脑的配置等其他因素,具体可以参考gradle官网 Configuring JVM memory:
https://docs.gradle.org/current/userguide/buildenvironment.html#sec:configuringjvm_memory
新版本配置时在gradle.properties中配置

org.gradle.jvmargs=-Xmx1536m

不要在使用老版本的在build.gradle中配置

dexOptions {javaMaxHeapSize = '4g'
}

 

10、使用Gradle缓存

Gradle缓存是Gradle 3.5的新特性,当缓存开启时,Gradle将缓存并重用之前构建的结果。具体在gradle.properties中增加如下配置:

org.gradle.caching=true

以上几点出自google 2017 I/O大会,具体可参看会议视频 :
https://www.youtube.com/watch?v=7ll-rkLCtyk

11、针对项目构建时间具体进行优化

针对每个项目的构建呢,具体的优化也不会相同,我们可以将我们项目的具体构建时间输出成文档,具体分析哪块的构建时间过长,来针对性的优化。具体命令如下:

gradlew --profile --recompile-scripts --offline --rerun-tasks assembleFlavorDebug

  • --profile:启用分析。
  • --recompile-scripts:在绕过缓存时强制重新编译脚本。
  • --offline:禁止 Gradle 提取在线依赖项。这样可以确保 Gradle 在尝试更新依赖项时引起的任何延迟都不会干扰您的分析数据。您应当已将项目构建一次,以便确保 Gradle 已经下载和缓存您的依赖项。
  • --rerun-tasks:强制 Gradle 重新运行所有任务并忽略任何任务优化。 构建完成后,在project-root/build/reports/profile/ 目录下使用浏览器打开生成的profile-timestamp.html即可看到具体的构建时间报告。

参考文档:

andorid官方文档 —— 配置构建(https://developer.android.com/studio/build)
◆ gradle官方文档 —— Building Android Apps (https://guides.gradle.org/building-android-apps)
◆ Google I/O 中提到的提高Android studio的编译速度的几个建议 (https://blog.csdn.net/sd19871122/article/details/78550740)

  

转载于:https://www.cnblogs.com/steffen/p/9865905.html

AndroidStudio提高编译速度的建议相关推荐

  1. HighTec编译器提高编译速度

    当我们工程特别大时(尤其是基于AUTOSAR开发的工程,包含了BSW协议栈及MCAL,ASW的代码其c文件数量级可达上千)全编译一个工程需要很长时间. HighTec是增量式编译,每次只重新编译修改的 ...

  2. iOS - Xcode提高编译速度,增量编译,ccache

    前言 贝聊目前开发的两款App分别是贝聊家长版和贝聊老师版,最近因为在快速迭代开发新功能,项目规模急速增长,单个端业务代码约23万行,私有库约6万行,第三方库代码约15万行,单个客户端的代码行数约60 ...

  3. 使用预编译头提高编译速度

    什么是预编译头 在介绍预编译头之前,有必要了解一下C/C++的编译方式.C/C++的编译单元是源文件(带有.c..cc..cpp等扩展名的文件),在编译一个源文件之前,预处理器会把这个源文件中所有通过 ...

  4. 提高编译速度的方法——ccache的使用

    在使用CMake编译大型工程时.如果每次只是单独对一个文件进行修改还好,CMake可以针对修改单独编译,但往往只要对CMakeLists做一点小修改,整个工程就要重新编译,对于普通性能的电脑来说通常非 ...

  5. Win10 WSL编译Android开启ccache(提高编译速度)

    当你删掉out/target目录或者使用make clean清空输出重新编译源码的时候,编译时间通常都很漫长. 其实这个问题很容易解决,Android官方为我们带来了解决方案–ccache编译器缓存. ...

  6. linux qt jom,Qt Creator 使用技巧之提高编译速度【使用jom参数】

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/hsshh1988/article/de ...

  7. jom qt linux,Qt Creator 使用技巧之提高编译速度【使用jom参数】

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/hsshh1988/article/de ...

  8. 在VS中设置预编译头从而提高编译速度

  9. 如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度

    1.前言 使用英飞凌单片机编译器 TASKING TriCore Eclipse IDE 开发编译时,想必感受最深刻的就是编译速度,那是非常慢了,如果是部分修改的源文件编译还好,不用等太久,而如果选择 ...

  10. 【转】Linux程序编译速度提高方法

    项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情.Research了一下,找到以下可以帮助提高速度的方法,总结一下. tmpfs 有人说在Windows下用了RAMDisk把一个项目编译 ...

最新文章

  1. 机器学习入门(07)— MNIST 数据集手写数字的识别
  2. Sqlserver 2000 迷你、便携企业管理器(10M),支持Dts编辑
  3. Db4o结合Linq、Lambda表达式的简单示例
  4. 基于ARP的网络扫描工具netdiscover
  5. opengl加载显示3D模型md5mesh类型文件
  6. selinux= 为 disabled_「丁香园」五年没考过执医,就不要出来「为祸人间」了
  7. java初学者指南_企业Java中事务隔离级别的初学者指南
  8. 第六届省赛(软件类)真题----Java大学B组答案及解析
  9. 问题:pom文件飘红, parent.relativePath
  10. Intellij idea创建maven项目并配置tomcat
  11. excel2003出现“向程序发送命令时出现错误”解决方法
  12. 剑指offer 29 多于一半的数
  13. win7开机动画_win7系统怎么修改开机动画 win7系统开机动画修改方法
  14. 解读升压电路(BOOST)与降压电路(BUCK)
  15. Makima修正Hermite插值
  16. python统计pdf字数代码_Python基本数据统计.pdf
  17. 如何使用PS修改图片中的数字
  18. win10启动项_win10系统开机启动项的设置教程
  19. [jzoj 4244] 【五校联考6day2】yi {贪心}
  20. Java设计模式(六)装饰器模式-与代理模式的区别-项目实战应用

热门文章

  1. 如何在苹果Mac上的登录窗口中打开辅助功能?
  2. 如何在Mac上禁用iCloud驱动器?
  3. mac苹果电脑如何查看mac地址
  4. leetcode397. Integer Replacement
  5. 对于stackoverflow的中文翻译的相关问题
  6. cisco3745做Easy ×××
  7. java new对象的创建过程
  8. JAVA HttpURLConnection 获取网页内容
  9. 【个人笔记】Vue+ElementUI后台模板配置动态路由
  10. 程序员30多岁了还单身的原因