我有一个多项目(~10个模块),每次建筑大约需要20-30秒 . 当我在Android Studio中按Run时,我必须每次都等待重建应用程序,这非常慢 .
是否可以在Android Studio中自动化构建过程?或者您对如何更快地完成此过程有任何建议?
在Eclipse中,由于自动构建,在模拟器上运行相同的项目大约需要3-5秒 .
这是我的build.gradle文件(app模块):
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':libraries:SharedLibs')
compile project(':libraries:actionbarsherlock')
compile project(':libraries:FacebookSDK')
compile project(':libraries:GooglePlayServices')
compile project(':libraries:HorizontalGridView')
compile project(':libraries:ImageViewTouch')
compile project(':libraries:SlidingMenu')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 16
}
}
27 回答
遵循这些步骤将使其快10倍并缩短构建时间90%
首先在以下目录中创建名为gradle.properties的文件:
将此行添加到文件中:
并在Android Studio中查看此选项
如果有人正在通过Subversion同步一个项目并且这种情况仍在发生,我认为这会减慢Android Studio中的工作流程 . 例如,如果它在以下情况下工作非常慢:在类,xml等中滚动,而我的应用程序仍然在我的设备上运行 .
只需在以下目录中创建名为gradle.properties的文件:
将此行添加到文件中:
对我来说,速度现在等于Eclipse .
资料来源:https://www.timroes.de/2013/09/12/speed-up-gradle/
只是另一个性能改进提示:
Android Studio 3.0 包括名为D8的新DEX编译器 .
“dex编译器主要在日常应用程序开发中工作,但它直接影响应用程序的构建时间,.dex文件大小和运行时性能 . ”
“当比较新的D8编译器和当前的DX编译器时,D8编译速度更快,输出更小的.dex文件,同时具有相同或更好的应用程序运行时性能 . ”
D8是可选的 - 使用它我们必须放入项目的gradle.properties
更多信息:https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html
PS . 它使我的构建时间缩短了大约30% .
如果从命令行使用gradle,则可以加快进程 . IDE开发人员需要做很多优化 . 但它只是一个早期版本 .
有关更多信息,请阅读this discussion以及某些开发人员 .
trivial 更改(对于resoruce xml)仍然需要 10 minutes . 正如 @rivare 在他的回答中所说的那样,命令行构建变得更快(将其归结为 15 seconds ) .
以下是一些步骤,至少可以从Windows的命令行快速进行简单的构建 .
cd c:\ android \ MaskActivity
gradlew assembleDebug
uninstall 直接从手机上的apk(拖动到卸载) .
构建完成后, kill 使用Windows任务管理器的BIG java进程 .
或者,如果您的Windows机器上有unix工具:
显示“pid”:
adb -d install C:\ Android \ MaskActivity \ app \ build \ outputs \ apk \ app-debug.apk
到处搜索,最终找到了适合我们的解决方案 . 启用并行构建(On OSX:
preferences -> compiler -> gradle -> "Compile independent modules in parallel"
)并启用'make project automatically'将其从约1分钟降低到约20秒 . 感谢/ u / Covalence .http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/
Speed Up Gradle Build In Android Studio 3.2.1
您是否觉得等待在Android Studio中完成构建几分钟?我也是 . 而且这很烦人 . 幸运的是,有几种方法可以用来改善这一点 . Android使用Gradle进行构建 . 最新版本4.6与以前的版本相比具有巨大的性能提升(有关详细信息,请参阅发行说明) .
Step 1: 更新Gradle版本更简单的方法是转到:打开模块设置(您的项目)>项目结构
UPDATE
更改为 Gradle version: 4.6 并更改为 Android Plugin Version: 3.2.1
从https://services.gradle.org/distributions/gradle-4.6-all.zip下载Gradle Release分配并将其复制到Gradle文件夹:
最后一步是在“设置”>“Gradle”中添加您的描述
不要忘记单击“应用”以保存更改 .
Step 2: 为项目启用脱机模式,Gradle守护程序和并行构建脱机模式告知Gradle忽略更新到日期检查 . Gradle每次都要求依赖,并且使用此选项使其只使用计算机上已有的依赖项 . 从android studio设置转到Gradle,然后单击“脱机工作”框 .
下一步是为项目启用Gradle守护程序和并行构建 . 并行构建将使您的项目具有多个模块(Gradle中的多项目构建)并行构建,这将使大型或模块化项目的构建更快 .
这些设置可以通过修改Gradle脚本目录中名为gradle.properties的文件(即〜/ .gradle / gradle.properties)来启用 . 其中一些选项(例如并行的Complie模块)可从Android获得Studio也默认启用,但将它们放在gradle.properties文件中将在从终端构建时启用它们,并确保您的同事将使用相同的设置 . 但是如果你在团队中工作,有时候你不能提交这些东西 .
使用守护进程将使您的构建启动更快,因为它不必每次都启动整个Gradle应用程序 . 默认情况下不启用Gradle守护程序,但建议始终为开发人员的计算机启用它(但为连续集成服务器禁用它) . 有关此模式的常见问题可在此处找到https://docs.gradle.org/current/userguide/gradle_daemon.html . 对于某些项目,并行构建设置可能不安全 . 要求是所有模块必须解耦或构建可能失败(有关详细信息,请参阅http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects) .
Step 3: 启用增量设计和调整内存设置您可以通过启用增量删除来加速构建 . 在模块的构建文件中:
将此选项添加到您的android块:
在该dexOptions块中,您还可以指定dex进程的堆大小,例如:
其中“12g”是12GB的内存 . 有关此内容的更多信息,请访问google.github.io/android-gradle-dsl/current/您还可以在设置文件中配置Gradle参数,例如:如果您有一个大型项目,请增加最大堆大小:
有关详细信息,请参阅此处的所有参数列表:https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties .
Step 4: 禁用防病毒考虑从防病毒扫描中排除项目和缓存文件 . 这显然是与安全的权衡 . 但是如果你在分支机构之间切换很多,那么防病毒软件会在允许gradle进程使用它之前重新扫描文件,这会减慢构建时间(特别是带有gradle文件和索引任务的Android Studio同步项目) . 测量构建时间并处理启用和未启用防病毒的CPU,以查看它是否相关 . 我希望这有帮助 . 如果您有任何问题或其他提示可以提高构建性能,请发表评论 .
helpful link
在我们的特定情况下,问题是由于拥有 retrolambda 插件,即使我们的核心模块中没有更改任何代码,每次我们尝试启动应用程序时都会强制重新编译所有项目和子项目 .
删除 retrolamba 为我们修复了它 . 希望它可以帮到某人 .
To run Android envirorment on low configuration machine.
关闭浏览器中的uncessesory Web选项卡
对于防病毒用户,请排除自动生成的构建文件夹
Android工作室有1.2 Gb默认堆可以减少到512 MB帮助>编辑自定义VM选项studio.vmoptions -Xmx512m布局性能将加快
对于Gradle安卓工作室Mkae的核心组件之一,现在确定3.0beta是最新的
Below tips can affect the code quality so please use with cautions:
Studio包含电源安全模式,当它打开时,它将关闭lint,代码补全等后台操作 .
您可以在需要时手动运行lintcheck ./gradlew lint
大多数人平均使用Android模拟器消耗2 GB RAM,因此如果可能,请使用实际的Android设备,这样可以减少计算机上的资源负担 . 或者,您可以减少仿真器的RAM,它将自动减少计算机上的虚拟内存消耗 . 您可以在虚拟设备配置和高级设置中找到它 .
Gradle脱机模式是带宽受限用户禁用下载构建依赖项的功能 . 它将减少后台操作,这将有助于提高Android studio的性能 .
Android studio提供了并行编译多个模块的优化 . 在低RAM机器上,此功能可能会对性能产生负面影响 . 您可以在编译器设置对话框中禁用它 .
这是开始Android程序员(多年前的专业程序员)加速Android Studio 2.2的原因 . 我知道这是一次重演,但是,只是在一个地方 .
初始构建仍然可能非常慢,但现在通常非常容忍重新启动正在运行的应用程序 . 我使用的是次优PC:AMD四核A8-7410 CPU,8MB RAM,非SSD HD,Win 10.(而且,这是我的第一个Stack Overflow发布....;)
IN SETTINGS -> GRADLE:
是“离线工作”(这可能是最重要的设置) .
IN SETTINGS -> COMPILER:
是“并行编译独立模块”(不确定这是否确实有助于利用多核CPU) .
IN GRADLE SCRIPTS ,"build.gradle (Module: app)":
ALSO IN GRADLE SCRIPTS ,"gradle.properties (Project Properties)":
org.gradle.jvmargs = -Xmx3048m -XX:MaxPermSize = 512m -XX:HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8
org.gradle.parallel = true org.gradle.daemon = true
Additionally ,在物理设备而不是模拟器上进行测试对我来说效果很好;一个站立的小平板电脑很方便 .
如果使用谷歌播放服务,根据您需要的库而不是整个blob可以使事情更快 .
如果您只需要 Map ,请使用:
代替:
后者将20k方法(see blog)带入类路径,这可能会使总方法计数超过64k .
即使对于调试版本,这也会强制使用proguard或multidex . 对于我的一个项目,我有以下构建时间
multidex build(with supportlibrary)~40sec
proguard build~20sec
当方法限制<64k~5sec时
build
如果在sdk 21上开发,可以优化multidex版本in the android documentation
先试试吧 . 这是我个人的经历 .
我有同样的问题 . 我所做的只是永久禁用防病毒(我的是Avast Security 2015) . 在禁用防病毒之后,事情进展顺利 . gradle成功完成 . 从现在开始,在几秒钟内,平板即将完成(仅需5-10秒) .
这个设置对我来说非常快(构建大约2秒)
build.gradle
gradle.properties
my PC:
CPU英特尔(R)奔腾(R)CPU G2030 @ 3.00GHz,3000 Mhz,2个处理器原理,2个处理器lógicos
x64
Microsoft Windows 7 Professional
(RAM)16,0 GB
project files
更改此设置后,我的编译持续时间10分钟更改为~10秒 .
Step 1:
Step 2:
参考 - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio
Disadvantage:
您将无法下载build.gradle文件中标识的最新版本的依赖项 . 它运行得更快,因为它使用这些导入库的缓存快照 .
Important Note :部署应用程序时,请删除此设置并使用最新版本的依赖项进行构建 .
我远不是Gradle的专家,但我的环境在.gradle / init.gradle中有以下几行
然而我不知道为什么那条线在那里,但我尝试改变
现在我终于可以在不咒骂Android Studio和Gradle buildind方案的情况下工作了 .
嗨,我知道这是非常非常晚的答案,但也许可以帮助别人
在我的情况下,我正在使用
在我的应用程序Gradle依赖
但在我的一个图书馆里
更改所有最新版本后,我的问题解决了 .
解决了我的问题
Gradle构建从8分钟到3秒 .
请按照以下步骤操作 .
https://i.stack.imgur.com/RF9uG.png
https://i.stack.imgur.com/mvHKJ.png
如果您想了解有关即时运行的更多信息,请访问android开发者网站 .
我最近买了一台新的SSD,从Windows转到Linux . 我的构建时间现在快了一个数量级,不再烦人 .
虽然它没有直接回答你的问题,为什么它比eclipse慢,但它表明这个过程是磁盘限制的,升级到SSD可能是一个(有点贵)的解决方案 . 我猜是会有人在谷歌上搜索问题并在此结束,他们可能会欣赏我的经历 .
您可以尝试打开工作室右侧的gradle菜单,只组装已更改的模块,然后运行install命令 . 按下运行时,无论您对正在组装的代码所做的任何更改如何,它都会组装所有内容
接受的答案是旧版本的android studio,其中大部分仍在使用 . 更新android studio使它更快一点 . 不要费心指定堆大小,因为它会随着Xms和Xmx的增加而自动增加 . 这是VMoptions的一些修改
启动android studio . 转到文件 - >设置 - >构建,执行,部署 - >编译器
并行检查编译独立模块
在命令行选项中写:--offline
检查自动生成项目
检查按需配置
在使用mac的情况下,起初我不能 trivial 一个nice article about how we can change the vmoptions in MAC OSX . 引用这篇文章 .
打开终端并输入此命令以打开MAC OSX中的vmoptions:
使用这个sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libncurses5:i386 libstdc 6:i386 zlib1g:i386
Android Studio fails to build new project, timed out while wating for slave aapt process
根据android documentation,将其添加到app模块的gradle文件中 .
您可以忽略gradle update-to-date检查 .
对于运行Android Studio 1.5的Windows:转到
File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)
从~30秒到~3秒
在Android Studio 2.3之后
更新
所有答案都很棒,我鼓励使用这些方法来提高构建速度 .
在2016年9月发布Android 2.2之后,Android发布了实验性构建缓存功能,以加快
gradle
构建性能,现在这是Android Studio 2.3 Canary的官方版本 . (Official Release note)它引入了一个新的构建缓存功能,默认情况下启用,通过存储和重用在相同或不同Android的先前版本中创建的文件/目录,可以加快构建时间(包括完整构建,增量构建和即时运行)项目 .
How to use:
在
gradle.properties
文件中添加以下行Clean the cache:
cleanBuildCache
的新Gradle任务,您可以更轻松地清理构建缓存 . 您可以在终端中键入以下内容来使用它:./gradlew cleanBuildCache
C:\Users\<username>\.android\build-cache
硬件
对不起,但是将开发站升级到SSD和大量的ram可能比以下几点的影响更大 .
工具版本
提高构建性能是开发团队的主要优先事项,因此请确保使用最新的Gradle和Android Gradle Plugin .
配置文件
在任何适用的目录中创建名为
gradle.properties
的文件:/home/<username>/.gradle/
(Linux)/Users/<username>/.gradle/
(Mac)C:\Users\<username>\.gradle
(Windows)附加:
如果将它们放在
projectRoot\gradle.properties
,则Gradle属性在本地工作;如果将它们放在user_home\.gradle\gradle.properties
,则全局属性在全局工作 . 如果从控制台或直接从构思运行gradle任务,则应用属性:IDE设置
可以从IDE设置GUI调整Gradle-IntelliJ集成 . 启用"offline work"(从下面的yava检查答案)将在每个"sync gradle file"上禁用实际网络请求 .
Native multi-dex
apk构建的最慢步骤之一是将java字节码转换为单个dex文件 . 启用本机multidex(仅适用于调试版本的minSdk 21)将有助于工具减少工作量(请查看下面的Aksel Willgert的答案) .
依赖关系
首选
@aar
依赖于库子项目 .在mavenCentral,jCenter上搜索aar包或使用jitpack.io从github构建任何库 . 如果您不编辑依赖库的源代码,则不应每次使用项目源构建它 .
防病毒
考虑从防病毒扫描中排除项目和缓存文件 . 这显然是与安全的权衡(不要在家里试试!) . 但是如果你在分支机构之间切换很多,那么防病毒软件会在允许gradle进程使用它之前重新扫描文件,这会减慢构建时间(特别是带有gradle文件和索引任务的AndroidStudio同步项目) . 测量构建时间并处理启用和未启用防病毒的CPU,以查看它是否相关 .
分析构建
Gradle内置了对profiling projects的支持 . 不同的项目使用插件和自定义脚本的不同组合 . 使用
--profile
将有助于找到瓶颈 .