加快Android Studio 3.6.3的编译速度

1. 加大给Android Studio 3.6.3分配的内存

打开`Android Studio`的安装目录,找到虚拟机的配置文件,进行修改,如下:

Windows
编辑安装目录下的`bin\studio64.exe.vmoptions`

macOS Catalina(10.15.4)

$ sudo vim /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions

原始内容如下:

我们需要修改如下参数:

-Xms256m  # 最低分配内存

-Xmx1280m # 最高分配内存

-XX:ReservedCodeCacheSize=240m # 代码缓存保留空间

-XX:+UseConcMarkSweepGC # GC

建议修改成的参数

# -server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升.原因是: 
# 当虚拟机运行在-client模式的时候,使用的是一个代号为C1的轻量级编译器, 
# 而-server模式启动的虚拟机采用相对重量级,代号为C2的编译器. 
# C2比C1编译器编译的相对彻底,服务起来之后,性能更高.

-server # 服务器模式

-Xms2048m  # 最低分配内存

-Xmx4096m # 最高分配内存

-XX:ReservedCodeCacheSize=1024m # 代码缓存保留空间

# UseConcMarkSweepGC
# CMS,全称Concurrent Low Pause Collector
# 主要适合场景是对响应时间的重要性需求大于对吞吐量的要求,
# 能够承受垃圾回收线程和应用线程共享处理器资源,
# 并且应用中存在比较多的长生命周期的对象的应用

# -XX:+UseParNewGC:设置年轻代为多线程收集。
# 可与CMS收集同时使用。在serial基础上实现的多线程收集器。

-XX:+UseParNewGC # GC

修改后的结果 (macOS Catalina(10.15.4)),如下图:

打开idea.properties文件,找到idea.max.intellisense.filesize,默认是2500,改为25000(数值仅供参考,具体数值根据自己文件大小来定)

macOS Catalina(10.15.4)

$ sudo vim /Applications/Android\ Studio.app/Contents/bin/idea.properties

2. Android Studio 3.6.3设置自动编译工程

打开Android Studio的设置,找到如图所示,打上勾即可。如图:

3. 打开dex增量编译

在Module的build.gradle中添加如下代码

dexOptions {
    // incremental选项已经过期,现在已经用不到了,默认已经自动启用
    // incremental true
    //预编译库文件,如果库没有改动,就不需要更新了
    preDexLibraries = true
}

4. 修改gradle设置

在Project的gradle.properties中添加:

# 下面注释掉的两项在实际编译的时候,不一定能正常,因此我们暂时不启用
# org.gradle.daemon=true 
# org.gradle.configureondemand=true

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

5. 使用本地gradle

在`Android Studio`的`Gradle`每次编译的时候,每次都会联网检查依赖库,如果网速比较慢,会比较耗时。我们可以暂时禁用`Gradle`的联网检查,如下图:

6. 启用 Gradle Caching

Gradle Caching 是 Gradle 3.5 的新特性,顾名思义能通过缓存来加速 build 过程。

在 Android Studio 3.0 中更据此做出了许多优化,因此我们可以这样来启用:

# Set this in gradle.properties
org.gradle.caching=true

7. 尽可能使用最新版本的 Android Gradle Plugin

Android 的 tool team 一直都在不断改进 Android Gradle Plugin,提高构建速度。所以第一条是最简单的,始终使用最新版本的 Android Gradle Plugin。

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

参考链接


发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注