我有一个多项目(大约10个模块),每次建造大约需要20-30秒。当我在Android Studio中按下Run键时,我每次都要等待重新构建应用程序,这非常缓慢。
是否有可能在Android Studio中自动化构建过程?或者你有什么建议可以加快这个过程吗?
在Eclipse中,由于自动构建,在模拟器上运行相同的项目大约需要3-5秒。
这是我的身材。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
}
}
这是另一个提高性能的技巧:
Android Studio 3.0包含新的DEX编译器D8。
“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%。
更改此设置后,我的编译持续时间10分钟更改为~10秒。
步骤1:
设置(ctrl + Alt + S) - >
构建、执行部署- >
编译器- >
在命令行选项框中输入“——offline”。
步骤2:
选中“并行编译独立模块”复选框。
&点击应用->确定
参考资料- https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio
劣势:
您将无法下拉构建中确定的依赖项的最新版本。gradle文件。它运行得更快,因为它使用了这些导入库的缓存快照。
重要提示:部署应用程序时,请删除此设置并使用最新版本的依赖项构建。
以下是帮助这个刚开始的Android程序员(几年前曾是专业程序员)加速Android Studio 2.2的方法。我知道这是在重复,但是,只是在一个地方总结一下。
初始构建仍然非常缓慢,但现在重新启动运行中的应用程序通常是可以忍受的。我使用的是一台次优PC: AMD四核A8-7410 CPU, 8MB RAM,非ssd HD, Win 10。(这是我第一次在....上发布Stack Overflow;)
在设置-> gradle:
“离线工作”是(这可能是最重要的设置)。
在设置->编译器:
是“并行编译独立模块”(不确定这是否真的有助于利用多核cpu)。
在GRADLE脚本中,“构建。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。物业(项目物业)”:
org . gradle。jvmargs=-Xmx3048m -XX: maxpermze =512m -XX:+ heapdumpfdfile -Dfile.encoding=UTF-8
org.gradle.parallel = true
org.gradle.daemon = true
此外,在物理设备上而不是模拟器上进行测试对我来说效果很好;可以站立的小平板很方便。
硬件
我很抱歉,但是升级开发站到SSD和大量内存可能比下面的点加起来影响更大。
工具版本
提高构建性能是开发团队的首要任务,所以请确保您使用的是最新的Gradle和Android Gradle Plugin。
配置文件
创建一个名为gradle的文件。应用于任何目录的属性:
-用户home / < >。gradle - (Linux)
- \用户/用户< >。gradle - (Mac)
C: \ \用户用户< > \。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,它们就可以在本地工作。属性和全局,如果你把它们放在user_home\.gradle\gradle.properties。属性适用于从控制台或直接从想法运行gradle任务:
IDE设置
可以从IDE设置GUI中调整Gradle-IntelliJ集成。启用“离线工作”(从yava下面检查答案)将禁用每个“同步gradle文件”上的真实网络请求。
本机multi-dex
apk构建中最慢的步骤之一是将java字节码转换为单个dex文件。启用本地multidex(仅用于调试版本的minSdk 21)将有助于减少工具的工作量(请看下面Aksel Willgert的答案)。
依赖关系
优先选择@aar依赖而不是库子项目。
在mavenCentral, jCenter或使用jitpack搜索aar包。IO从github构建任何库。如果你没有编辑依赖库的源代码,你不应该每次都用你的项目源代码来构建它。
杀毒
考虑从防病毒扫描中排除项目和缓存文件。这显然是一个与安全的权衡(不要在家里尝试!)。但是如果你在分支之间切换很多,那么反病毒会在允许gradle进程使用它之前重新扫描文件,这会减慢构建时间(特别是AndroidStudio同步项目与gradle文件和索引任务)。测量构建时间和进程CPU是否启用防病毒,以查看两者是否相关。
分析构建
Gradle内置了对项目分析的支持。不同的项目使用不同的插件和自定义脚本组合。使用——profile将有助于发现瓶颈。