KNOI Gradle Plugin 模块分析
模块概述
knoi-gradle-plugin
是一个为 Android 和 Kotlin Multiplatform 项目提供 KNOI 支持的 Gradle 插件。它主要负责以下功能:
- 依赖注入:动态注入 KNOI 注解、处理器和核心库的依赖。
- 配置生成:生成 KSP 参数文件,供 KSP 处理器使用。
- 任务注册:注册自定义任务(如
BinariesPublishForbiddenTask
)。
核心文件
KnoiPlugin.kt
:插件入口,注册扩展和任务。KnoiExtension.kt
:定义 Gradle 扩展配置。InjectKnoiDependencies.kt
:处理通用项目的依赖注入。InjectAndroidKnoiDependencies.kt
:处理 Android 项目的依赖注入。BinariesPublishForbiddenTask.kt
:定义禁止发布二进制文件的任务。
主要流程
graph TD
A[KnoiPlugin.apply] --> B[创建KnoiExtension]
B --> C[检测Android项目]
C --> D[注入Android配置]
B --> E[检测Kotlin Multiplatform项目]
E --> F[注入KNOI配置]
F --> G[生成KSP参数]
F --> H[注册任务]
G --> I[写入配置文件]
H --> J[注册BinariesPublishForbiddenTask]
D --> K[添加Android KSP依赖]
K --> L[注入Android配置]
关键逻辑
1. 插件入口 (KnoiPlugin.kt
)
apply
方法 :- 创建
KnoiExtension
扩展配置。 - 检测 Android 项目并调用
injectAndroidConfig
。 - 检测 Kotlin Multiplatform 项目并调用
injectKNOIConfig
。 - 在项目评估完成后,生成 KSP 参数并注册任务。
- 创建
2. 依赖注入 (InjectKnoiDependencies.kt
)
- KSP 插件检查:确保项目已应用 KSP 插件。
- 依赖注入 :
- 为支持的平台(Android JVM 和 Native)配置 KSP 依赖。
- 添加 KNOI 注解和处理器依赖。
- KSP 参数配置:通过配置文件传递参数给 KSP 处理器。
- 版本管理 :从
version.txt
读取版本号,支持调试模式和发布模式。
3. 任务注册 (KnoiPlugin.kt
)
BinariesPublishForbiddenTask
:- 如果是二进制模块,注册该任务以防止二进制文件发布。
- 任务依赖于
generateMetadataFileForOhosArm64Publication
。
4. Android 支持 (InjectAndroidKnoiDependencies.kt
)
- KSP 依赖注入:为 Android 项目添加 KSP 依赖。
- 配置注入:在项目评估完成后注入 Android 配置。
总结
knoi-gradle-plugin
模块通过 Gradle 插件机制,为 Android 和 Kotlin Multiplatform 项目提供了 KNOI 的集成支持。其核心功能包括依赖注入、配置生成和任务注册,确保了 KNOI 的灵活性和可扩展性。