我有一个多项目(约 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 } }
抱歉,将开发站升级到 SSD 和大量内存的影响可能比以下几点加起来还要大。
提高构建性能是开发团队的首要任务,因此请确保您使用的是最新的Gradle和Android Gradle 插件。
gradle.properties在适用的任何目录中创建一个名为的文件:
gradle.properties
/home/<username>/.gradle/
/Users/<username>/.gradle/
C:\Users\<username>\.gradle
附加:
# 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 任务,则应用属性:
projectRoot\gradle.properties
user_home\.gradle\gradle.properties
可以从 IDE 设置 GUI 调整 Gradle-IntelliJ 集成。启用“离线工作”(检查下面 yava 的答案)将禁用每个“同步 gradle 文件”上的真实网络请求。
apk 构建中最慢的步骤之一是将 java 字节码转换为单个 dex 文件。启用本机 multidex(minSdk 21 仅用于调试构建)将有助于工具减少工作量。
优先@aar于库子项目的依赖关系。
@aar
在mavenCentral、jCenter上搜索 aar 包或使用jitpack.io从 github 构建任何库。如果您不编辑依赖库的源代码,则不应每次都使用项目源代码构建它。
考虑从防病毒扫描中排除项目和缓存文件。这显然是与安全性的权衡(不要在家里尝试这个!)。但是如果你在分支之间切换很多,那么杀毒软件会在允许 gradle 进程使用它之前重新扫描文件,这会减慢构建时间(特别是 AndroidStudio 同步项目与 gradle 文件和索引任务)。在启用和不启用防病毒软件的情况下测量构建时间和进程 CPU 以查看是否相关。
Gradle内置了对分析项目的支持。不同的项目使用插件和自定义脚本的不同组合。使用--profile将有助于发现瓶颈。
--profile