importcom.google.devtools.ksp.processing.*importcom.google.devtools.ksp.symbol.*classParcelizeProcessor(privatevalcodeGenerator:CodeGenerator,privatevallogger:KSPLogger):SymbolProcessor{overridefunprocess(resolver:Resolver):List<KSAnnotated>{// 获取所有被 @Parcelize 注解的类valsymbols=resolver.getSymbolsWithAnno...
最好是让ksp要求的版本与指定的Kotlin版本匹配或者差距较小,否则可能会有问题。dependencies中的ksp指定的是KSP processor,对于有些库可能注解和定义和KSP的processor可能会在同一个包里,那么写一句就够了,如Room的,就一句:ksp 'androidx.room:room-compiler:2.6.1'。 如果是自定义的processor,需要为processor单独建...
最好是让ksp要求的版本与指定的Kotlin版本匹配或者差距较小,否则可能会有问题。dependencies中的ksp指定的是KSP processor,对于有些库可能注解和定义和KSP的processor可能会在同一个包里,那么写一句就够了,如Room的,就一句:ksp 'androidx.room:room-compiler:2.6.1'。 如果是自定义的processor,需要为processor单独建...
dependencies中的ksp指定的是KSP processor,对于有些库可能注解和定义和KSP的processor可能会在同一个包里,那么写一句就够了,如Room的,就一句:ksp ‘androidx.room:room-compiler:2.6.1’。 如果是自定义的processor,需要为processor单独建一个library module,配置ksp库为依赖即可: // KSP processor module build.gr...
KSP是一个全新的工具,旨在帮助Kotlin开发者构建轻量级编译器插件。它提供的功能类似于KAPT,但速度提高了2倍。更重要的是,KSP可以直接访问Kotlin编译器功能,从而更好地支持各种编译场景。在开发过程中,KSP充分考虑了多平台兼容性。这意味着无论您是在Windows、Linux还是Mac OS上开发,KSP都能为您提供稳定、高效的支持...
KSP 正是在这个背景下诞生的,它基于Kotlin Compiler Plugin(简称KCP) 实现,不需要生成额外的 stub,编译速度是 KAPT 的 2 倍以上 KSP 与 KCP Kotlin Compiler Plugin在 kotlinc 过程中提供 hook 时机,可以再次期间解析 AST、修改字节码产物等,Kotlin 的不少语法糖都是 KCP 实现的,例如data class、@Parcelize、ko...
首先在根项目的gradle脚本里添加ksp的插件 接下来在你项目模块的顶部引入KSP 最后我们加入依赖就可以使用DeepReCopy了 库的使用介绍 我们在导入了库之后就可以在需要被深拷贝的类上加@EnhancedData,但是注意,UserInfo也需要深拷贝,因此它需要注解@EnhancedData,不过不用担心,对于Kotlin自己的类我们会有其他办法进行深拷贝...
KSP是什么 KSP,全称Kotlin Symbol Processing,我的翻译是kotlin符号处理程序,是KAPT(Kotlin Annotation Processor Tool)的下一代替代品。功能和KAPT差不多,也是方便处理注解、生成代码的,但是性能会高很多。 开始尝试KSP 不管是官网还是内网,关于KSP的使用方法都很模糊。官网提供了各种API文档,也提供了最基本的一个示例...
最后别忘了在resources/META-INF/services文件夹下添加com.google.devtools.ksp.processing.SymbolProcessorProvider文件。 其中按行书写KSP的调用类即可。 目前存在的问题 目前由于Android Gradle Plugin (AGP)没有正确识别1.8.21-1.0.11版本的KSP生成的代码,会出现可以编译但是编辑相关代码时红线error的问题。
ksp是官方提供的用来解析Kotlin文件的工具,这里我用它来实现解析Kotlin项目,自动生成UML类图的功能(如上图所示)。 网上包括外网所有的ksp介绍都是在Android Studio中使用通过gradle配置,因为我想用ksp解析任意项目,而不是集成到某个项目里面,所以我研究了一下通过命令行调用的方式。