跳转至

Gradle 构建修复

增量修复 Android 和 Kotlin Multiplatform 项目的 Gradle 构建及编译错误。

步骤 1:检测构建配置

识别项目类型并执行合适的构建:

指示器 构建命令
build.gradle.kts + composeApp/(KMP) ./gradlew composeApp:compileKotlinMetadata 2>&1
build.gradle.kts + app/(Android) ./gradlew app:compileDebugKotlin 2>&1
带模块的 settings.gradle.kts ./gradlew assemble 2>&1
已配置 Detekt ./gradlew detekt 2>&1

同时检查 gradle.properties 和 local.properties 的配置。

步骤 2:解析和分组错误

  1. 运行构建命令并捕获输出
  2. 分离 Kotlin 编译错误和 Gradle 配置错误
  3. 按模块和文件路径分组
  4. 排序:先配置错误,然后按依赖顺序排列编译错误

步骤 3:修复循环

对于每个错误:

  1. 读取文件 — 错误行周围的完整上下文
  2. 诊断 — 常见类别:
  3. 缺少 import 或未解析的引用
  4. 类型不匹配或不兼容类型
  5. build.gradle.kts 中缺少依赖
  6. Expect/actual 不匹配(KMP)
  7. Compose 编译器错误
  8. 最小修复 — 解决错误的最小变更
  9. 重新运行构建 — 验证修复并检查新错误
  10. 继续 — 处理下一个错误

步骤 4:护栏

出现以下情况时,停止并让用户确认: - 修复引入的错误比解决的更多 - 尝试 3 次后同一错误仍然存在 - 错误需要添加新依赖或修改模块结构 - Gradle sync 本身失败(配置阶段错误) - 错误位于生成代码中(Room、SQLDelight、KSP)

步骤 5:摘要

报告内容: - 已修复的错误(模块、文件、说明) - 剩余错误 - 引入的新错误(应为零) - 建议的下一步

常见 Gradle/KMP 修复

错误 修复
commonMain 中的未解析引用 检查依赖是否位于 commonMain.dependencies {} 中
没有 actual 的 Expect 声明 为每个平台源集添加 actual 实现
Compose 编译器版本不匹配 在 libs.versions.toml 中使 Kotlin 和 Compose 编译器版本保持一致
重复类 使用 ./gradlew dependencies 检查冲突的依赖
KSP 错误 运行 ./gradlew kspCommonMainKotlinMetadata 重新生成
配置缓存问题 检查不可序列化的任务输入

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC