前言
在被指定为Android的官方语言后,Kotlin逐渐取代了Java,成为现今Android开发人员的首选,它让Android开发更加轻松和快捷。
Java和Kotlin语言的相似之处颇多,因此Java开发人员转用Kotlin比较容易。但也正因如此,开发人员很容易忽略Kotlin的独特性及其惯用方法,这可能导致编写的Kotlin代码与Java的代码类似。
之前项目使用Kotlin都是不太满意kotlin的编译速度,想着早点优化早点享受的原则(主要后面项目还得自己搞)对Kotlin的编译速度进行优化。
优化步骤:
1.优化gradle配置:
在项目根目录创建一个gradle.properties文件
//开启gradle并行编译,开启daemon,调整jvm内存大小
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
//开启gradle缓存
org.gradle.caching=true
android.enableBuildCache=true
//开启kotlin的增量和并行编译
kotlin.incremental=true
kotlin.incremental.java=true
kotlin.incremental.js=true
kotlin.caching.enabled=true
kotlin.parallel.tasks.in.project=true //开启kotlin并行编译
//优化kapt
kapt.use.worker.api=true //并行运行kapt1.2.60版本以上支持
kapt.incremental.apt=true //增量编译 kapt1.3.30版本以上支持
kapt.include.compile.classpath=false //kapt avoiding 如果用kapt依赖的内容没有变化,会完全重用编译内容,省掉最上图中的:app:kaptGenerateStubsDebugKotlin的时间
在上面的配置中,我们首先调整了gradle的配置,然后开启了缓存和kotlin和kapt的增量编译。
如果项目中使用了kapt请使用最新版本的kapt,当前写该文章时kapt的最新版本为1.3.31
2.优化app的build.gradle
1.在项目的app目录中的build.gradle文件中修改:
//如果有用到kapt添加如下配置
kapt {
useBuildCache = true
javacOptions {
option("-Xmaxerrs", 500)
}
}
//在Android代码块中添加如下配置:(可优化最上图中transformClassDexBuilderForDebug的时间)
android {
dexOptions {
preDexLibraries true
maxProcessCount 8
}
}
2.其他不太重要的优化,好像对时间影响不算特别大
优化版本号的配置,如果是debug版本不要使用动态版本号
//原配置
defaultConfig {
...
minSdkVersion 19
targetSdkVersion 28
versionCode gitVersionCode()
versionName currentName()
...
}
//修改为
defaultConfig {
...
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0.0"
...
}
applicationVariants.all { variant ->
...
if (variant.buildType.name == "release") {
versionName = currentName()
versionCode = gitVersionCode()
}
...
}
以前我们的配置上versionCode是使用的git的提交次数作为版本号的,在本地debug状态的时候其实最好是写死版本号,如果版本号变化会导致需要重新生成Manifest文件以及完整的编译应用,导致InstantRun无法使用(PS其实我们一直没用InstantRun)。所以修改为写死版本号,然后在applicationVariants中判断如果是release才使用正常的版本号。然后还有一个就是使用依赖版本的时候,尽量不要使用+号的版本依赖,使用固定版本号速度会更快。
最后
其实一些东西的优化项目经验多了就会了(被逼的),自己找找Zl,积累积累就好了。