我正在研究相当大的多模块Android项目,它使用数据绑定,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 {}
每次代码发生任何更改时,buildId哈希都会更改。
该项目使用Crashlytics,我为调试版本禁用了它。
这种行为可能是什么原因?
编辑:即使Android Studio关闭,我也在项目中重新生成buildId,我正在外部编辑器中进行更改并从命令行运行构建。
答案 0 :(得分:1)
您可以使用以下代码调试Android Gradle的自动buildId更新(如果需要,可以使用其他调试版本)。
android {
...
buildTypes {
debug {
ext.alwaysUpdateBuildId = false
...
}
}
}