android - Gradle 无法处理生成的代码更改
问题描述
我的设置:
- 安卓 Gradle 插件 3.5.0
- 升级到 5.5.1
- 100 多个 Gradle 模块
- 大量生成的代码(主要是 Dagger + 数据绑定)
当我签出导致生成代码更改的分支时,通常我必须清除整个 .gradle/caches 目录才能使构建成功。否则 gradle 构建系统会尝试解析一些旧的生成代码。
clean
不要cleanBuildCache
帮忙。另附注:到目前为止,我一直是一个快乐的用户,但是自从我们将工具更新到这些版本之后,构建缓存就停止了正常工作。有小费吗?
编辑:请注意,并非生成的代码中的每一次更改都会破坏缓存。到目前为止,这对我来说是不确定的。
解决方案
免责声明:我是一名 java 开发人员,不熟悉 Android 插件
clean 任务不会从构建缓存中删除条目。缓存键源自任务输入和输出。如果您没有正确声明所有任务输入,那么缓存键将不正确
如果(例如)您的“生成”任务需要一个模板、一些 xml 和一个系统属性来生成源,您需要将所有三个(模板、xml 和 syspop)声明为“生成”任务的任务输入。显然,任何输出目录都需要声明为任务输出。
最后要考虑的是“生成”任务已正确连接到 Gradle 的DAG中。例如,“compileJava”任务应该“dependsOn”你的“generate”任务(或任何与 android 等效的任务)
推荐阅读
- python - python乌龟没有属性去
- javascript - 选择字符串中的值
- xamarin.forms - Xamarin Forms (VS2019) + iOS Intents UI:如何从扩展访问资产 (IntentsUI)
- jquery - 未捕获的 SyntaxError:jQuery 中的意外标记“(”
- python - 如何使用 output.py 以正确的格式查看文本文件?
- sql - 找到确切的重叠时间
- c# - Mathf.Pow 在 C# 上显示无穷大
- mysql - SQL:子查询中的列没有出现
- sql - SQL 日期过滤器:当开始日期 = 结束日期时返回结果
- java - 根据 StackedBarChart 中的条件对值进行分类和更改颜色