很长的 gradle 构建时间 - Android
Posted
技术标签:
【中文标题】很长的 gradle 构建时间 - Android【英文标题】:Long gradle build time - Android 【发布时间】:2018-12-22 05:30:44 【问题描述】:我有一个多模块项目。我使用kotlin + dagger 2 + databindingv2
。使用最新的3.2 android studio
。
但是每当我通过更改一个模块中的某些内容来执行incremental build
时,生成的其他一些模块(不依赖于更改的模块)数据绑定类会发生更改,从而在该模块上调用 kapt。从而增加构建时间。
Input property 'annotationProcessorOptionProviders$kotlin_gradle_plugin.$0.$0.buildDir'
file /build/intermediates/data-binding/debug/compiler/dependent-lib-artifacts/
***-setter_store.bin has changed.
有人遇到过这个问题吗?
有什么解决办法吗?
【问题讨论】:
这是一个常见问题。据我了解,您需要使用 gradle 4.7+ 来支持增量kapt
但插件也必须实现对此的支持。匕首还没有
@MirceaNistor 我正在使用 gradle 4.8。但在 gradle info 中,我发现修改后的文件仅来自数据绑定。不是来自匕首。
尝试使用 --scan 标志运行您的构建并点击生成的链接。可能会给你一些想法。另一位评论者也说对了,并非所有插件都设置为支持增量构建。
我正在使用 --info 运行 gradle。这表明某些数据绑定 Impl 已更改。这将再次触发 kapt 并为该模块编译。
developer.android.com/studio/build/optimize-your-build官方developer.android页面优化gradle构建时间
【参考方案1】:
我自己发现了这个问题。由于存在多个模块且模块相互依赖,因此使用数据绑定库中的 ObservableField 将一个字符串资源绑定到 xml。该字符串资源在我更改了代码的那个模块中。因此,依赖于该字符串资源的其他模块正在触发该模块的 kapt。所以我从所有其他模块中删除了所有依赖项。现在其他任务没有触发。
但我仍然发现 kapt 任务并没有得到增量。如果发生变化,它将触发该模块的整个 kapt 任务。
【讨论】:
以上是关于很长的 gradle 构建时间 - Android的主要内容,如果未能解决你的问题,请参考以下文章
更新到 Kotlin 1.4 后,Android Gradle 构建失败 dexBuilderDebug 任务