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

AGP4.1+Gradle6.5运行插件报错:无法查询无可用值的属性

问题根因

该问题是AGP 4.1与Gradle 6.5版本组合下的已知惰性属性求值时机问题:

  • Gradle 6.x的惰性属性机制要求,任务输出属性必须在对应任务执行完成后才能读取值,否则会抛出无值异常。本次报错就是配置阶段提前读取了还未执行的任务输出属性导致的。
  • 你的iLintCheck任务在配置阶段就尝试解析:business:product:card:debugRuntimeClasspath的全量依赖,此时packageDebugRenderscript、processDebugManifest等上游任务还未执行,它们的headersDir、manifestOutputFile属性均未完成赋值,触发报错。
  • 远程调试时正常运行属于偶然现象:调试断点拖慢了配置阶段的执行节奏,刚好在属性被读取前,对应的上游任务已经完成了执行赋值,不代表逻辑本身没有问题。

解决方法

方案1:显式声明任务依赖(推荐)

给iLintCheck任务添加上游任务依赖,保证属性读取前所有依赖任务已经执行完成,在模块的build.gradle中添加如下配置即可:

tasks.named("iLintCheck") {
    dependsOn ":common:base:packageDebugRenderscript"
    dependsOn ":thirdpart:multitype:processDebugManifest"
    // 后续如果出现其他模块的同类报错,继续添加对应任务的依赖即可
}

方案2:调整属性读取时机

修改iLintCheck自定义插件的逻辑,把读取debugRuntimeClasspath的代码从配置阶段迁移到执行阶段,也就是放到doFirst闭包或者标注了@TaskAction的任务执行方法中,避免配置阶段提前对惰性属性求值。

方案3:版本升级(可选)

该类惰性属性求值时机的兼容性问题已经在AGP 7.0+、Gradle 7.0+的版本组合中被官方修复,如果项目允许版本升级,升级到对应版本也可以彻底解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:04