Android提升Gradle编译速度或减少Gradle编译时间.md
Android如何提升Gradle编译速度或减少Gradle编译时间
最终优化方案
优化效果比对
优化前:随便修改一行代码,点击"Build - make project" 编译就需要 15~28秒之间
优化后:随便修改一行代码,点击"Build - make project" 编译只需8-10秒左右,假如修改的代码曾经编译过,能命中缓存,那么基本在3~4秒即可编译完毕。
开发机相关配置
Infrastructure
Operating system Windows 7 6.1
CPU cores 8 cores
Max Gradle workers 8 workers
Java runtime JetBrains s.r.o OpenJDK Runtime Environment 1.8.0_152-release-1343-b01
Java VM JetBrains s.r.o OpenJDK 64-Bit Server VM 25.152-b01 (mixed mode)
Max JVM memory heap size 9544 MB
将所有项目源码,各种缓存临时目录都移动到高性能SSD磁盘上
- TOSHIBA- TR200 虽然是SSD,但是明显不够高性能(虽然可能比一般的机械可能会稍微好一点)
gradle.properties 配置
#因为电脑有20G内存,所以在原来的基础上直接乘与5倍,足够同时打开3个以上项目了。
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=1280m -Dfile.encoding=UTF-8
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.parallel=true
org.gradle.caching=true
#假如不启动会报错: Unable to get provider com.squareup.leakcanary.internal.LeakCanaryFileProvider: java.lang.ClassNotFoundException
android.useAndroidX=true
android.enableJetifier=true
android.enableBuildCache=true
碰到的问题
3. Android Studio 设置里勾选了自动编译功能却无效的问题?
参考资料
- 关于IDEA不能实时编译的一个临时解决办法。。。。 - MyHome - OSCHINA
- idea初使用之自动编译 - 野蜂的博客 - CSDN博客
- Android Studio : auto build like Eclipse - Stack Overflow
- "Make project automatically" - only while not running/debugging – IDEs Support (IntelliJ Platform) | JetBrains
2. 在 Gradle Scan报告里 Timeline - FROM-CACHE - Build cache result - Unpack 时间耗时很长怎么办?
原因:
编译缓存(Build Cache)目录所在磁盘IO性能过低,将其设置到高效能的SSD固态磁盘即可大幅度提升解包(Unpack)速度(降低解包耗时).
例如:
同样的缓存大小: "Cache artifact 3.62 MB / 4447 entries"
缓存目录放在
TOSHIBA- TR200磁盘上,解包(Unpack)耗时 13.453sSamsun SSD 850 EVO M.2磁盘上,解包(Unpack)耗时 1.644s 性能提升 10倍以上
参考:
1. 按照 参考资料: Android项目中开启Gradle的build scan(构建审视) - 简书 步骤来做,然后Sync时,报错
Gradle sync failed: Could not find com.gradle:build-scan-plugin:1.8.
Searched in the following locations:
Required by:
project : (2 s 761 ms)
解决方案
在项目根目录里增加以下代码:
buildscript {
repositories {
maven { url 'https://plugins.gradle.org/m2' }
}
dependencies {
classpath 'com.gradle:build-scan-plugin:2.3'
}
}
apply plugin: com.gradle.scan.plugin.BuildScanPlugin
buildScan {
termsOfServiceUrl = "https://gradle.com/terms-of-service";
termsOfServiceAgree = "yes"
}
详情参考: Gradle Build Scan Plugin User Manual | Gradle Enterprise Docs
参考资料
-
Put
org.gradle.caching=truein yourgradle.properties Android项目中开启Gradle的build scan(构建审视) - 简书
A fine-grained performance profile is available: use the --scan option.
buildscript {
dependencies {
#下面这句是添加的
classpath 'com.gradle:build-scan-plugin:1.8'
}
} #下面5行是添加的
apply plugin: 'com.gradle.build-scan'
buildScan {
licenseAgreementUrl = 'https://gradle.com/terms-of-service'
licenseAgree = 'yes'
}
使用构建缓存加快干净构建的速度 | Android Developers
使用 Android 插件 2.3.0 及更高版本的项目在默认情况下会启用构建缓存(除非您明确停用构建缓存)。
How does android.enableBuildCache=true functions in new Android Studio 2.2? - Stack Overflow
- Step 0:Ensure that android.dexOptions.preDexLibraries is either not set or set to true;
- Step 1: android.enableBuildCache=true
- Step 2: Build your Android project and check the following locations to see whether the build cache took effect. By default the cache-dir is /.android/build-cache.
-
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
gradlew clean --info 会得到类似这样的信息,信息标明了开启Parallel以及每个task使用的线程信息 How to decrease your Gradle build time by 65%? - Keval Patel - Medium
org.gradle.jvmargs=-Xmx3072m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8gradlew android:assembleDebug --profile --configure-on-demand --daemon-
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线程数量}"也有一定作用
【译】我每周在构建Gradle时是如何节约出5小时的 - 简书
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Android提升Gradle编译速度或减少Gradle编译时间.md的更多相关文章
- QT:提高QT Creator编译速度,配置预编译头Stable.h
提高QT Creator编译速度,配置预编译头Stable.h QT Creator支持预编译头提高编辑速度,网上有些教程写得不详细,走了弯路,具体实现方法如下. (1)工程.PRO文件加入下面代码 ...
- Android 提高 gradle 的编译速度
随着项目在国内各个商店上线,开始介入了渠道的概念. 目前总共有 13 家商店,尝试使用 ./gradlew assembleRelease 命令打包,耗时将近 40 分钟. 因此搜索了一些可以提供编译 ...
- Gradle Build速度加快终极方法(android studio)
Android Studio用起来越来越顺手,但是却发现Build的速度实在不敢恭维,在google和度娘了几把(....)之后,大体就是分配更高的内存,步骤:Setting-->搜索gradl ...
- 加速Android Studio的Gradle构建速度
在利用Android Studio做项目时,发现随着项目内资源的逐渐增多(或者项目创建时间太过久远,而又未经常打开),Android Studio的build速度也越来越慢.(P.S.在做我的CSGO ...
- 转: 加快Android编译速度
转: http://timeszoro.xyz/2015/11/25/%E5%8A%A0%E5%BF%ABandroid%E7%BC%96%E8%AF%91%E9%80%9F%E5%BA%A6/ 加快 ...
- 为什么说 Gradle 是 Android 进阶绕不去的坎 —— Gradle 系列(1)
请点赞,你的点赞对我意义重大,满足下我的虚荣心. Hi,我是小彭.本文已收录到 GitHub · Android-NoteBook 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,欢迎 ...
- 记——加快gradle 构建速度的经验
Gradle作为一个新的构建系统,无疑在灵活,扩展,跨平台等各方面都表现得非常优秀,然而,它也有一点备受吐槽,就是速度慢.以下为本人使用gradle过程中,几次加快gradle构建速度的经验之谈. 本 ...
- Gradle Build速度加快方法汇总
Android Studio用起来越来越顺手,但是却发现Build的速度实在不敢恭维,在google和度娘了几把(....)之后,大体就是分配更高的内存,步骤:Setting-->搜索gradl ...
- 【转】实践最有效的提高Android Studio运行、编译速度方案
原文:https://blog.csdn.net/xwh_1230/article/details/60961723 实践最有效的提高Android Studio运行.编译速度方案 最有效提升Andr ...
随机推荐
- cursor:not-allowed
今天发现了一个鼠标样式:not-allowed,是一个红色圈加一个斜杠,表示禁止的意思,似乎IE ,chrome firefox 都可以正常显示,很好用
- 「SNOI2019」通信 分治建图
根据题意 每个点可以直接与S,T相连 也可以和前面的哨站相连 暴力建边的话 有n2条边 要用分治优化建边: 类似于归并排序 先对每一层分为左半边与右半边 对每一半都拿出来先排序去重后 直接排成一条链建 ...
- ProjectEuler215 Crack-free Walls
易知状态不会太多(\(3329\)个),直接搜一下,按照能不能连在后面建边,跑一遍dp即可 #include <bits/stdc++.h> using namespace std; st ...
- 01_Deepin15 下搭建python开发环境
https://blog.csdn.net/iimpact/article/details/90239193 https://github.com/josonle/Coding-Now#Linux系统 ...
- ubuntu系统火狐无法播放网页视频
在ubuntu开发环境下,浏览firefox上网页视频时,无法播放视频. 需要安装flash插件 命令如下: 1. sudo apt-get update 2. sudo apt-get in ...
- 图的最小生成树(java实现)
1.图的最小生成树(贪心算法) 我两个算法的输出都是数组表示的,当前的索引值和当前索引对应的数据就是通路,比如parent[2] = 5;即2和5之间有一个通路,第二个可能比较好理解,第一个有点混乱 ...
- linux系统编程--守护进程,会话,进程组,终端
终端: 在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal), 进程中,控制终端是保存在PCB中的信息,而f ...
- php &#编码/php unicode转码/php &#数字编码
今天使PHP开发用到了Unicode的编码与解码,将unicode转为中文,再将中文转Unicode这样的操作是非常常见的,所以小编将这两个unicode中文互转函数给作为一个笔记保存起来,非常的简单 ...
- Django-权限管理与路径导航
1.url权限管理 设计表 1.设计表 系统一共有多少个路径: 有哪些用户使用: 用户在公司的角色: 对角色进行权限分配(什么样的角色可以访问什么样的路径): 2.往表中添加数据,分配角色权限 3.登 ...
- jquery转换js
刚离职,一直忙于弄简历,整理面试题.今天得空吧前几天学习复习的jq基础知识整理一下,长时间不用还真的忘记了.所有在深入学习中也不要忘记复习之前的知识.做巩固,老话说的好打好根基才能盖好房.基础知识过后 ...