自上次更新(6月25日开始构建)以来,Android Studio Gradle中的所有更改都非常缓慢。当您编辑文件并在keyup上重新编译时,它似乎还可以自动跟踪更改。
每次更改都会在我的i5上花费几分钟。
知道如何加快我的Gradle更改吗?
自上次更新(6月25日开始构建)以来,Android Studio Gradle中的所有更改都非常缓慢。当您编辑文件并在keyup上重新编译时,它似乎还可以自动跟踪更改。
每次更改都会在我的i5上花费几分钟。
知道如何加快我的Gradle更改吗?
Answers:
只需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/
遵循以下步骤将使其速度提高10倍,并将构建时间减少90%
首先在以下目录中创建一个名为gradle.properties的文件:
/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)
将此行添加到文件中:
org.gradle.daemon=true
org.gradle.parallel=true
并在Android Studio中选中此选项
有一个较新版本的gradle(版本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
启用离线工作
通过在中添加以下代码来提高Gradle性能 gradle.properties
org.gradle.daemon = true
org.gradle.parallel = true
逐步指南:http : //www.viralandroid.com/2015/08/how-to-make-android-studio-fast.html
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
根据Wikimedia Apps Android小组的此页面,优化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“全部”发行版。这非常好,可以帮助IDE为构建文件提供代码完成。这不仅意味着您不必自己手动安装Gradle,而且还可以确保使用该构建版本专用的Gradle版本。这使您的历史建筑更加可靠。有关更多信息,请参阅使用包装程序执行构建
为了加快构建速度,请将Gradle守护程序的最大堆大小增加到2048 MB以上。
为此,请org.gradle.jvmargs=-Xmx2048M
在项目gradle.properties中进行设置。
我正在运行带有Windows 10和1TB固态硬盘的第五代i7。我压缩了Android Studio Projects文件夹,并获得了80%的提升。希望这可以帮助。
然后,我将其与以上解决方案(即(org.gradle.parallel = true,org.gradle.daemon = true))结合在一起。性能提升非常出色。
另外:
以上所有答案都是完全正确的,但作为一名经验丰富的Android开发人员(四年半),我必须声明:没有Android / Gradle开发人员应在带有旋转驱动器的计算机上工作,您需要付出代价固体状态。我们每天都在IDE中按一下播放按钮100次。当我从微调器转到SSD(在Gradle之后)时,我的速度和效率实际上提高了2到4倍,我向您保证,我不会在这里夸大其词。
现在,我不是在谈论一台带有小型SSD和大旋转器的机器,而是在谈论1个大型SSD。如果您已经有一台带有小型SSD和大型微调器的计算机,则可以将小型微调器升级为500GB SSD,然后将SSD设置为安装了开发人员工具的主OS驱动器。
因此,如果您在快速节奏的环境中工作,请将此帖子展示给老板。像样的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,并将其升级到Samsung 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的ram,所以我分别给了最大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进行增量构建通常会花费更长的时间,并有可能减慢您的开发过程。
但您可以对此进行优化:
为了减少更长的增量构建时间,您应该使用预排序在多个构建之间重用multidex输出。
如果您使用的是Android Studio 2.3及更高版本,则在将应用程序部署到运行Android 5.0(API级别21)或更高版本的设备时,IDE会自动使用此功能。
因此,您需要将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'
}
我确实更喜欢从命令行进行构建,以缩短构建时间。如果您的应用程序代码量很大并且有多个模块,则可以尝试按此处所述使用Local AAR方法,它将大大提高Android Studio性能和gradle构建时间。它也与命令行版本兼容
带有集成说明的演示项目可以在这里找到: https : //github.com/akhgupta/AndroidLocalMavenRepoAARDemo