讲师中心 微信公众号
AI工具推荐 视频效率加速

Gradle在Android项目中怎么配置KSP

风芳姑娘_6720

风芳姑娘_6720

发布时间:2026-11-05 13:23:36

|

232人浏览过

|

来源于php中文网

原创

Gradle 8.0+ 中启用 KSP 插件必须显式声明 version 并设 apply false,模块级需同时启用 Kotlin 和 KSP 插件且顺序正确,AGP ≥ 8.4,KSP 与 Kotlin、AGP 版本须严格匹配。

gradle在android项目中怎么配置ksp

Gradle 8.0+ 中启用 KSP 插件必须声明 version 并 apply false

Gradle 8.0 起插件应用策略收紧,id("com.google.devtools.ksp") 不能直接 apply true 在根项目中,否则会报 Plugin with id 'com.google.devtools.ksp' not found 或版本冲突。必须在 gradle/libs.versions.toml 或根 build.gradle.kts 的 pluginManagement 块里显式声明版本,并设为 apply false。

当前(2026年10月)稳定兼容的组合是:kotlin 版本 2.3.20 对应 ksp 版本 2.3.20-1.0.29(注意后缀不是随机的,1.0.29 是 KSP 自身迭代号)。你可以在 KSP GitHub Releases 页面确认最新匹配对。

  • 在 gradle/libs.versions.toml 中添加:
    [versions]
    ksp = "2.3.20-1.0.29"
    kotlin = "2.3.20"
    
    [plugins]
    ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
  • 或在根 build.gradle.kts 的 pluginManagement 中硬编码:
    pluginManagement {
        repositories {
            mavenCentral()
            gradlePluginPortal()
            maven { setUrl("https://maven.aliyun.com/repository/gradle-plugin") }
        }
        plugins {
            id("com.google.devtools.ksp") version "2.3.20-1.0.29" apply false
        }
    }

模块级 build.gradle.kts 必须同时启用 KSP 和 Kotlin 插件

KSP 不是独立构建阶段,它依赖 Kotlin 编译器前端输出的符号信息。如果只加 id("com.google.devtools.ksp") 而没启用 org.jetbrains.kotlin.android(或 kotlin.jvm),KSP 会静默跳过处理,不报错也不生成代码——这是最常被忽略的“假成功”场景。

Android Control
Android Control

通过命令行工具(uiautomator、screencap、input、am)控制安卓设备。优先尝试非 root 执行,失败后自动回退至 root...

下载
  • 模块级配置必须包含两者:
    plugins {
        alias(libs.plugins.android.application) // or android.library
        alias(libs.plugins.kotlin.android)
        alias(libs.plugins.ksp) // ← 这行不能少,且必须在 kotlin 插件之后(顺序敏感)
    }
  • 若用传统写法(非 Version Catalog),确保:
    plugins {
        id("com.android.application")
        id("org.jetbrains.kotlin.android")
        id("com.google.devtools.ksp")
    }
  • Android Gradle Plugin(AGP)版本需 ≥ 8.4,否则 ksp 插件可能无法识别 androidx.room:room-compiler 等工件中的 KSP 处理器入口。

ksp() 依赖写法和 kapt() 不能共存于同一模块

一个模块里同时存在 kapt 和 ksp 依赖时,Gradle 仍会为所有 Kotlin 源文件生成 Java stub,KSP 的性能优势完全失效。迁移必须彻底——要么全 KSP,要么保留 kapt 但放弃提速。

  • Room 示例(正确):
    dependencies {
        implementation(libs.androidx.room.runtime)
        implementation(libs.androidx.room.ktx)
        ksp(libs.androidx.room.compiler) // ← 不是 annotationProcessor,也不是 kapt
    }
  • 错误写法(会导致 stub 生成):
    dependencies {
        kapt(libs.androidx.room.compiler) // ❌ 即使只留这一行,也会触发 stub
        ksp(libs.androidx.room.compiler) // ❌ 二者并存 = 白配
    }
  • 第三方库如 moshi、dagger-hilt 需换用 KSP 专用坐标,例如 com.squareup.moshi:moshi-kotlin-codegen 已废弃,应改用 com.squareup.moshi:moshi-kotlin + ksp(...)。

同步失败时优先检查 Kotlin / KSP / AGP 三者版本锁死关系

Gradle 同步卡住、报 java.lang.NoClassDefFoundError: com/google/devtools/ksp/symbol/KSAnnotated 或 Could not resolve all files for configuration ':app:kspClasspath',90% 是版本链断裂。KSP API 是二进制不兼容的,symbol-processing-api:2.3.20-1.0.29 只能被 kotlin-compiler-embeddable:2.3.20 加载。

  • 验证方式:运行 ./gradlew --version 确认 Gradle 版本 ≥ 8.7;再检查 libs.versions.toml 中 kotlin、ksp、agp 三者是否来自同一发布周期(官方推荐配对表见 KSP Compatibility Matrix)。
  • 常见断裂点:
    • agp = "8.7.0" + kotlin = "2.3.20" + ksp = "2.3.20-1.0.28" ✅
    • agp = "8.6.0" + kotlin = "2.3.20" + ksp = "2.3.20-1.0.29" ❌(1.0.29 需要 AGP 8.7+)
  • 阿里云镜像必须覆盖 pluginManagement.repositories 和 dependencyResolutionManagement.repositories 两处,缺一不可,否则 KSP 的 symbol-processing-api 依赖可能拉取失败。

真正卡住的地方往往不是语法,而是三个版本数字没对齐——建议把 kotlin、ksp、agp 的版本号贴在 IDE 侧边栏便签上,每次升级前先查兼容矩阵。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

相关专题

更多
Kotlin协程编程与Spring Boot集成实践
Kotlin协程编程与Spring Boot集成实践

本专题围绕 Kotlin 协程机制展开,深入讲解挂起函数、协程作用域、结构化并发与异常处理机制,并结合 Spring Boot 展示协程在后端开发中的实际应用。内容涵盖异步接口设计、数据库调用优化、线程资源管理以及性能调优策略,帮助开发者构建更加简洁高效的 Kotlin 后端服务架构。

391

2026.02.12

Java Kotlin协程与异步编程实战
Java Kotlin协程与异步编程实战

本专题围绕 Kotlin 协程与异步编程展开,讲解挂起函数、协程作用域、异步任务调度及并发控制方法。通过实际项目案例,帮助开发者提升后端服务性能,实现高效异步任务处理与稳定性保障。

179

2026.04.13

Kotlin Android开发教程大全
Kotlin Android开发教程大全

系统讲解 Google 官方推荐的 Android 开发首选语言 Kotlin 的核心知识与工程实践,涵盖 Kotlin 简洁语法(空安全/数据类/扩展函数/解构声明/作用域函数)与 Java 互操作、集合操作与函数式编程、协程(Coroutines)异步编程(suspend/launch/async/Flow)、Jetpack Compose 声明式 UI 开发(状态管理/组合函数/导航/动画)、MVVM / MVI 架构设计与 Vi

288

2026.06.03

android开发三大框架
android开发三大框架

android开发三大框架是XUtil框架、volley框架、ImageLoader框架。本专题为大家提供android开发三大框架相关的各种文章、以及下载和课程。

922

2023.08.14

android是什么系统
android是什么系统

Android是一种功能强大、灵活可定制、应用丰富、多任务处理能力强、兼容性好、网络连接能力强的操作系统。本专题为大家提供android相关的文章、下载、课程内容,供大家免费下载体验。

2767

2023.08.22

android权限限制怎么解开
android权限限制怎么解开

android权限限制可以使用Root权限、第三方权限管理应用程序、ADB命令和Xposed框架解开。详细介绍:1、Root权限,通过获取Root权限,用户可以解锁所有权限,并对系统进行自定义和修改;2、第三方权限管理应用程序,用户可以轻松地控制和管理应用程序的权限;3、ADB命令,用户可以在设备上执行各种操作,包括解锁权限;4、Xposed框架,用户可以在不修改系统文件的情况下修改应用程序的行为和权限。

5517

2023.09.19

android重启应用的方法有哪些
android重启应用的方法有哪些

android重启应用有通过Intent、PendingIntent、系统服务、Runtime等方法。本专题为大家提供Android相关的文章、下载、课程内容,供大家免费下载体验。

725

2023.10.18

Android语音播放功能实现方法
Android语音播放功能实现方法

实现方法有使用MediaPlayer实现、使用SoundPool实现两种。可以根据具体的需求选择适合的方法进行实现。想了解更多语音播放的相关内容,可以阅读本专题下面的文章。

964

2024.03.01

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

0

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Gradle 9 主版本升级指南
Gradle 9 主版本升级指南

共0课时 | 0人学习

Gradle 安全最佳实践
Gradle 安全最佳实践

共0课时 | 0人学习

Gradle 依赖校验手册
Gradle 依赖校验手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn