随着项目工程的扩大,程序编译时间也越来越长,同时也影响到了我们整个开发的速度。为了提高开发效率下面将列出一些优化方案:
开发的时候尽可能的使用最新设备进行开发,运行在Android7.0(API level 24)
最新的Android 平台可以让你程序编译运行速度更快,如Android Runtime(ART)还有更好对multiple DEX 支持
1.优化配置文件
-
确保你的buildToolsVersion,Gradle最新
Android 编译工具随着版本的更新升级会不断的进行优化,使用最新的版本来开发
-
给你的开发环境配置特定的参数
大多数的配置都是在你开发正式环境版本所需要,而日常编译的时候并不用到这类配置,开启了不必要的配置会减慢你的编译速度
因此需要你配置一个特定的开发环境变量,如下面代码里"dev"(开发环境),"prod"(正式环境)
android { ... defaultConfig {...} buildTypes {...} productFlavors { // 可以参考如下配置 dev { // 为了避免64k方法数限制,将开发环境的最低minSdkVersion 设置到 21以上 或更高 minSdkVersion 21 versionNameSuffix "-dev" applicationIdSuffix '.dev' } prod { // 如果编译正式环境版本使用默认配置,那么你可以置空这块代码 // 但是你仍然需要创建这个变量,否则全部环境 会使用开发变量的配置 } } }
如果你已经配置了上述的环境变量,当你在开发的时候需要混合加入一些新的变量,那么你可以通过
flavorDimensions
配置维度 如:在新的环境变量"demo", "full" 进行添加维度android { ... defaultConfig {...} buildTypes {...} // 定义下面你需要用到变量维度 // 当你使用Gradle进行合并的时候,指定你需要的环境维度 flavorDimensions "stage", "mode" productFlavors { dev { dimension "stage" minSdkVersion 21 versionNameSuffix "-dev" applicationIdSuffix '.dev' ... } prod { dimension "stage" ... } demo { dimension "mode" ... } full { dimension "mode" ... } } }
2.避免编译不必要的资源
在开发环境编译的时候,你可以选定一种语言与一个屏幕分辨率参数,如下面
android {
...
productFlavors {
dev {
...
resConfigs "en", "xxhdpi"
}
...
}
}
3.开发版本编译关闭奔溃分析日志
如果你不需要奔溃分析日志报告,你可以直接关闭
android {
...
buildTypes {
debug {
ext.enableCrashlytics = false
}
}
4.使用静态配置值在你调试编译时
当你在编译生成正式版本的时候会用到动态版本代码,版本名称,资源等,这些动态生成的配置参数可以在调试运行时候隔离他们,使用静态的配置值进行debug 版本编译,如下面的代码:
int MILLIS_IN_MINUTE = 1000 * 60
int minutesSinceEpoch = System.currentTimeMillis() / MILLIS_IN_MINUTE
android {
...
defaultConfig {
// 默认使用版本静态值
versionCode 1
versionName "1.0"
...
}
// 这些动态值将在你编译正式版本时候生效
applicationVariants.all { variant ->
if (variant.buildType.name == "release") {
variant.mergedFlavor.versionCode = minutesSinceEpoch;
variant.mergedFlavor.versionName = minutesSinceEpoch + "-" + variant.flavorName;
}
}
}
5.使用静态依赖版本值
诸如com.android.tools.build:gradle:2.+
可以在编译调试的时候使用当前固定版本值替换
6.配置DexOptions与启用 Library per-dexing
-
Library per-dexing
使用预生成库进行增量更新
-
maxProcessCount
设置最大的线程数
-
javaMaxHeapSize
设置最大堆空间
android { ... dexOptions { preDexLibraries true maxProcessCount 8 javaMaxHeapSize "2048m" } }
7.增大Gradle编译堆栈空间
如在你的 gradle.properties
文件下 增大设置堆栈空间
org.gradle.jvmargs = -Xmx2048m
8.使用WebP 图片格式
将PNG图片转换成WebP
9.禁用PNG图片处理
如果你不想转换webp格式的图片,但是你仍旧想提高你的编译运行速度,那你可以参照如下配置 禁用PNG图片自动压缩
android {
...
aaptOptions {
cruncherEnabled false
}
}
提示:当你以一次构建成功后,你会发现接下来的clean build操作会越来越快(即使不使用本页的任何优化)。这个是因为Gradle 进程会有一个“热身”提高性能的过程,类似JVM进程的预热期
通过本页的一些优化后,应该能为你减少编译过程的大多数时间
网友评论