通过 Gradle 和 Android Studio 构建和运行应用程序比通过 Eclipse 慢
Posted
技术标签:
【中文标题】通过 Gradle 和 Android Studio 构建和运行应用程序比通过 Eclipse 慢【英文标题】:Building and running app via Gradle and Android Studio is slower than via Eclipse 【发布时间】:2013-05-22 10:18:33 【问题描述】:我有一个多项目(约 10 个模块),每次构建大约需要 20-30 秒。当我在 android Studio 中按 Run 时,我每次都必须等待重新构建应用程序,这非常慢。
是否可以在 Android Studio 中自动化构建过程?或者您对如何加快这个过程有什么建议?
在 Eclipse 中,由于自动构建,在模拟器上运行相同的项目大约需要 3-5 秒。
这是我的 build.gradle 文件(应用模块):
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
【问题讨论】:
请记住,基于 Gradle 的构建系统和 Android Studio 目前都不是生产级的。 这里花费的时间很可能是在 DEXing 阶段。不幸的是,android studio 的 make 似乎每次都执行一次清理,导致之前的 dex 文件被删除。希望我们很快就会看到增量构建修复。 与此同时,是否有任何简单的方法可以告诉更改默认 Gradle 任务,以使它们不总是执行清理? @CommonsWare 好吧,现在我们使用的是 1.02 版本,没有任何借口,但它仍然是一个主要问题。在运行 Android Studio 时,我的 4GB 四核笔记本电脑使用了大约 3.75GB 的内存,只保存了一个 hello world 项目的单个实例。因此,它也非常缓慢。对我来说,这表明存在严重且持续存在的设计缺陷。我希望事情能尽快解决。 @AndrewS 我觉得很遗憾我们需要更改我们的操作系统只是为了让 gradle 与以前的工具相比以合理的速度运行。 【参考方案1】:硬件
很抱歉,将开发站升级到 SSD 和大量内存的影响可能比以下几点加起来还要大。
工具版本
提高构建性能是开发团队的首要任务,因此请确保您使用的是最新的 Gradle 和 Android Gradle Plugin。
配置文件
在任何适用的目录中创建一个名为 gradle.properties
的文件:
/home/<username>/.gradle/
(Linux)
/Users/<username>/.gradle/
(Mac)
C:\Users\<username>\.gradle
(Windows)
追加:
# IDE (e.g. Android Studio) users:
# Settings specified in this file will override any Gradle settings
# configured through the IDE.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
# TODO: disable daemon on CI, since builds should be clean and reliable on servers
org.gradle.daemon=true
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.krd1mm27v
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -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
org.gradle.parallel=true
# Enables new incubating mode that makes Gradle selective when configuring projects.
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true
# Set to true or false to enable or disable the build cache.
# If this parameter is not set, the build cache is disabled by default.
# http://tools.android.com/tech-docs/build-cache
android.enableBuildCache=true
如果您将 Gradle 属性放置在 projectRoot\gradle.properties
,则它们在本地工作,如果您将它们放置在 user_home\.gradle\gradle.properties
,则全局工作。如果您从控制台或直接从想法运行 gradle 任务,则应用属性:
IDE 设置
可以从 IDE 设置 GUI 调整 Gradle-IntelliJ 集成。启用“离线工作”(检查下面yava 的答案)将禁用每个“同步 gradle 文件”上的真实网络请求。
原生多索引
apk 构建最慢的步骤之一是将 java 字节码转换为单个 dex 文件。启用本机 multidex(minSdk 21 仅用于调试构建)将有助于工具减少工作量(查看下面Aksel Willgert 的答案)。
依赖关系
首选@aar
依赖于库子项目。
在 mavenCentral、jCenter 上搜索 aar 包或使用 jitpack.io 从 github 构建任何库。如果您不编辑依赖库的源代码,则不应每次都使用项目源代码构建它。
防病毒
考虑从防病毒扫描中排除项目和缓存文件。这显然是与安全性的权衡(不要在家里尝试这个!)。但是如果你在分支之间切换很多,那么杀毒软件会在允许 gradle 进程使用它之前重新扫描文件,这会减慢构建时间(特别是 AndroidStudio 同步项目与 gradle 文件和索引任务)。在启用和不启用防病毒软件的情况下测量构建时间和进程 CPU 以查看是否相关。
分析构建
Gradle 内置了对profiling projects 的支持。不同的项目使用插件和自定义脚本的不同组合。使用--profile
将有助于找到瓶颈。
【讨论】:
关于@aar depedencies:使用例如dependencies compile 'com.android.support:support-v4:21.0.+'
是一个缓慢的解决方案?不明白
成像,您添加了这样的库:github.com/novak/numberpicker。它有价值,为问题提供代码解决方案,但作者没有像 maven 或 jCenter 那样在任何地方发布它。现在,您要么将该库作为源代码带入您的项目并在每次构建主项目时构建它,要么一次性编译它并仅将 @aar 提交到您的项目存储库中。所以它真的是一个源/二进制依赖的选择。如果您不编辑源代码,您应该将您的依赖项作为预编译的二进制文件。对于 .jar 的普通 java 库,对于 .aar 的 android 库
项目设置> gradle.请看下面的截图:i.stack.imgur.com/wrwgo.png
我已经按照描述设置了所有优化,但是在 Android Studio 中启动我的应用程序需要 3 到 4 分钟,而在 Eclipse 中大约需要 30 秒。废话。只有 12 个项目,一个应用程序可以运行! Android 开发现在变得如此繁琐,一年多过去了。
我应用了所有优化,但构建 HelloWorld apk 仍然需要大约 20 秒,而在 Eclipse 中则需要 2-3 秒。【参考方案2】:
您可以忽略 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秒
【讨论】:
这很酷。那要快很多。但这会破坏什么? 最佳解决方案。我能知道这个解决方案的副作用吗 @JohnBallinger 离线工作 - 使用此复选框在离线模式下使用 Gradle。在这种情况下,Gradle 将使用缓存中的依赖项。 Gradle 不会尝试访问网络来执行依赖解析。如果依赖项的缓存中不存在所需的依赖项,则构建执行将失败。 (来源:jetbrains.com/idea/help/gradle-2.html) 在通过网络之前是否默认先使用缓存的依赖项?我无法想象每次运行gradle
时都会检查更新的依赖项。这很奇怪。
@EhteshChoudhury 这很奇怪。整个 Gradle/Android Studio 开发环境太慢了。大多数人认为它很慢是因为 Java。我在 IDEA 上做服务器端 Java 开发,一切都运行得非常顺利。【参考方案3】:
到处搜索,终于找到了适合我们的解决方案。启用并行构建(在 OSX 上:preferences -> compiler -> gradle -> "Compile independent modules in parallel"
)并启用“自动生成项目”将其从约 1 分钟降至约 20 秒。感谢 /u/Covalence。
http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/
【讨论】:
20 秒仍然非常慢。 请记住,这显然仅在您拥有多个独立模块/项目时才有帮助。我已经在单个模块应用程序上对其进行了测试,但没有任何区别。 我有一个非常大的项目,在 MacBook Pro 2012 Core i7、8 GB RAM 上需要 2-3 分钟。没事吧?【参考方案4】:我最近购买了一个新的 SSD,并从 Windows 转到了 Linux。我的构建时间现在快了一个数量级,并且不再烦人。
虽然它没有直接回答您关于为什么它比 eclipse 慢的问题,但它表明该过程是受磁盘限制的,升级到 SSD 可能是一个(有些昂贵的)解决方案。我猜会有人在谷歌上搜索这个问题并在这里结束,他们可能会欣赏我的经验。
【讨论】:
我团队的开发人员在具有大量内存的快速机器中拥有快速 SSD。对于一个不平凡的应用程序,与在 Eclipse 中几乎立即重新部署相比,在进行少量代码更改后重新部署仍需要大约 45 秒。即使运行一个普通的非 Android JUnit 也非常慢。到目前为止,“升级”到 Android Studio 和 Gradle 已经是一个很大的降级。 :-/ @Lionleaf 从 windows 切换到 linux 能快多少? @younes0 我不知道。我在切换到 SSD 的同时切换到 Linux。我并不是说它有任何积极的影响,我只是为了加速而改变了这两个变量。 在我的情况下,从 Windows 切换到 Linux 导致 Android 构建速度提高了 40%...所以这绝对值得 我赞同@Bartosz Kosarzycki 所说的话。我最终在我的开发机器上运行了一个带有 virtualbox 的 Ubuntu vm。在 Windows 上构建约 54 秒,在同一硬件上的虚拟机内进行相同构建约 7 秒。通过迁移到 Linux 实现了惊人的加速。【参考方案5】:在 Android Studio 3.2.1 中加快 Gradle 构建速度
有没有觉得您在等待 Android Studio 中的构建完成几分钟?我也是。这很烦人。 幸运的是,有几种方法可以用来改进这一点。 Android 使用 Gradle 进行构建。最新版本是 4.6,与以前的版本相比有巨大的性能提升(详见发行说明)。
第 1 步: 更新 Gradle 版本 一个更简单的方法是去:打开模块设置(你的项目)>项目结构
更新
更改为 Gradle 版本:4.6 和 更改为 Android 插件版本:3.2.1
从https://services.gradle.org/distributions/gradle-4.6-all.zip 下载 Gradle Release 发行版 并将其复制到 Gradle 文件夹中:
最后一步是在“设置”>“Gradle”中添加您的分配
不要忘记单击应用以保存更改。
第 2 步: 为项目启用离线模式、Gradle 守护进程和并行构建 离线模式告诉 Gradle 忽略 update-to-date 检查。 Gradle 每次都要求依赖项,并且具有此选项使其仅使用机器上已有的依赖项。 从 android studio Setting 进入 Gradle 并点击 Offline work 框。
-
从android studio Setting进入Compiler,在命令行框中添加“--offline”,点击Compile Independent modules in parallel。
下一步是为您的项目启用 Gradle 守护程序和并行构建。并行构建将使您的具有多个模块的项目(Gradle 中的多项目构建)并行构建,这应该会使大型或模块化项目的构建速度更快。
可以通过修改 Gradle 脚本目录中名为 gradle.properties 的文件来启用这些设置(即 ~/.gradle/gradle.properties)。其中一些选项(例如,并行编译模块)可从 Android Studio 获得,也默认情况下启用,但将它们放在 gradle.properties 文件中将在从终端构建时启用它们,并确保您的同事将使用相同的设置。但是如果你在一个团队中工作,有时你不能提交这些东西。
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit org.gradle.parallel=true
# When set to true the Gradle daemon is used to run the build. For local developer builds this is our favorite property.
# The developer environment is optimized for speed and feedback so we nearly always run Gradle jobs with the daemon.
org.gradle.daemon=true
使用守护程序将使您的构建启动更快,因为它不必每次都启动整个 Gradle 应用程序。 Gradle 守护程序默认不启用,但建议始终为开发人员的机器启用它(但对于持续集成服务器将其禁用)。有关此模式的常见问题解答可以在这里找到https://docs.gradle.org/current/userguide/gradle_daemon.html。 对于某些项目,并行构建设置可能不安全。要求是您的所有模块都必须解耦,否则您的构建可能会失败(有关详细信息,请参阅http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects)。
第 3 步: 启用增量设计并调整内存设置 您可以通过打开增量 dexing 来加快构建速度。在模块的构建文件中:
将此选项添加到您的 android 块中:
dexOptions
incremental true
在那个 dexOptions 块中你还可以指定 dex 进程的堆大小,例如:
dexOptions
incremental true
javaMaxHeapSize "12g"
其中“12g”是 12GB 内存。可以在此处找到有关此的其他信息 google.github.io/android-gradle-dsl/current/ 您还可以在设置文件中配置 Gradle 参数,例如如果您有一个大型项目,请增加最大堆大小:
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
在此处查看所有参数列表:https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties 了解详细信息。
第 4 步: 禁用防病毒软件 考虑从防病毒扫描中排除项目和缓存文件。这显然是与安全性的权衡。但是如果你在分支之间切换很多,那么杀毒软件会在允许 gradle 进程使用它之前重新扫描文件,这会减慢构建时间(特别是带有 gradle 文件和索引任务的 Android Studio 同步项目)。在启用和不启用防病毒软件的情况下测量构建时间和进程 CPU 以查看是否相关。 我希望这有帮助。如果您有任何问题或其他提高构建性能的提示,请发表评论。
helpful link
【讨论】:
【参考方案6】:如果使用 google play 服务,只依赖于你需要的库而不是整个 blob 可以让事情变得更快。
如果您只需要地图,请使用:
compile 'com.google.android.gms:play-services-maps:6.5.+'
代替:
compile 'com.google.android.gms:play-services:6.5.+'
后者将 20k 方法 (see blog) 带入类路径,这可能会使方法总数超过 64k。
这将强制使用 proguard 或 multidex,即使是调试版本。对于我的一个项目,我有以下构建时间
multidex 构建(带有支持库)~40 秒 proguard 构建 ~20 秒 在方法限制如果在 sdk 21+ 上开发,可以优化 multidex 构建,如 in the android documentation 所述
android
productFlavors
// Define separate dev and prod product flavors.
dev
// dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
// to pre-dex each module and produce an APK that can be tested on
// Android Lollipop without time consuming dex merging processes.
minSdkVersion 21
prod
// The actual minSdkVersion for the application.
minSdkVersion 14
...
【讨论】:
我没有编译所有play-service
库,而是只编译了 maps
和 locations
并禁用了 multidex
。我觉得差别很大。谢谢+1【参考方案7】:
公认的答案适用于旧版本的 android studio,其中大多数现在仍然有效。更新 android studio 让它更快一点。不要费心指定堆大小,因为它会随着 Xms 和 Xmx 的增加而自动增加。下面是对 VMoptions 的一些修改
在 bin 文件夹中有一个 studio.vmoptions 文件来设置环境配置。就我而言,这是 studio64.vmoptions 如果尚未添加以下行,请添加以下行并保存文件。就我而言,我有 8GB RAM。
-Xms4096m
-Xmx4096m
-XX:MaxPermSize=2048m
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+HeapDumpOnOutOfMemoryError
-Dfile.encoding=utf-8`
启动安卓工作室。转到文件-> 设置-> 构建、执行、部署-> 编译器
检查并行编译独立模块 在命令行选项中写入:--offline 勾选自动生成项目 检查按需配置在使用mac的情况下,一开始我找不到vmoptions。无论如何,这是一个nice article about how we can change the vmoptions in MAC OSX。在此处引用本文。
打开您的终端并输入此命令以在 MAC OSX 中打开 vmoptions:
open -e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions
【讨论】:
从 AS 2.3.2 开始,您可以通过 help-> Edit Custom Vm Options 更改 vim 选项【参考方案8】:只需在以下目录中创建一个名为 gradle.properties 的文件:
/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)
将此行添加到文件中:
org.gradle.daemon=true
对我来说速度现在等于 Eclipse。
来源:https://www.timroes.de/2013/09/12/speed-up-gradle/
【讨论】:
我在 mac 中看不到 .gradle 文件夹。怎么打开? @Dharmik:也许你用不同的用户名安装了 Android Studio。否则,我猜它没有正确安装。 不,这是其他问题.. ".gradle" 系统文件夹被隐藏了.. 所以我去 Go=>Go To Folder 然后我找到了 .gradle 文件夹.. 感谢您的快速回复..【参考方案9】:如果你从命令行使用 gradle,你可以加快这个过程。 IDE 开发人员需要做很多优化。但这只是一个早期版本。
如需了解更多信息,请与一些开发人员一起阅读 g+ 上的 this discussion。
【讨论】:
即使在 2016 年的现在看来也是如此【参考方案10】:如果有人正在处理一个通过 Subversion 同步的项目并且这种情况仍在发生,我认为这会减慢 Android Studio 中的工作流程。例如,如果它在以下情况下工作非常缓慢:滚动类、xml 等,而我的应用仍在我的设备上运行。
在首选项中转到版本控制,然后将 Subversion 设置为无。【讨论】:
你拯救了我的一天:2/4 分钟 -> 15 秒(我为项目禁用了 Tortoise HG)。 如果有人还在使用 Subversion,他们应该切换到 Git 或 Mercurial【参考方案11】:Android Studio 2.3 后更新
所有答案都很棒,我鼓励将这些方法与这个一起使用以提高构建速度。
在 2016 年 9 月发布 android 2.2 之后,Android 发布了实验性构建缓存功能以加快 gradle
构建性能,该功能现已从 Android Studio 2.3 Canary 正式发布。 (Official Release note)
它引入了一个新的构建缓存功能,该功能默认启用,可以通过存储和重用在相同版本的先前构建中创建的文件/目录来加快构建时间(包括完整构建、增量构建和即时运行)或不同的Android项目。
使用方法:
在您的 gradle.properties
文件中添加以下行
android.enableBuildCache = true
# Set to true or false to enable or disable the build cache. If this parameter is not set, the build cache is enable by default.
清理缓存:
有一个名为 cleanBuildCache
的新 Gradle 任务可以让您更轻松地清理构建缓存。您可以通过在终端中输入以下内容来使用它:
./gradlew cleanBuildCache
或者您可以通过删除该位置的所有文件存储来清理 Android Studio 2.2 的缓存
C:\Users\<username>\.android\build-cache
【讨论】:
【参考方案12】:更改此设置后,我的编译持续时间 10 分钟更改为 ~10 秒。
第 1 步:
设置(ctrl+Alt+S) ->
构建、执行、部署 ->
编译器->
在命令行选项框中键入“
--offline
”。
第 2 步:
选中“并行编译独立模块”复选框。
& 点击应用 -> 确定
参考 - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio
缺点:
您将无法下载 build.gradle 文件中确定的最新版本的依赖项。它运行得更快,因为它使用了这些导入库的缓存快照。
重要提示:当您部署应用程序时,请移除此设置并使用最新版本的依赖项进行构建。
【讨论】:
【参考方案13】:用
解决了我的问题
File -> Settings -> Build, Execution, Deployment -> Build Tools ->
Gradle -> Offline work
Gradle 构建从 8 分钟缩短到 3 秒。
【讨论】:
【参考方案14】:以下是帮助这位刚入门的 Android 程序员(几年前曾是专业程序员)加速 Android Studio 2.2 的原因。我知道这是一次重演,但只是在一个地方总结。
初始构建仍然可能非常缓慢,但现在通常可以容忍重新启动正在运行的应用程序。我使用的是次优 PC:AMD 四核 A8-7410 CPU、8MB RAM、非 SSD HD、Win 10。(而且,这是我第一次在 Stack Overflow 上发帖……;)
在设置中 -> GRADLE:
是的“离线工作”(这可能是最重要的设置)。
在设置中 -> 编译器:
对于“并行编译独立模块”是的(不确定这是否真的有助于利用多核 CPU)。
在 GRADLE 脚本中,“build.gradle(模块:app)”:
defaultConfig
...
// keep min high so that restarted apps can be hotswapped...obviously, this is hugely faster.
minSdkVersion 14
...
// enabling multidex support...does make big difference for me.
multiDexEnabled true
也在 GRADLE 脚本中,“gradle.properties(项目属性)”:
org.gradle.jvmargs=-Xmx3048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true org.gradle.daemon=true
另外,在物理设备而不是模拟器上进行测试对我来说效果很好;立起来的小平板很方便。
【讨论】:
【参考方案15】:另一个性能改进提示:
Android Studio 3.0 包含名为 D8 的新 DEX 编译器。
“dex 编译器主要在您的日常应用程序开发中工作,但它直接影响您的应用程序的构建时间、.dex 文件大小和运行时性能。”
“当将新的 D8 编译器与当前的 DX 编译器进行比较时,D8 编译速度更快,输出更小的 .dex 文件,同时具有相同或更好的应用运行时性能。”
D8 是可选的 - 使用它我们必须把它放到项目的 gradle.properties
android.enableD8=true
更多信息:https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html
PS。它将我的构建时间缩短了大约 30%。
【讨论】:
【参考方案16】:这个设置对我来说真的很快 (大约 2 秒构建)
build.gradle
android
dexOptions
incremental true
preDexLibraries = false
jumboMode = false
maxProcessCount 4
javaMaxHeapSize "6g"
gradle.properties
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx8192M
我的电脑:
CPU Intel(R) Pentium(R) CPU G2030 @ 3.00GHz, 3000 Mhz, 2 个处理器 principales, 2 procesadores lógicos x64 Microsoft Windows 7 专业版 (内存)16.0 GB项目文件 - 全部位于本地高清
【讨论】:
【参考方案17】:请按照以下步骤操作。
启用离线模式:请检查下面的打印屏幕。
https://i.stack.imgur.com/RF9uG.png
启用即时运行:请检查下面的打印屏幕。
https://i.stack.imgur.com/mvHKJ.png
如果您想了解更多关于即时运行的信息,请访问 android 开发者网站。
【讨论】:
【参考方案18】:您可以尝试打开 studio 右侧的 gradle 菜单,只组装您更改的模块,然后运行 install 命令。当您按下运行时,它会组装所有内容,而不管您可能对其正在组装的代码所做的任何更改
【讨论】:
【参考方案19】:我远不是 Gradle 专家,但我的环境在 .gradle/init.gradle 中有以下行
gradle.projectsLoaded
rootProject.allprojects
repositories
mavenRepo name: 'libs-repo', url: 'http://guest-vm/artifactory/repo'
但我不知道为什么那条线在那里,但我尝试更改为
gradle.projectsLoaded
rootProject.allprojects
repositories
mavenCentral()
现在我终于可以不用对 Android Studio 和 Gradle buildind 方案发誓了。
【讨论】:
您的情况下的工件可能被用作库缓存。您联系工件服务器,看看它是否有库。如果是,它会返回给你,否则它会从 mavencentral 获取它,然后返回给你。【参考方案20】:在我们的具体案例中,问题是由于有 retrolambda 插件,它强制所有项目和子项目在我们每次尝试启动应用程序时重新编译,即使我们的代码没有被更改核心模块。
删除 retrolamba 为我们修复了它。希望它可以帮助某人。
【讨论】:
【参考方案21】:先试试这个。这是我的个人经历。
我遇到了同样的问题。我所做的只是永久禁用防病毒软件(我的是 Avast Security 2015)。禁用杀毒软件后,一切顺利。 gradle 成功完成。 从现在开始,gradle 将在几秒钟内完成(只需 5-10 秒)。
【讨论】:
【参考方案22】:嗨,我知道这是非常晚的答案,但也许可以帮助某人 就我而言,我使用的是
compile 'com.android.support:support-v4:23.1.1'
在我的应用 Gradle 依赖项中 但在我的一个图书馆里是
compile 'com.android.support:support-v4:23.0.1'
全部更改为最新版本后,我的问题解决了。
【讨论】:
【参考方案23】:按照这些步骤操作将使其速度提高 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 中检查此选项
【讨论】:
【参考方案24】:使用这个 sudo dpkg --add-architecture i386 sudo apt-get 更新 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
【讨论】:
【参考方案25】:微不足道的更改(到资源 xml)仍然需要 10 分钟。 正如 @rivare 在他的回答中所说,命令行构建速度更快(将其缩短到 15 秒)。 以下是一些步骤,至少可以从 Windows 的命令行快速进行简单的构建。
转到到您的项目根目录(gradlew.bat 所在的位置):
cd c:\android\MaskActivity
执行构建:
gradlew assembleDebug
卸载直接从手机中的apk(拖动卸载)。
构建完成后,杀死使用 Windows 的 BIG java 进程 任务管理器。
或者,如果您的 Windows 机器上有 unix 工具:
ps
“pid”的显示:
kill -9 <pid>
现在安装您的 apk:
adb -d install C:\Android\MaskActivity\app\build\outputs\apk\app-debug.apk
【讨论】:
【参考方案26】:根据android documentation,将这个添加到app模块的gradle文件中。
android
...
dexOptions
preDexLibraries true
maxProcessCount 8
【讨论】:
【参考方案27】:在低配置机器上运行 Android 环境。
-
关闭浏览器中不必要的网页标签
对于防病毒用户,排除自动生成的构建文件夹
Android Studio 有 1.2 Gb 默认堆可以减少到 512 MB 帮助 > 编辑自定义 VM 选项 工作室.vmoptions -Xmx512m 布局性能将加快
对于 Gradle 是 Android Studio Mkae 中的核心组件之一 就像现在 3.0beta 是最新的一个
以下提示会影响代码质量,请谨慎使用:
Studio 包含电源安全模式,打开后它将关闭 lint、代码完成等后台操作。
您可以在需要时手动运行 lintcheck ./gradlew lint
大多数人都在使用 Android 模拟器,它平均消耗 2 GB RAM,因此如果可能的话,请使用实际的 Android 设备,这将减少您计算机上的资源负载。或者,您可以减少模拟器的 RAM,它会自动减少计算机上的虚拟内存消耗。您可以在虚拟设备配置和高级设置中找到它。
Gradle 离线模式是带宽受限用户禁用下载构建依赖项的功能。它将减少后台操作,有助于提高 Android Studio 的性能。
Android Studio 提供了一种优化来并行编译多个模块。在低 RAM 机器上,此功能可能会对性能产生负面影响。您可以在编译器设置对话框中禁用它。
【讨论】:
【参考方案28】:我厌倦了在本地机器上缓慢构建 android。我解决这个问题的方法是在 AWS 上启动一台高端机器,然后将代码从本地同步到机器并在那里编译。
我看到性能立即得到提升,并且我的本地系统免于占用 CPU 资源。查看我为帮助开发人员加快终端速度而创建的这个工具https://stormyapp.com
【讨论】:
以上是关于通过 Gradle 和 Android Studio 构建和运行应用程序比通过 Eclipse 慢的主要内容,如果未能解决你的问题,请参考以下文章
Android:如何仅通过 Gradle 生成签名 APK? [复制]
通过 Gradle 和 Android Studio 构建和运行应用程序比通过 Eclipse 慢