执行./gradlew build --stacktrace可强制输出完整Java异常堆栈,定位具体方法和行号;配合--info或--debug展开Gradle内部流程,需重点关注“Caused by”嵌套异常及堆栈底部的根因(如Read timed out),并关闭AS日志过滤以显示全部信息。

Gradle构建失败时怎么看到完整堆栈?
默认情况下,Gradle会隐藏大部分堆栈信息,只显示“Execution failed for task”这种概括性提示。要看到真正有用的错误源头(比如哪一行代码抛了NullPointerException、哪个插件的哪个类加载失败),必须主动开启详细日志模式。
- 在终端执行
./gradlew build --stacktrace:强制输出 Java 异常堆栈,定位到具体方法和行号 - 加
--info或--debug可进一步展开 Gradle 内部执行流程,比如哪个Configuration解析失败、哪个Repository返回 404 - Android Studio 里点击 “Toggle full stack trace”(右下角小图标)也能临时展开,但不如命令行稳定——尤其当错误发生在配置阶段(configuration phase)时,IDEA 有时根本不会触发该按钮
为什么--stacktrace有时还是看不到关键信息?
因为 Gradle 的错误分层很明确:顶层是任务失败,但真正原因可能藏在“Caused by”之后的嵌套异常里。比如你看到:
Execution failed for task ':app:mergeDebugResources'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
> Could not download okhttp-android.jar (com.squareup.okhttp3:okhttp-android:4.12.0)
> Could not get resource 'https://repo.maven.apache.org/.../okhttp-android-4.12.0.jar'
> Read timed out
这里真正的线索是最后一行的 Read timed out,说明是网络问题,不是代码或依赖声明写错了。
- 永远从堆栈底部往上读,重点关注带
Caused by的行 - 如果用了 AGP 8.0+,某些错误会被包装成
DefaultLenientConfiguration$Artifact这类内部类名,别被名字吓住——它只是表示“下载产物失败”,本质还是网络或仓库配置问题 -
--stacktrace不会显示 HTTP 请求头或 DNS 解析过程,这类链路级问题得靠--debug配合抓包工具(如tcpdump)或curl -v手动验证 URL
Android Studio 里怎么看堆栈不被自动折叠?
AS 默认把长日志按模块折叠,尤其是 :app:compileDebugJavaWithJavac 这类编译任务,点开后经常只看到“Compilation failed”几个字,底下堆栈被收起来了。
- 在 Build Output 窗口右上角,关闭
Filter tasks和Hide warnings(这两个开关默认开启) - 勾选
Show all messages,否则org.gradle.api.tasks.TaskExecutionException这类底层异常会被过滤掉 - 如果日志一闪而过,立刻按
Ctrl+Shift+Alt+U(Windows/Linux)或Cmd+Shift+Option+U(macOS)打开 “Build” 工具窗口并固定它,避免被新构建覆盖
容易忽略的堆栈陷阱:Gradle 8.4+ 的静默截断
Gradle 8.4 起强化了配置阶段(configuration phase)校验,很多过去能跑通的脚本现在会直接跳过错误、不报任何异常,或者只在 --debug 下漏出一句 Cannot configure task 'xxx' after it has been resolved。
- 这类问题不会出现在常规
--stacktrace里,必须加--debug并搜索WARNING或SKIPPED - 常见于自定义
tasks.register后又用project.afterEvaluate去修改它——Gradle 8.4+ 直接忽略,不报错也不生效 - 如果你改了
buildSrc或 Kotlin DSL 的tasks.named("xxx").configure,却没看到预期效果,先检查--debug日志里有没有ConfigurationResolutionException


















