首页 > 解决方案 > Gradle 无法处理生成的代码更改

问题描述

我的设置:

当我签出导致生成代码更改的分支时,通常我必须清除整个 .gradle/caches 目录才能使构建成功。否则 gradle 构建系统会尝试解析一些旧的生成代码。

clean不要cleanBuildCache帮忙。另附注:到目前为止,我一直是一个快乐的用户,但是自从我们将工具更新到这些版本之后,构建缓存就停止了正常工作。有小费吗?

编辑:请注意,并非生成的代码中的每一次更改都会破坏缓存。到目前为止,这对我来说是不确定的。

标签: androidgradleandroid-databinding

解决方案


免责声明:我是一名 java 开发人员,不熟悉 Android 插件

clean 任务不会从构建缓存中删除条目。缓存键源自任务输入和输出。如果您没有正确声明所有任务输入,那么缓存键将不正确

如果(例如)您的“生成”任务需要一个模板、一些 xml 和一个系统属性来生成源,您需要将所有三个(模板、xml 和 syspop)声明为“生成”任务的任务输入。显然,任何输出目录都需要声明为任务输出。

最后要考虑的是“生成”任务已正确连接到 Gradle 的DAG中。例如,“compileJava”任务应该“dependsOn”你的“generate”任务(或任何与 android 等效的任务)


推荐阅读