iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android加快你的编译速度
  • 616
分享到

Android加快你的编译速度

androidgradleandroidstudio 2023-09-21 16:09:32 616人浏览 薄情痞子
摘要

工欲善其事,必先利其器。如果每次运行项目都要花费5-10分钟,那人的心态都要崩了。 Gradle构建流程 Gradle 的生命周期可以分为大的三个部分:初始化阶段(Initialization Pha

工欲善其事,必先利其器。如果每次运行项目都要花费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 cacheorg.gradle.unsafe.configuration-cache=trueorg.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的图标,再次点击取消离线模式:

在这里插入图片描述更改AS内存大小
点击AS的Help菜单项,选中Change Memory Settings选项。
在这里插入图片描述KAPT 迁移到 KSP
注解处理器是Android开发中一种常用的技术,很多常用的框架比如ButterKnife,ARouter,Glide中都使用到了注解处理器相关技术。

但是如果项目比较大的话,会很容易发现KAPT是拖慢编译速度的常见原因,这也是谷歌推出KSP取代KAPT的原因。
在这里插入图片描述关闭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)

关闭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://blog.csdn.net/qq_24252589/article/details/131343373

--结束END--

本文标题: Android加快你的编译速度

本文链接: https://www.lsjlt.com/news/414274.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android加快你的编译速度
    工欲善其事,必先利其器。如果每次运行项目都要花费5-10分钟,那人的心态都要崩了。 Gradle构建流程 Gradle 的生命周期可以分为大的三个部分:初始化阶段(Initialization Pha...
    99+
    2023-09-21
    android gradle android studio
  • Android studio配置大内存,编译速度更快!
    本文使用的是windows 10系统,Android studio 版本是Android Studio Chipmunk | 2021.2.1(松鼠) 目录 为什么要配置大内存?默认内存是多少?如何扩大内存配置?这个配置保存在哪个文...
    99+
    2023-08-17
    android studio android ide
  • go语言编译速度快不快
    小编给大家分享一下go语言编译速度快不快,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!go语言编译速度快,原因:1、使用了import的引用管理方式;2、没有模板...
    99+
    2023-06-15
  • 使用cache加快编译速度的命令详解
    目录Ubuntu 安装ccache使用libzmq测试ccacheUbuntu 安装ccache sudo apt-get install ccache安装完后确认安装执行which...
    99+
    2024-04-02
  • Android系统优化Ninja加快编译
    目录背景环境关键编译阶段和耗时分析阶段一:Soong bootstrap阶段二:Kati遍历、mk搜集与ninja生成阶段三:Ninja编译编译优化对比汇总背景 Android系统模...
    99+
    2022-11-13
    Android Ninja加快编译 Android Ninja编译优化
  • 使用Composing builds提升Android编译速度
    目录前言Composing builds 和 buildSrc 对比什么是 buildSrc什么是 Composing buildsbuildSrc vs Composing bui...
    99+
    2024-04-02
  • 你的IDE速度够快吗?Go和Apache缓存可以帮你加速!
    作为一名程序员,我们每天都需要使用IDE进行开发,而IDE的速度对于我们的开发效率有着至关重要的影响。如果你的IDE速度不够快,那么你的工作效率就会受到很大的影响。本文将介绍如何使用Go和Apache缓存来加速你的IDE。 一、Go缓存 ...
    99+
    2023-11-12
    apache 缓存 ide
  • 用Android Studio3.0新功能加快构建速度
    Android Studio3.0很多新的功能,他们可以直接加快Android Studio的构建速度从而加快开发效率,构建速度直接影响到开发效率,浪费时间即浪费生命,可以通过修改一些配置,优化下构建速度。Android Studio3.0...
    99+
    2023-05-30
    android studio3.0 新功能
  • 4 个快速的 Python 编译器 f
    简评:Python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译型语言那么快。 这是因为官方实现的 CPyth...
    99+
    2023-01-31
    编译器 快速 Python
  • 可加速你的编码速度Python脚本是怎么样的
    这篇文章将为大家详细讲解有关可加速你的编码速度Python脚本是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们向您介绍一些提示和技巧,以帮助您更快地编写代码Python的可读性和...
    99+
    2023-06-16
  • pip国内源:加速你的Python包下载速度来畅快体验
    详解pip国内源的作用及配置步骤,让你享受高速下载体验 引言:随着Python的广泛应用,pip成为了Python包管理工具中的重要组成部分。但是,由于pip默认使用的是国外源,导致在国内下载Python包时速度很慢甚至无法正常...
    99+
    2024-01-17
    配置步骤 pip源 高速下载
  • 怎么加快HTML页面的加载速度
    今天小编给大家分享一下怎么加快HTML页面的加载速度的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2024-04-02
  • 快速解决Android编译报错 : Manifest merger failed with multiple errors, see logs
    快速解决Android编译报错 : Manifest merger failed with multiple errors, see logs 编译项目的时候,遇到Android Manifest合并...
    99+
    2023-09-11
    java 编辑器 android studio 安卓开发
  • 怎么加快Node.js的安装速度
    这篇文章主要介绍了怎么加快Node.js的安装速度的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么加快Node.js的安装速度文章都会有所收获,下面我们一起来看看吧。更改npm源npm是Node.js的软件包...
    99+
    2023-07-05
  • 加快pip下载速度的方法
    如何解决pip下载速度慢的问题 引言:在使用Python进行开发时,我们经常会使用到pip工具来安装各种第三方模块。然而,有时候我们会遇到pip下载速度慢的问题,这会给我们的开发工作带来一些困扰。本文将介绍一些解决pip下载速度...
    99+
    2024-02-02
    pip 加速器 cdn 提速 更换源址 镜像源 pip源 pip安装
  • 快速上手Go语言:最全清单助你加速编程
    快速掌握 go 语言:入门: 安装 go 语言、创建工作区、使用支持的编辑器。语法基础: 数据类型、变量、常量、控制流、函数。并发性: goroutine、通道。实战案例: 创建 web...
    99+
    2024-04-08
    编程 go语言
  • 加快Wind7系统的启动速度、运行速度的方法
    如何才能加快Windows7速度谁都希望自己的电脑速度变快,不论是开机速度还是软件的运行速度,在硬件不成为瓶颈之后,我们的确可以通过软件的手段来给系统提速。近来网上盛传关闭系统服务能加快Windows 7系统的启动速度、...
    99+
    2023-06-02
    Win7速度 启动速度 运行速度 启动 运行 速度 Wind7 系统
  • 怎么加快win7开机速度
       每天上班第一件事就是打开电脑,然后就两只眼睛盯着屏幕看,耐心的等待着电脑的开启,久而久之发现电脑启动越来越慢,就开始抱怨怎么会这么慢。其实无论是笔记本还是台式电脑,用的时间长了,都会发现开机速度会变慢,这...
    99+
    2023-06-03
    win7开机速度 速度 win7 开机
  • 加快Vista启动/关机速度
    长期以来,Windows 系统缓慢的关机速度一直为人诟病,用户往往需要等待很长时间才能把系统关闭,这一问题在Windows Vista中也没有得到很好的解决,——也许微软将Windows Vist...
    99+
    2023-05-23
    速度 关机 Vista
  • 云服务器如何加速网速速度快
    云服务器是一种提供服务器托管、管理和资源共享的服务,可以通过使用云服务器来加速网速。具体来说,加速云服务器需要考虑以下几个方面: 选择合适的云服务器:选择适合自己的云服务器品牌和产品,比如亚马逊的AWS和阿里云的天蝎云等,以及选择适合自...
    99+
    2023-10-26
    速度快 网速 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作