You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle从4.1.3升级到4.2.1后构建出现resValues属性无法修改报错

resValues属性无法修改报错的原因与解决方案

报错产生原因

Gradle 4.2及配套的Android Gradle Plugin(AGP)4.2+版本新增了配置属性的不可变校验机制,resValues属性会在配置阶段完成后被自动标记为只读状态,禁止后续任何修改操作。

Gradle 4.1.3版本没有该校验规则,所以即使在配置阶段后修改resValues也不会触发报错,升级后如果存在配置时机错误的代码就会抛出The value for property 'resValues' cannot be changed any further异常。

绝大多数情况下该报错都是由于resValues的修改逻辑被放在了配置阶段之后的生命周期节点,比如afterEvaluate块的后半段、Task的执行逻辑内部,或者是未适配AGP 4.2+的第三方插件在配置完成后尝试修改该属性。

可行解决方案

  • 调整配置时机:将所有resValues的新增、修改逻辑移动到配置阶段的标准位置,也就是模块级build.gradle的android.defaultConfig块、对应产品风味的android.productFlavors块、对应构建类型的android.buildTypes块中,不要放在afterEvaluate、Task执行逻辑等配置完成后才会触发的代码块内。
  • 调整afterEvaluate执行顺序:如果确实需要依赖动态计算的配置值、必须在afterEvaluate中修改resValues,可以将这部分修改逻辑移动到afterEvaluate块的最前端,确保修改动作在AGP将resValues标记为只读之前完成。
  • 升级第三方插件:如果报错是由第三方插件触发的,查找对应插件是否已经发布适配AGP 4.2+的更新版本,将插件升级到兼容版本即可。
  • 临时回退版本:如果暂时没有时间调整配置逻辑,可以先将AGP版本回退到4.1.3,待修改完配置逻辑后再完成版本升级。

内容的提问来源于stack exchange,提问作者humazed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 13:15:07