内容简介:团队使用kotlin挺长时间了,一直以来都不太满意kotlin的编译速度,但是也能忍受。最近开了一个新项目,有不少同事从java过来的,他们就实在是受不了,优化编译速度就变得很重要了。具体的耗时任务在Run Tasks中:可以看到具体的耗时任务如上,主要是kapt相关的编译和编译kotlin代码,以及最后的transformClassedWithXXX。
团队使用kotlin挺长时间了,一直以来都不太满意kotlin的编译速度,但是也能忍受。最近开了一个新项目,有不少同事从 java 过来的,他们就实在是受不了,优化编译速度就变得很重要了。
优化之前和之后的对比
在优化之前我们的一次完整编译时间是2分21秒
具体的耗时任务在Run Tasks中:
可以看到具体的耗时任务如上,主要是kapt相关的编译和编译kotlin代码,以及最后的transformClassedWithXXX。
优化之后的完整编译时间31s
优化之后的增量编译时间15s
优化步骤:
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才使用正常的版本号。然后还有一个就是使用依赖版本的时候,尽量不要使用+号的版本依赖,使用固定版本号速度会更快。
希望大家省下的编译时间,能够好好陪陪家人。 enjoy~
参考资料:
以上所述就是小编给大家介绍的《优化使用kotlin开发Android app的编译速度》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Visual Studio 使用 Parallel Builds Monitor 插件迅速找出编译速度慢的瓶颈,优化编译速度
- 如何提高 Xcode 的编译速度
- Android OS提升编译速度
- 提升 maven 编译 scala 的速度
- iOS 微信编译速度优化分享
- 今日头条 Android “秒” 级编译速度优化
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。