很长的 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 任务

ArcGIS Runtime for Android 5 加载地图

iOS - 在横向显示一个很长的垂直堆栈视图

解决Android Studio 新建导入项目时死掉

解决Android Studio 新建导入项目时死掉

解决Android Studio 新建导入项目时死掉