Android加快你的编译速度

这篇具有很好参考价值的文章主要介绍了Android加快你的编译速度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工欲善其事,必先利其器。如果每次运行项目都要花费5-10分钟,那人的心态都要崩了。
Gradle构建流程

Gradle 的生命周期可以分为大的三个部分:初始化阶段(Initialization Phase),配置阶段(Configuration Phase),执行阶段(Execution Phase)。

优化方案

从整体构建流程可以得知,我们整体上需要从三个方面进行优化:

初始化速度优化
配置速度优化
执行速度优化
其中执行的过程占比是最大的,所以重心放在执行速度优化上。

1.初始化速度优化

当组件化程度较高时,在开发某个特定功能过程中有些组件是不需要引入的,此时可以在setting.gradle中移除不需要引入的组件模块,可以减少初始化时间

2.配置速度优化

配置阶段主要是对各个build.gradle进行解析,因此可以注意以下几点:

按需引入模块,减少build.gradle的解析
build.gradle中尽量少做耗时操作,例如读取系统时间动态配置apk的名称组成
在开发阶段不是必要执行的任务,可以写判断避免这些任务的配置,例如一些字节码插桩,性能监控之类的。

开启Configuration Cache

在任务执行阶段,Gradle提供了多种方式实现Task的缓存与重用(如up-to-date检测,增量编译,build-cache等)。

除了任务执行阶段,任务配置阶段有时也比较耗时,目前AGP也支持了配置阶段缓存Configuration Cache,它可以缓存配置阶段的结果,当脚本没有发生改变时可以重用之前的结果。

在越大的项目中配置阶段缓存的收益越大,module比较多的项目可能每次执行都要先配置20到30秒,尤其是增量编译时,配置的耗时可能都跟执行的耗时差不多了,而这正是configuration-cache的用武之地。

目前Configuration-cache还是实验特性,如果你想要开启的话可以在gradle.properties中添加以下代码:

# configuration cache
org.gradle.unsafe.configuration-cache=true
org.gradle.unsafe.configuration-cache-problems=warn

3.执行速度优化

开启并行编译

开启后会并行执行多个任务,大幅度减少编译时间,只需要在gradle.properties中添加:

org.gradle.parallel=true

增大编译内存

由于大家的电脑配置都不一样,因此具体设置多大内存需要根据个人情况进行合理配置,一般在gradle.properties里已经有相关配置,可以对该配置进行修改,例如

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

同时在主工程模块的build.gradle中进行修改:

    dexOptions {
        javaMaxHeapSize "4g"
    }

开启按需构建
对没有更改的模块不再进行编译,非常适合已经组件化的项目,在gradle.properties中添加:

org.gradle.configureondemand=true

开启构建缓存
直接使用之前生成的缓存,不再进行构建,在构建时任务后面会显示FROM CACHE,在gradle.properties中添加:

org.gradle.caching=true

开启增量注解编译
支持注解增量编译,不会重新触发编译(gradle高版本中需要移除),在gradle.properties中添加:

android.enableSeparateAnnotationProcessing=true

4.其他速度优化
对AS进行配置
开启离线模式
开启离线模式后不会再开始的时候去检测依赖是否有更新,也不会去下载相关更新的依赖,首次构建不能开启,否则无法完成构建,后续构建可以开启,在某些情况下将大幅度改善编译速度,强烈推荐开发阶段使用。点击下图中的图标的按钮即可开启离线模式,有些版本显示为类似wifi的图标,再次点击取消离线模式:

android 提高编译速度,Android,android,gradle,android studio更改AS内存大小
点击AS的Help菜单项,选中Change Memory Settings选项。
android 提高编译速度,Android,android,gradle,android studioKAPT 迁移到 KSP
注解处理器是Android开发中一种常用的技术,很多常用的框架比如ButterKnife,ARouter,Glide中都使用到了注解处理器相关技术。

但是如果项目比较大的话,会很容易发现KAPT是拖慢编译速度的常见原因,这也是谷歌推出KSP取代KAPT的原因。
android 提高编译速度,Android,android,gradle,android studio关闭R文件传递
在 apk 打包的过程中,module 中的 R 文件采用对依赖库的R进行累计叠加的方式生成。如果我们的 app 架构如下:

编译打包时每个模块生成的R文件如下:

1. R_lib1 = R_lib1;
2. R_lib2 = R_lib2;
3. R_lib3 = R_lib3;
4. R_biz1 = R_lib1 + R_lib2 + R_lib3 + R_biz1(biz1本身的R)
5. R_biz2 = R_lib2 + R_lib3 + R_biz2(biz2本身的R)
6. R_app = R_lib1 + R_lib2 + R_lib3 + R_biz1 + R_biz2 + R_app(app本身R)

1.关闭R文件传递可以通过编译避免的方式获得更快的编译速度
2.关闭R文件传递有助于确保每个模块的R类仅包含对其自身资源的引用,避免无意中引用其他模块资源,明确模块边界。
3.关闭R文件传递也可以减少很大一部分包体积与dex数量

从 Android Studio Bumblebee 开始,新项目的非传递 R 类默认处于开启状态。即gradle.properties文件中都开启了如下标记

android.nonTransitiveRClass=true

开启Kotlin跨模块增量编译
使用组件化多模块开发的同学都有经验,当我们修改底层模块(比如util模块)时,所有依赖于这个模块的上层模块都需要重新编译,Kotlin的增量编译在这种情况往往是不生效的,这种时候的编译往往非常耗时。

在Kotlin 1.7.0中,Kotlin编译器对于跨模块增量编译也做了支持,并且与Gradle构建缓存兼容,对编译避免的支持也得到了改进。这些改进减少了模块和文件重新编译的次数,让整体编译更加迅速。

在 gradle.properties 文件中设置以下选项即可使用新方式进行增量编译:

kotlin.incremental.useClasspathSnapshot=true // 开启跨模块增量编译
kotlin.build.report.output=file // 可选,启用构建报告

Module源码转aar
随着业务量的增大,module的引入也会增多,每个module在编译的时候都需要花费一定的时间。把module转化成aar后就不再需要每次都进行编译或者取缓存,可以减少一部分时间。文章来源地址https://www.toymoban.com/news/detail-607185.html

到了这里,关于Android加快你的编译速度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【错误记录】Android Studio 编译报错 ( Could not resolve com.android.tools.build:gradle:7.4.2. )

    在 Mac 中安装了 Android Studio , 首次创建应用运行时 , 报如下错误 : 报错信息中有提示 : Doesn’t say anything about its target Java version (required compatibility with Java 8) A problem occurred configuring root project ‘DataBinding’. Could not resolve all files for configuration ‘:classpath’. Could not resolve com.android.

    2024年02月08日
    浏览(62)
  • 【错误记录】Android 编译报错 ( The project uses Gradle version which is incompatible with Android Studio )

    报错信息 : 使用的 ijkplayer 版本是 0.8.8 版本的 , 这是 2018 年的版本 , 生成的 Android Studio 工程源码 也是 在 2018 年运行的 , 当时使用 的 Android Studio 版本 , Gradle 构建工具版本 , Android Gradle 插件版本 , 与当前差异很大 ; 上述 构建工具 , AS 开发环境 , AGP 插件 , 版本对应关系可以参

    2024年02月08日
    浏览(42)
  • 【错误记录】Android Studio 编译报错 ( Android Gradle plugin requires Java 11 to run. You are currently using )

    使用 最新版本的 Android Studio 创建应用 , 并执行 , 报如下错误 : 当前使用的 JDK 版本是 1.8 , 将 JDK 升级为 11 版本 ; 先在指定目录 , 安装 JDK 工具 ; 选择 \\\" 菜单栏 | File | Settings \\\" 选项 , 在 \\\" Build, Execution , Deployment | Build Tools | Gradle \\\" 选项中 , 设置 刚才 安装的 JDK 即可 ; 编译通过

    2024年02月10日
    浏览(49)
  • Android-Studio编译不过提示caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed t错

    根据搜索在Gradle Scripts的gradle.properties中添加以下语句  android.overridePathCheck=true 但是问题没有得到解决,搜索了很多方法不行,最后想到是不是Android-studio版本太高问题,我用的是2023.2.3版本 ,根据下载代码的时间降到2021.2.1版本问题最终解决。  不断尝试,就会有不一样的收

    2024年02月04日
    浏览(49)
  • Android Gradle Plugin、Gradle、Android Studio版本关系

    参考链接 插件版本 所需的最低 Gradle 版本 8.3 8.4 8.2 8.2 8.1 8.0 8.0 8.0 7.4 7.5 7.3 7.4 7.2 7.3.3 7.1 7.2 7.0 7.0 4.2.0+ 6.7.1 4.1.0+ 6.5+ 4.0.0+ 6.1.1+ 3.6.0 - 3.6.4 5.6.4+ 3.5.0 - 3.5.4 5.4.1+ 3.4.0 - 3.4.3 5.1.1+ 3.3.0 - 3.3.3 4.10.1+ 3.2.0 - 3.2.1 4.6+ 3.1.0+ 4.4+ 3.0.0+ 4.1+ 2.3.0+ 3.3+ 2.1.3 - 2.2.3 2.14.1 - 3.5 2.0.0 - 2.1.2 2.10 - 2.1

    2024年02月20日
    浏览(56)
  • 【Android Gradle 插件】Gradle 构建机制 ⑤ ( 在 Android Studio 中查看 Android Gradle 插件源码 )

    选择 \\\" 菜单栏 / File / New / New Project… \\\" 选项 , 将根目录下的 build.gradle 构建脚本中的  dependencies  依赖中的   然后进入 app 模块目录 , 删掉除 build.gradle 脚本之外的其它代码 ; 打开 app 模块下的 build.gradle 构建脚本 , 删掉所有代码 , 进行如下配置 :      

    2024年01月19日
    浏览(48)
  • 为什么删除Windows 11上的Bloatware可以帮助加快你的电脑速度

    如果你感觉你的电脑迟钝,彻底清除软件会有所帮助,而且这个过程对Windows用户来说越来越容易。 微软正在使删除以前难以删除的其他预装Windows应用程序成为可能。专家表示,这项新功能可能会改变用户的游戏规则。 科技公司Infatica的主管Vladimir Fomenko在接受Lifewire电子邮件

    2024年02月10日
    浏览(58)
  • 【Android Studio】Android Studio导入项目一直显示正在下载Gradle项目

    如题,问题图类似如下: (此图是解决以后截的,之前遇到问题没截图) 先找到你正在下载的gradle的版本是哪个 然后在链接中 ​​​​​​Gradle Distributions 找到你所对于gradle的版本,下载 对应后缀为bin的文件 例如我的版本是8.0,下载的就是这个文件 然后在电脑找到对应位

    2024年01月18日
    浏览(54)
  • Android Studio 和 Android Gradle 插件的已知问题

    渲染 Compose 预览时出错 从 Android Studio Chipmunk 开始,如果您在问题面板中看到  java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner  或  java.lang.ClassNotFoundException: androidx.savedstate.R$id ,请务必在模块中添加对  androidx.lifecycle:lifecycle-viewmodel-savedstate  的  debugImplementation  依赖项。

    2024年02月12日
    浏览(50)
  • Android Studio下载gradle失败

    1、打开Android Studio设置Gradle的地方,点击左上角的File-Settings查看gradle存放路径 C:UsersAdministrator.gradlewrapperdistsgradle-5.4.1-all3221gyojl5jsh0helicew7rwx 2、找到正在下载的gradle版本,Android Studio取消下载gradle,然后删掉后缀.part文件以及.lck文件 3、将下载好的gradle文件放在.part相同目

    2024年01月22日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包