自上次更新(从 6 月 25 日开始构建)以来,Android Studio Gradle 中的任何更改都非常缓慢。当您编辑文件并在 keyup 上重新编译时,它似乎也会自动跟踪更改。
在我的 i5 上,每次更改都需要几分钟时间。
知道如何加快 Gradle 更改速度吗?
自上次更新(从 6 月 25 日开始构建)以来,Android Studio Gradle 中的任何更改都非常缓慢。当您编辑文件并在 keyup 上重新编译时,它似乎也会自动跟踪更改。
在我的 i5 上,每次更改都需要几分钟时间。
知道如何加快 Gradle 更改速度吗?
绝对有所作为:如何……加快 Gradle 构建时间
gradle.properties
只需在以下目录中创建一个名为的文件:
/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)
将此行添加到文件中:
org.gradle.daemon=true
更改此设置后,我的编译时间 10 分钟减少到 10 秒。
第1步:
设置(ctrl+Alt+S)->
构建、执行、部署 ->
编译器->
--offline
在命令行选项框中键入“ ”。
第2步:
选中“并行编译独立模块”复选框。
& 单击应用 -> 确定
第 3 步:在您的 gradle.properties 文件中 -> 添加以下行
org.gradle.jvmargs=-Xmx2048M -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.daemon=true
更新:
如果您使用的是 Android Studio 2.0 或更高版本,请尝试 Instant Run
设置→构建、执行、部署→即时运行→启用即时运行。
有关即时运行的更多信息 - https://developer.android.com/studio/run/index.html#instant-run
通过将以下内容添加到 android studio 中的 gradle.properties 文件中,我能够将旧 core2duo 笔记本电脑(运行 linux mint)上的 gradle 构建时间从 43 秒减少到 25 秒
org.gradle.parallel=true
org.gradle.daemon=true
关于守护程序设置为何使构建速度更快的来源: https ://www.timroes.de/2013/09/12/speed-up-gradle/
有更新版本的 gradle (ver 2.4)。
您可以通过从文件菜单中打开“项目结构”对话框来为您的项目设置此项,
Project Structure -> Project -> Gradle version
并将其设置为“2.4”。您可以在此链接
中阅读有关提高性能的更多信息。
使用 Android Studio 2.1,您可以启用“Dex In Process”以更快地构建应用程序。
您可以在这里获得更多信息:https ://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.vijksflyn
这就是我所做的,我的 gradle 构建速度显着提高!第一次构建从 1 分钟到 20 秒,后续构建从 40 秒变为 5 秒。
在gradle.properties文件中添加:
org.gradle.jvmargs=-Xmx8192M -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
在命令行参数中通过转到文件>其他设置>默认设置>构建、执行、部署>编译器并将以下参数添加到命令行参数
添加这个:
--debug --stacktrace -a, --no-rebuild -q, --quiet --offline
在进行 Android 开发时,尽量避免使用只有 8 GB RAM 的 Mac/PC。只要你启动了 1 个模拟器(Genymotion 或其他),你的构建时间在带有 gradle 构建的 Android Studio 中变得非常缓慢。即使您对 1 个源文件进行简单的单行更改,也会发生这种情况。
关闭模拟器并使用真实设备有很大帮助,但当然这是非常有限且不太灵活的。减少模拟器的 RAM 使用设置会有所帮助,但最好的方法是确保您的笔记本电脑至少有 12-16 GB 的 RAM。
更新(2017 年 6 月):现在有几篇很好的 medium.com 文章详细解释了如何加速 Android Studio gradle 构建,它甚至可以在 8 GB 机器上运行:
总结的共识是:
创建一个gradle.properties文件(全局~/.gradle/gradle.properties
或本地到项目),并添加以下行:
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
启用离线工作
通过添加以下代码来提高 Gradle 性能gradle.properties
org.gradle.daemon=true
org.gradle.parallel=true
分步指南: http: //www.viralandroid.com/2015/08/how-to-make-android-studio-fast.html
根据Android Team of Wikimedia Apps的这个页面,优化 Gradle 构建的一个好方法是将此行添加到您的~/.gradle/gradle.properties
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048M
对于那些没有文件的人,有两种方法可以做到:
通过在项目根目录中创建一个名为 gradle.properties 的文件,将文件本地添加到项目中,或者,
您可以通过在主目录中创建相同的文件来为所有项目全局设置它们(Windows上为 %UserProfile%.gradle , Linux和Mac OS X上为 ~/.gradle )
最好在主目录中设置属性,而不是在项目级别。
您还可以使用命令行来获得更好的性能<task name>
。您可以在 linux 的项目根文件夹中使用命令 ./gradlew 或使用 gradlew.bat 文件,如 gradlew <task name>
。当您第一次为给定 Gradle 运行上述命令之一时版本,它将下载相应的 Gradle 发行版并使用它来执行构建。
通过其包装器导入 Gradle 项目时,您的 IDE 可能会要求使用 Gradle 'all' 发行版。这非常好,有助于 IDE 为构建文件提供代码完成。这不仅意味着您不必自己手动安装 Gradle,而且您还可以确保使用构建所针对的 Gradle 版本。这使您的历史构建更加可靠。有关更多信息,请参阅使用 Wrapper 执行构建
要加快构建速度,请将 Gradle 守护程序的最大堆大小增加到 2048 MB 以上。
为此org.gradle.jvmargs=-Xmx2048M
在项目gradle.properties中设置。
将此添加到您的gradle.properties
文件中
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048M
添加一个build.gradle
文件:
android {
...
dexOptions {
javaMaxHeapSize "4g" //specify the heap size for the dex process
}
...
}
我希望它有所帮助。
我正在运行带有 Windows 10 和 1TB 固态硬盘的第 5 代 i7。我压缩了 Android Studio Projects 文件夹并获得了大约 80% 的提升。希望这可以帮助。
然后我将它与上述解决方案结合起来,即(org.gradle.parallel=true,org.gradle.daemon=true)。性能提升令人印象深刻。
此外:
以上所有答案都是完全正确的,但作为一名经验丰富的 Android 开发人员(4 年半),我必须声明:任何 Android/Gradle 开发人员都不应该在带有微调驱动器的机器上工作,你需要花钱购买固体状态。我们每天都在 IDE 中按下播放按钮 100 次。当我从微调器转到 SSD 时(Gradle 后),我的速度和效率实际上快了 2 到 4 倍,我向你保证我不会在这里夸大其词。
现在我说的不是一台带有小 SSD 和大旋转器的机器,我说的是 1 个大 SSD。如果您已经拥有一台带有小型 SSD 和大型微调器的机器,您可以将小型微调器升级为 500GB SSD,并将 SSD 设置为您的主要操作系统驱动器,并在其上安装开发人员工具。
因此,如果您在快节奏的环境中工作,请将这篇文章展示给您的老板。一个体面的 1TB SSD 将花费您大约 300 英镑(包括增值税),或 500GB SSD 大约 160 英镑。根据您是初级还是高级 Android 开发人员,该驱动器将在 1 到 2 个工作日内自行支付(工资支出),如果您投资较小的驱动器,则大约需要 2 个半到 5 个工作日;说500GB SSD。
许多开发人员可能会争辩说不是这样,但 Gradle 就是这样,因为 Gradle 系统对直接磁盘访问非常困难。如果您使用 .NET/C#/VB Net 或其他开发工具,您不会注意到太多差异,但 Gradle 中的差异是巨大的。如果你对这篇文章采取行动,我向你保证,你不会失望的。就我个人而言,我使用的是带有 8GB RAM 的第五代 i7,它最初带有 1TB Spinner,我将它升级到三星 SSD 840 EVO 1TB,从那以后我再也没有回头。我从以下网站购买了我的:https ://www.aria.co.uk 。
希望这可以帮助。另外我必须声明,这不是一个商业动机的帖子,我只是推荐 Aria,因为我以前用过很多次,而且它们一直很可靠。
我们可以将一些命令添加到 gradle.properties 文件中:
org.gradle.configureondemand=true - 这个命令将告诉 gradle 只构建它真正需要构建的项目。使用守护进程 - org.gradle.daemon=true - 守护进程保持 gradle 实例启动并在后台运行,即使在构建完成后也是如此。这将消除初始化 gradle 所需的时间并显着减少构建时间。
org.gradle.parallel=true - 允许 gradle 并行构建您的项目。如果您的项目中有多个模块,则通过启用此功能,gradle 可以并行运行独立模块的构建操作。
增加堆大小 — org.gradle.jvmargs=-Xmx3072m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - 从 android studio 2.0 开始,gradle 在过程中使用 dex 来减少项目。通常,在构建应用程序时,多个 dx 进程会在不同的 VM 实例上运行。但从 Android Studio 2.0 开始,所有这些 dx 进程都在单个 VM 中运行,并且该 VM 也与 gradle 共享。这显着减少了构建时间,因为所有 dex 进程都在相同的 VM 实例上运行。但这需要更大的内存来容纳所有的dex进程和gradle。这意味着您需要增加 gradle 守护程序所需的堆大小。默认情况下,守护进程的堆大小约为 1GB。
确保不使用动态依赖。即不要使用实现'com.android.support:appcompat-v7:27.0.+'。此命令意味着 gradle 将在每次构建应用程序时上线并检查最新版本。而是使用固定版本,即“com.android.support:appcompat-v7:27.0.2”
从 android 文件夹打开gradle.properties
并取消注释突出显示的行并根据您的机器配置提供内存值。我的机器上有 8gb 内存,所以我分别给了最大 4096mb 和 1024mb。
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
//Uncomment below line for providing your system specific configuration
#org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError - Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
#http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
//Uncomment below line to allow parallel process execution.
#org.gradle.parallel=true
此后,我的构建时间减少了一半。建设愉快!!
当您在项目中启用 multidex 时,通常会发生这种情况。这可能会减慢您的开发过程! 根据文档:
multidex 配置需要显着增加构建处理时间,因为构建系统必须对哪些类必须包含在主 DEX 文件中以及哪些类可以包含在辅助 DEX 文件中做出复杂的决定。这意味着使用 multidex 的增量构建通常需要更长的时间,并且可能会减慢您的开发过程。
但你可以优化这个:
为了减少更长的增量构建时间,您应该使用 pre-dexing 在构建之间重用 multidex 输出。
如果您使用的是 Android Studio 2.3 及更高版本,则 IDE 在将您的应用部署到运行 Android 5.0(API 级别 21)或更高版本的设备时会自动使用此功能。
所以你需要将minSdkVersion 设置为 21 或更高!
但是如果你的生产版本需要支持低于 21 的 minSdkVersion,例如 19
您可以使用productFlavors 为您的开发版本设置 minSdkVersion 21:
android {
defaultConfig {
...
multiDexEnabled true
// The default minimum API level you want to support.
minSdkVersion 15
}
productFlavors {
// Includes settings you want to keep only while developing your app.
dev{
//the IDE automatically uses pre-dexing feature to mitigate longer incremental when deploying your app to a device running Android 5.0 !
minSdkVersion 21
}
prod {
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:multidex:1.0.3'
}
我更喜欢从命令行构建以获得更好的构建时间。如果您的应用程序代码库很大并且您有多个模块,那么您可以尝试这里描述的本地 AAR 方法,它将大大提高 Android Studio 性能和 gradle 构建时间。它也与命令行构建兼容
可以在此处找到带有集成说明的演示项目: https ://github.com/akhgupta/AndroidLocalMavenRepoAARDemo
右键单击 Drawable 文件夹并将 png/jpg 图像转换为 webp 格式,它显着改进了 gradle
来自 android 开发者文档:
配置 JVM 垃圾收集器。它将构建时间减少到 2 到 4 秒
gradle.properties 文件
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC