kapt 即 Kotlin annotation processing tool(Kotlin 注解处理工具)缩写。
在 Kotlin 中通过 kapt 编译器插件支持注解处理器(参见JSR 269)。
简而言之,你可以在 Kotlin 项目中使用像 Dagger 或者 Data Binding 这样的库。
应用 kotlin-kapt
Gradle 插件:
apply plugin
语法:然后在 dependencies
块中使用 kapt
配置添加相应的依赖项:
如果你以前使用 Android 支持作为注解处理器,那么以 kapt
取代 annotationProcessor
配置的使用。如果你的项目包含 Java 类,kapt
也会顾全到它们。
如果为 androidTest
或 test
源代码使用注解处理器,那么相应的 kapt
配置名为 kaptAndroidTest
和 kaptTest
。请注意 kaptAndroidTest
和 kaptTest
扩展了 kapt
,所以你可以只提供 kapt
依赖而它对生产和测试源代码都可用。
使用 arguments {}
块将参数传给注解处理器:
默认情况下,kapt 注解处理任务就会在 Gradle 中缓存。注解处理器所运行的任意代码可能不一定将输入转换为输出、可能访问与修改 Gradle 未跟踪的文件等。如果无法正确缓存在构建中使用的注解处理器,那么可以通过在构建脚本中添加以下几行来完全禁用对 kapt 的缓存,以避免对 kapt 任务造成假阳性的缓存命中:
为了提高使用 kapt 的构建速度,可以为 kapt 任务启用 Gradle Worker API。 使用 Worker API,Gradle 可以并行运行来自单个项目的独立注解处理任务,这在某些情况下会大大减少执行时间。 但是,在启用 Gradle Worker API 的情况下运行 kapt 会由于并行执行而导致内存消耗增加。
要使用 Gradle Worker API 并行执行 kapt 任务,请将此行添加到 gradle.properties
文件中:
为了减少 kapt 增量构建的时间,可以使用 Gradle 避免编译。 启用避免编译后,Gradle 可以在重新构建项目时跳过注解处理。特别是在以下情况下,将跳过注解处理:
但是,避免编译不能用于在编译类路径中发现的注解处理器,因为它们中的任何更改都需要运行注解处理任务。
要在避免编译的情况下运行 kapt:
kapt*
配置。gradle.properties
文件中添加以下行,在编译类路径中关闭对注解处理器的发现:从 1.3.30 版开始,kapt 作为实验特性支持增量注解处理。 当前,仅当所使用的所有注解处理器均为增量式时,注解处理才可以是增量式的。
从 1.3.50 版开始,默认情况下启用增量注解处理。 要禁用增量注解处理,请将以下行添加到 gradle.properties
文件中:
请注意,增量注解处理也需要启用增量编译。
Kapt 使用 Java 编译器来运行注解处理器。 以下是将任意选项传给 javac 的方式:
一些注解处理器(如 AutoFactory
)依赖于声明签名中的精确类型。默认情况下,Kapt 将每个未知类型(包括生成的类的类型)替换为 NonExistentClass
,但你可以更改此行为。将额外标志添加到 build.gradle
文件以启用在存根(stub)中推断出的错误类型:
Kapt 可生成 Kotlin 代码。是将生成的 Kotlin 源文件写入processingEnv.options["kapt.kotlin.generated"]
所指定的目录,这些文件会与主源代码一起编译。
请注意,对于所生成 Kotlin 文件,Kapt 不支持多轮处理
原文:https://www.cnblogs.com/linghu-java/p/13934992.html