android - 如何调查为什么 gradle build 使用缓存的资源 ID
问题描述
如果有一个 gradle (5.4.1) 项目(插件 3.4.1) 有两种风格 (main
和other
) 使用相同的sourceSets
. 我在重命名资源 ID(在布局 XML 中)时遇到了一个问题。以下是观察结果:
Android Studio 3.4.1 没有显示任何错误并且按预期工作,即我可以从 kotlin 代码单击到布局 xml 中的 id。
重建
main
风味也可以按预期工作(没有编译错误)。重新
other
构建风味会为新 ID 提供“未解析的引用”编译错误。Gradleclean
没有帮助。但是,org.gradle.caching=false
在项目级别设置gradle.properties
确实有效(在 Gradle 同步、清理、重建之后)。这解释了为什么clean
在启用缓存时没有帮助。
仔细检查该R.java
文件,它似乎使用了一些相当旧的项目状态的 ID(可能来自存储在用户主目录中的 gradle 缓存)。现在,我可以只删除 gradle 缓存,但我宁愿找出资源 ID 更改未正确处理的原因。无论 Android Studio 以何种方式在后台运行构建,都可以正常工作,只是在执行构建/运行等时不行。
所有这些调查都需要大量的试验和错误:gradle.properties
一一切换各种设置以查看导致问题的设置,而我仍然无法找到问题的根本原因。
解决此类问题的最佳方法是什么,或者反复试验是唯一的方法?
解决方案
推荐阅读
- javascript - 如何在我的页面中显示我的请求中的数据
- vb.net - 对象未引用未设置为 vb.net 中对象的实例
- php - PHP MongoDB Regex 正在接受部分单词
- c# - 在计算机关闭时运行程序
- assembly - 如何与 CRT 静态链接
- reactjs - 通过修改(映射)redux state 的值来初始化 useState
- c# - C# 音频设备禁用
- azure - 如何使用 MS Graph 在 Azure AD B2C 中自动授予 API 权限批准
- jquery - 无法从 Ajax 正确接收 Django 中的数据
- algorithm - 如何使用哈希表确定数组中是否有两个点具有斜率k