运行--warning-mode all可查看完整弃用列表,需置于构建任务后(如./gradlew build --warning-mode all),或在gradle.properties中配置org.gradle.warning.mode=all实现持久化启用。

运行 --warning-mode all 查看完整弃用列表
Gradle 默认只显示部分警告,真正被标记为 @Deprecated 但尚未移除的 API,必须显式启用全量警告模式才能看到。直接在项目根目录执行:
./gradlew build --warning-mode all
注意:这个参数必须加在构建任务之后(如 build、assemble、configure),不能单独运行 ./gradlew --warning-mode all——那样只会输出帮助信息。
常见误区:
- 误以为
--warning-mode all是一次性开关,其实它只对当次命令生效 - 在 CI 环境中漏掉该参数,导致废弃问题被静默忽略
- 用错位置,比如写成
./gradlew --warning-mode all build(参数顺序错误,Gradle 会忽略)
org.gradle.warning.mode=all 在 gradle.properties 中持久化
如果希望每次构建都自动触发全量警告(尤其适合团队统一检查或 CI 流程),把这行加进项目根目录下的 gradle.properties:
org.gradle.warning.mode=all
这样所有 ./gradlew 命令都会默认启用全量警告,无需每次都手动加参数。
但要注意:
- 该配置仅影响当前项目,不会污染全局 Gradle 配置
- 如果项目用了多个 Gradle Wrapper 版本,低版本(如
)不支持此属性,会静默忽略 - 某些 IDE(如 Android Studio)可能缓存旧的构建配置,修改后需重启或点击
File → Reload project
为什么 --warning-mode all 有时不报错却没输出?
不是所有弃用警告都会立刻出现,取决于当前执行的构建阶段:
-
configure阶段才暴露大部分脚本级弃用(如jcenter()、compile配置) -
build或assemble才会触发插件/任务级弃用(如过时的android.applicationVariants.all) - 纯
help或tasks命令几乎不触发任何弃用检查
所以最稳妥的做法是:
- 先跑一次
./gradlew help --warning-mode all快速确认警告机制是否生效 - 再执行
./gradlew configure --warning-mode all检查脚本结构问题 - 最后用
./gradlew assembleDebug --warning-mode all覆盖完整构建链路
警告里提到的文件路径为什么找不到?
Gradle 输出的源码位置(如 build_45djmc9u5bi478od1utks361r$_run_closure1$_closure8.doCall(...:53))不是你写的 build.gradle 行号,而是 Gradle 动态生成的闭包类名和内部偏移。
真实定位方法:
- 看警告前缀,例如
Configure project :app表示问题出在app/build.gradle - 结合警告文本中的关键词(如
flavorDimensions "free")反向搜索对应模块的build.gradle - 若来自插件(如
com.android.tools.build:gradle),需查该插件文档确认是否已适配当前 Gradle 版本
真正容易被忽略的是:警告本身不阻断构建,但 Gradle 8.0+ 已移除的 API(如 jcenter())在升级后会直接报错,而不是警告。











