DataBindingInfo.java在每次代码更改时重新生成

Jan*_*ski 10 android android-gradle-plugin android-databinding kapt android-gradle-3.0

我正在研究相当大的多模块Android项目,该项目使用Data Binding,Dagger 2和Java与Kotlin混合使用.

在项目"代码"文件(.java和.kt文件包括活动,自定义类等)稍有变化之后,构建时间很长(最多2分钟).即使我在添加新行等更改或修改注释中的一个字符时,也会发生这种情况.

我确实使用--info参数运行了Gradle脚本,得到了以下提示,它在以下任务中"挂起":

构建任务'的缓存键:AppName:kaptDebugKotlin'是1a3a53e5f9b0934ab50a25c0133055f2最新检查任务':AppName:kaptDebugKotlin'耗时0.0秒.它不是最新的,因为:输入属性'source'文件/Users/username/Android/project-directory/AppName/build/generated/source/dataBinding/debug/android/databinding/layouts/DataBindingInfo.java已更改.输入属性'source'文件/Users/username/Android/project-directory/AppName/src/main/java/com/package/to/my/activity/SomeActivity.java已更改.

DataBindingInfo.java是生成的文件,其中只包含buildId:

package android.databinding.layouts;

import android.databinding.BindingBuildInfo;

@BindingBuildInfo(buildId="23567c57-d3c8-4999-bc79-6211351c7d89")
public class DataBindingInfo {}
Run Code Online (Sandbox Code Playgroud)

每次代码中的任何更改时,buildId哈希都会更改.

该项目使用了Crashlytics,但我为调试版本禁用了它.

可能是这种行为的原因是什么?

编辑:即使Android Studio关闭,我正在项目中重新生成buildId,我正在外部编辑器中进行更改并从命令行运行构建.

Adi*_*rzi 1

您可以使用以下代码禁用 Android Gradle 的自动 buildId 更新以进行调试(或其他调试变体,如果需要)。

android {
    ...
    buildTypes {
        debug {
            ext.alwaysUpdateBuildId = false
            ...
        }
    }
}  
Run Code Online (Sandbox Code Playgroud)