当前位置:   article > 正文

Android提升Gradle编译速度或减少Gradle编译时间.md

升级到gradle7.0编译变慢

Android如何提升Gradle编译速度或减少Gradle编译时间

最终优化方案

优化效果比对

  • 优化前:随便修改一行代码,点击"Build - make project" 编译就需要 15~28秒之间

  • 优化后:随便修改一行代码,点击"Build - make project" 编译只需8-10秒左右,假如修改的代码曾经编译过,能命中缓存,那么基本在3~4秒即可编译完毕。

  • 开发机相关配置

    1. Infrastructure
    2. Operating system Windows 7 6.1
    3. CPU cores 8 cores
    4. Max Gradle workers 8 workers
    5. Java runtime JetBrains s.r.o OpenJDK Runtime Environment 1.8.0_152-release-1343-b01
    6. Java VM JetBrains s.r.o OpenJDK 64-Bit Server VM 25.152-b01 (mixed mode)
    7. Max JVM memory heap size 9544 MB

将所有项目源码,各种缓存临时目录都移动到高性能SSD磁盘上

  1. TOSHIBA- TR200 虽然是SSD,但是明显不够高性能(虽然可能比一般的机械可能会稍微好一点)

gradle.properties 配置

  1. #因为电脑有20G内存,所以在原来的基础上直接乘与5倍,足够同时打开3个以上项目了。
  2. org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=1280m -Dfile.encoding=UTF-8
  3. org.gradle.daemon=true
  4. org.gradle.configureondemand=true
  5. org.gradle.parallel=true
  6. org.gradle.caching=true
  7. #假如不启动会报错: Unable to get provider com.squareup.leakcanary.internal.LeakCanaryFileProvider: java.lang.ClassNotFoundException
  8. android.useAndroidX=true
  9. android.enableJetifier=true
  10. android.enableBuildCache=true

碰到的问题

3. Android Studio 设置里勾选了自动编译功能却无效的问题?

参考资料
  1. 关于IDEA不能实时编译的一个临时解决办法。。。。 - MyHome - OSCHINA
  2. idea初使用之自动编译 - 野蜂的博客 - CSDN博客
  3. Android Studio : auto build like Eclipse - Stack Overflow
  4. "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"

缓存目录放在

  1. TOSHIBA- TR200 磁盘上,解包(Unpack)耗时 13.453s
  2. Samsun SSD 850 EVO M.2 磁盘上,解包(Unpack)耗时 1.644s 性能提升 10倍以上

参考:

1. 按照 参考资料: Android项目中开启Gradle的build scan(构建审视) - 简书 步骤来做,然后Sync时,报错

  1. Gradle sync failed: Could not find com.gradle:build-scan-plugin:1.8.
  2. Searched in the following locations:
  3. Required by:
  4. project : (2 s 761 ms)
解决方案

在项目根目录里增加以下代码:

  1. buildscript {
  2. repositories {
  3. maven { url 'https://plugins.gradle.org/m2' }
  4. }
  5. dependencies {
  6. classpath 'com.gradle:build-scan-plugin:2.3'
  7. }
  8. }
  9. apply plugin: com.gradle.scan.plugin.BuildScanPlugin
  10. buildScan {
  11. termsOfServiceUrl = "https://gradle.com/terms-of-service";
  12. termsOfServiceAgree = "yes"
  13. }

详情参考: Gradle Build Scan Plugin User Manual | Gradle Enterprise Docs

参考资料

  1. Build Cache

    Put org.gradle.caching=true in your gradle.properties

  2. Android项目中开启Gradle的build scan(构建审视) - 简书

    A fine-grained performance profile is available: use the --scan option.

    1. buildscript {
    2. dependencies {
    3. #下面这句是添加的
    4. classpath 'com.gradle:build-scan-plugin:1.8'
    5. }
    6. }
    7. #下面5行是添加的
    8. apply plugin: 'com.gradle.build-scan'
    9. buildScan {
    10. licenseAgreementUrl = 'https://gradle.com/terms-of-service'
    11. licenseAgree = 'yes'
    12. }
  3. 使用构建缓存加快干净构建的速度 | Android Developers

    使用 Android 插件 2.3.0 及更高版本的项目在默认情况下会启用构建缓存(除非您明确停用构建缓存)。

  4. 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.
  5. 一些关于加速Gradle构建的个人经验 - 为程序员服务

    org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    gradlew clean --info 会得到类似这样的信息,信息标明了开启Parallel以及每个task使用的线程信息

  6. How to decrease your Gradle build time by 65%? - Keval Patel - Medium

    org.gradle.jvmargs=-Xmx3072m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

    gradlew android:assembleDebug --profile --configure-on-demand --daemon

  7. 如何加快Gradle编译项目的速度? - 简书

    1. org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    2. org.gradle.daemon=true
    3. org.gradle.parallel=true
    4. android.enableBuildCache=true
    5. 另外在Settings-Build,Execution,Deployment-Commond-line Options中设置"--parallel-threads={cpu线程数量}"也有一定作用
  8. 【译】我每周在构建Gradle时是如何节约出5小时的 - 简书

    1. # Default value: -Xmx10248m -XX:MaxPermSize=256m
    2. org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

转载于:https://www.cnblogs.com/AsionTang/p/11140903.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/244341
推荐阅读
相关标签
  

闽ICP备14008679号