PAYATHON 2026

AGP 9 迁移时 KSP 报 Kotlin Multiplatform Variant API 错误怎么办?

数据小陈

结论

这条错误表明,应用 com.google.devtools.ksp 插件时,当前组合中的 Kotlin Multiplatform Variant API 不支持 KSP 调用 addKspConfigurations()。仅凭这条错误,无法断定“KSP 完全不支持 AGP 9”,也不能推断所有 AGP 9 项目都会遇到同样的问题。

错误发生在 Gradle 应用 KSP 插件的阶段,kspJvm 中声明的处理器还没有执行。因此,kspJvm 下的 arrow-optics 或 Room compiler 依赖并不是这条报错直接指出的原因。

排查步骤

  1. 确认触发错误的插件组合

    配置中同时应用了 com.android.kotlin.multiplatform.library、Kotlin Multiplatform 和 KSP。报错指向 Kotlin Multiplatform Variant API 对 addKspConfigurations() 的支持情况。可以先在临时分支中移除 KSP 插件,确认插件应用错误是否随之消失。这个操作有助于定位触发错误的组合,但不能单独证明其他配置都兼容。

  2. 核对实际使用的版本组合

    记录 AGP、Kotlin Multiplatform 和 KSP 的实际版本,并查阅对应版本的兼容说明或发布记录,重点确认是否支持 com.android.kotlin.multiplatform.library 使用的 Variant API。只有兼容说明明确支持该 API,才能据此判断升级 KSP 是否可能解决问题。当前错误没有提供 AGP 版本或兼容矩阵,因此不能仅凭报错推断某个版本已经修复。

  3. 留意失败发生在配置阶段

    当前配置里有:

    dependencies {
        add("kspJvm", libs.arrow.optics.compiler)
        add("kspJvm", libs.androidx.room.compiler)
    }

    异常发生于 Failed to apply plugin 'com.google.devtools.ksp'。应先确认 KSP 插件能否成功应用;在此之前,调整处理器依赖或生成任务配置通常无法解决这个阶段的错误。

可选处理方式

  • 使用明确支持该 Variant API 的 KSP 版本。如果兼容说明确认某个版本支持当前插件组合,可以升级后重新同步 Gradle。
  • 暂时拆分职责。如果当前版本组合没有可用的兼容方案,可以评估把需要 KSP 处理的代码移到单独模块,并只在该模块应用 KSP。是否适合拆分,取决于项目的源码集、Room 配置和处理器用法,需要结合实际模块结构调整。
  • 暂时不在受影响的模块应用 KSP。这样一来,依赖 KSP 的代码生成就无法在该模块运行。如果 Room 或 Arrow Optics 需要这些生成结果,相关功能也无法按原方式构建。

不要仅凭这条异常就断言“KSP 不支持 AGP 9”。更准确地说,当前插件组合在应用阶段遇到了 Kotlin Multiplatform Variant API 支持缺口。最终是否兼容,还需要结合实际版本和对应的兼容说明确认。

备注:内容仅供参考。