You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

迁移至AGP 9切换Kotlin多平台库插件后遭遇KSP配置不支持错误

迁移至AGP 9切换Kotlin多平台库插件后遭遇KSP配置不支持错误

看起来你在AGP 9迁移+Kotlin多平台的组合上踩了个实实在在的坑,我来帮你拆解下问题和可能的解决方向:

问题根源

这个错误信息已经说得很直白了:当前版本的KSP还没适配AGP 9引入的Kotlin多平台Variant API。AGP 9对Android多平台项目的变体管理逻辑做了更新,但KSP的核心配置方法addKspConfigurations()还没跟上这套新逻辑,直接导致了插件冲突。

可行的解决方向

  • 优先检查KSP与AGP/Kotlin的版本匹配
    你现在用的KSP 2.3.6,大概率是和AGP 9的适配还没完成。先确认你的Kotlin版本(AGP 9建议搭配Kotlin 1.9.20+),然后找对应版本的KSP预览版——Kotlin官方通常会在测试版里提前适配新AGP版本,注意KSP版本必须和Kotlin版本严格对应(比如Kotlin 1.9.20对应KSP 1.9.20-1.0.15这类格式)。

  • 临时降级或调整插件组合
    如果项目进度紧张,最稳妥的办法是暂时把AGP回退到8.2.x稳定版,等KSP发布正式适配AGP 9的版本后再升级。毕竟AGP 9刚推出,生态工具的适配需要时间。
    或者,你可以暂时保留com.android.library插件,同时单独引入org.jetbrains.kotlin.multiplatform插件,这种混合配置在AGP 9里大概率还能正常工作,避开那个变体API的冲突点。

  • 手动配置KSP(进阶救急方案)
    如果你不想降级,也可以尝试手动绕过KSP的自动配置逻辑,自己给每个多平台变体绑定KSP任务和依赖,示例代码如下:

    // 为Android库变体手动配置KSP
    android.libraryVariants.all { variant ->
        // 创建对应变体的KSP配置
        val kspConfig = configurations.create("ksp${variant.name.replaceFirstChar { it.uppercase() }}")
        // 添加KSP处理器依赖
        dependencies.add(kspConfig.name, "你的处理器groupId:artifactId:version")
    
        // 注册KSP任务并绑定到编译流程
        val compileTask = tasks.named("compile${variant.name.replaceFirstChar { it.uppercase() }}KotlinAndroid")
        val kspTask = tasks.register("ksp${variant.name.replaceFirstChar { it.uppercase() }}KotlinAndroid", com.google.devtools.ksp.gradle.KspTask::class.java) {
            classpath.from(kspConfig)
            source(compileTask.get().source)
            // 按需添加处理器参数、输出目录等配置
            // arguments(mapOf("key" to "value"))
        }
    
        // 让编译任务依赖KSP任务
        compileTask.get().dependsOn(kspTask)
    }
    

    这个方法需要你对Gradle任务模型有一定了解,而且可能随着AGP/KSP版本更新失效,适合临时救急。

  • 跟进官方适配进度
    Kotlin团队肯定在推进KSP对AGP 9的适配,你可以去Kotlin官方的GitHub仓库搜索相关Issue,看看有没有其他开发者遇到同样问题,或者官方有没有给出修复的时间节点。

如果你的Gradle配置里还有其他细节(比如多平台目标的具体配置、插件引入顺序),可以贴出来,说不定能找到更精准的临时补丁~

火山引擎 最新活动