-
-
Notifications
You must be signed in to change notification settings - Fork 466
Open
Description
1、用法
//annotationProcessor无需依赖任何插件,ksp/kapt选择对应的插件即可
plugins {
// id 'kotlin-kapt'
id 'com.google.devtools.ksp' version '1.8.0-1.0.9'
}
//ksp/kapt/annotationProcessor 传参方式如下
//ksp传参方式
ksp {
arg("rxhttp_rxjava", "3.1.1")
}
//kapt传参方式
kapt {
arguments {
arg("rxhttp_rxjava", "3.1.1")
}
}
//annotationProcessor传参方式,需要在android.defaultConfig标签下使用
javaCompileOptions {
annotationProcessorOptions {
arguments = [
rxhttp_rxjava: '3.1.1',
]
}
}
dependencies {
//三选一
ksp 'com.github.liujingxing.rxhttp:rxhttp-compiler:x.x.x'
//kapt 'com.github.liujingxing.rxhttp:rxhttp-compiler:x.x.x'
//annotationProcessor 'com.github.liujingxing.rxhttp:rxhttp-compiler:x.x.x'
}对于ksp1.8.0-1.0.9版本, 1.8.0是kotlin版本,1.0.9是ksp的真实版本,如果想使用其它版本,请点击ksp版本列表
2、相同点
ksp、kapt、annotationProcessor都是注解处理器,用于在编译期间,查找相关注解,生成相关代码
3、不同点
-
annotationProcessor仅会检索Java代码,且没有用到注解时,不会工作;生成的代码在build/generated/ap_generated_sources目录下 -
kapt是Kotlin时代的产物,会检索kotlin/java代码,但kotlin的一些专有属性拿不到,如const关键字、伴生对象等在代码层面无法判断,同样的,没有用到注解时,不会工作;生成的代码在build/generated/source/kapt目录下 -
ksp则是最新的注解处理器,编译速度号称是kapt的2倍有余,且完全弥补了kapt/annotationProcessor的缺陷,但纯Java项目用不了,必需要集成kotlin;生成的代码在build/generated/ksp目录下
4、如何选择
如果你要项目未集成kotlin,那没得选,只能用annotationProcessor, 如果集成了kotlin, 则可以选择ksp或kapt, 但ksp弥补了kapt的缺陷,且编译速度更快,肯定就选择ksp,kapt是时候退出历史舞台了
Metadata
Metadata
Assignees
Labels
No labels