
[英]gradle - Android Studio build too slow multidex application
[英]Speed up gradle build in multidex application
我的应用程序有一堆必不可少的库,这就是为什么我被迫使用multidex支持库并且它运行良好。 但问题显示的是在gradle buid速度。 平均需要2分钟才能构建,当我开发和测试时,这非常烦人。
有没有办法加快我的调试版本?
您可以通过指定最小SDK版本= 21来加速开发构建。
官方文档包括整个部分 。
示例(来自文档):
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
}
}
...
buildTypes {
release {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
添加产品风格后,可以使用devDebug
任务(而不是默认debug
任务)进行开发构建:
- 从命令行:运行./gradlew installDevDebug
- 从Android Studio: 打开Build Variants窗口并选择devDebug
构建变体。
当然,您应该使用SDK> = 21的设备。
对于那些不想使用口味的人来说,也有一个解决方案。 正如本要点所示 ,动态计算minSdkVersion
值:
int minSdk = hasProperty('devMinSdk') ? devMinSdk.toInteger() : 14
apply plugin: 'com.android.application'
android {
...
defaultConfig {
minSdkVersion minSdk
...
}
}
在这个例子中,我们检查是否定义了devMinSdk
属性,如果为true,我们正在使用它。 否则,我们默认为14。
我们如何通过devMinSdk
值来构建脚本? 两种选择:
使用命令行:
./gradlew installDebug -PdevMinSdk=21
使用Android Studio偏好设置:
转到首选项 (Windows上的设置 ) - > 构建,执行,部署 - > 编译器 - >在命令行选项文本框中输入-PdevMinSdk=21
。
最近构建缓存是由使用Android Gradle插件的团队引入的。 您可以通过将android.enableBuildCache=true
添加到gradle.properties
来启用它。
更多信息http://tools.android.com/tech-docs/build-cache
对我来说,增加的构建时间增加了约30秒。
它不适用于作为支持库的一部分引入的传统multidex( com.android.support:multidex
),因此仅当您的minSDK> = 21时它才适用。您只能为您的开发版本设置它并使用minSDK <21。
它也可以在不启用多索引的情况下工作。
Android Studio 1.3 (目前处于预览版3 )正在使用新的构建系统,该系统改善了gradle构建时间(实际上,速度提高了10-30倍)。
有关Google I / O 2015实时会话的更多信息
Multidexing使用更多内存。 当你接近Java中的最大堆大小时,你会发现Java花费更多时间做GC而不是做任何实际工作,这可能会减慢很多事情。
我强烈建议在使用multidex时增加最大堆大小。 将以下内容添加到build.gradle文件中的android闭包中,使最大堆大小为4GB(如果您愿意,请将其缩小):
dexOptions {
javaMaxHeapSize "4g"
}
将MinSdk改为21使我的一切恢复正常。现在一切都像6s一样编译
最新的Android Studio 3.0不再需要这样做
进入设置,搜索编译器,在命令行选项中键入“--offline”,然后进行编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.