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
1
$sudovim/Applications/Android\Studio.app/Contents/bin/studio.vmoptions
原始内容如下:
我们需要修改如下参数:
-Xms256m # 最低分配内存
-Xmx1280m # 最高分配内存
-XX:ReservedCodeCacheSize=240m # 代码缓存保留空间
-XX:+UseConcMarkSweepGC # GC
1
2
3
4
5
6
7
-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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# -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
1
$sudovim/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
}
1
2
3
4
5
6
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
1
2
3
4
5
6
#下面注释掉的两项在实际编译的时候,不一定能正常,因此我们暂时不启用
#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 中更据此做出了许多优化,因此我们可以这样来启用:
gradle.properties
Vim
# Set this in gradle.properties
org.gradle.caching=true
1
2
#Setthisingradle.properties
org.gradle.caching=true
7. 尽可能使用最新版本的 Android Gradle Plugin
Android 的 tool team 一直都在不断改进 Android Gradle Plugin,提高构建速度。所以第一条是最简单的,始终使用最新版本的 Android Gradle Plugin。
build.gradle
Vim
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
}
}
1
2
3
4
5
6
7
8
9
10
11
12
buildscript{
repositories{
jcenter()
google()
}
dependencies{
classpath'com.android.tools.build:gradle:3.6.3'
//NOTE:Donotplaceyourapplicationdependencieshere;theybelong
//intheindividualmodulebuild.gradlefiles
}
}
参考链接