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:解析和分组错误¶
- 运行构建命令并捕获输出
- 分离 Kotlin 编译错误和 Gradle 配置错误
- 按模块和文件路径分组
- 排序:先配置错误,然后按依赖顺序排列编译错误
步骤 3:修复循环¶
对于每个错误:
- 读取文件 — 错误行周围的完整上下文
- 诊断 — 常见类别:
- 缺少 import 或未解析的引用
- 类型不匹配或不兼容类型
build.gradle.kts中缺少依赖- Expect/actual 不匹配(KMP)
- Compose 编译器错误
- 最小修复 — 解决错误的最小变更
- 重新运行构建 — 验证修复并检查新错误
- 继续 — 处理下一个错误
步骤 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