引入 @Inject 和kts编译器 报错

72 阅读3分钟

image.png

使用@Inject 报错怎么办呢??

@Inject 属于dagger 内容

首先需要引入dagger库

image.png

引入库

implementation("com.google.dagger:dagger:$hiltVersion") // Dagger核心库  
kapt ("com.google.dagger:dagger-compiler:$hiltVersion")// Dagger编译时注解处理器  
implementation("com.google.dagger:hilt-android:$hiltVersion")// Dagger Hilt扩展库  
ksp("com.google.dagger:hilt-android-compiler:$hiltVersion")// Dagger Hilt编译时注解处理器

kapt 和 ksp 作用是什么? 我加入为什么报错呢?

kapt 的作用

KAPT(Kotlin Annotation Processing Tool)是一种用于处理Kotlin源代码中的注解的工具。KAPT的作用是在编译时自动生成代码,根据注解的定义生成相应的辅助类或代码。

KAPT主要用于以下几个方面:

依赖注入框架(如Dagger): KAPT与依赖注入框架(如Dagger)结合使用,可以自动生成依赖注入代码。通过在Kotlin类或构造函数上使用特定的注解,KAPT可以解析这些注解并生成相应的依赖注入代码,从而简化依赖注入的配置和使用。

数据库框架(如Room): KAPT可与数据库框架(如Room)一起使用,自动生成用于访问数据库的代码。通过在Kotlin类或方法上使用注解,KAPT可以生成用于创建数据库、定义数据访问对象(DAO)以及执行数据库操作的代码。

序列化/反序列化框架: KAPT可与序列化/反序列化框架(如Moshi、Gson)结合使用,自动生成用于将对象转换为JSON或从JSON转换为对象的代码。通过在Kotlin类或属性上使用注解,KAPT可以生成用于序列化和反序列化的代码,简化了处理数据转换的过程。

其他代码生成任务: 除了上述应用之外,KAPT还可用于生成其他类型的代码,例如基于注解的路由框架、代码生成器等。通过定义自定义注解并使用KAPT处理它们,你可以根据自己的需求自动生成特定的代码。

ksp

"KSP"是"Kotlin Symbol Processing"的缩写,是一种用于处理Kotlin源代码中符号(Symbol)的注解处理工具。

Android KSP是Google发布的一个实验性项目,旨在提供更高效和可扩展的Kotlin注解处理器。它是KAPT(Kotlin Annotation Processing Tool)的替代方案,使用KSP可以更快地处理注解,并提供更好的IDE支持和编译性能。

Android KSP的主要作用包括:

注解处理器: Android KSP可以用于创建自定义注解处理器。你可以定义自己的注解,然后使用KSP编写处理器来处理这些注解。通过处理器,你可以在编译时生成额外的代码、执行静态分析或生成资源等。

依赖注入框架: KSP可以与依赖注入框架(如Dagger)一起使用。通过定义自定义注解,并编写相应的处理器,你可以实现自动生成依赖注入代码的功能。

生成辅助代码: 使用KSP,你可以编写处理器来生成与你的应用程序逻辑相关的辅助代码。这可以帮助你减少手动编写重复的代码,并简化开发流程。

Android KSP相较于传统的KAPT具有更好的编译性能和IDE支持,它采用了更先进的处理方式,可以提供更快的注解处理速度和更好的错误报告。

请注意,Android KSP目前仍处于实验性阶段,可能存在一些限制和变化。你可以通过访问Android KSP的GitHub存储库获取更多信息和示例。此外,确保在使用Android KSP之前阅读相关文档和教程,以了解其最新的使用方法和注意事项。

为什么加入报错

在 根目录build.gradle 添加插件引入地址

  • id("com.google.devtools.ksp") version "1.9.22-1.0.17" apply false image.png

添加使用插件

  • id("com.google.devtools.ksp") image.png

在同步项目后效果

发现使用 都是要ksp 注释就可以了,所以kapt就被我放弃了

image.png

最后 @Inject 也完美了,啦啦啦 image.png