鍍金池/ 教程/ Android/ Kotlin注解處理工具
Kotlin內(nèi)聯(lián)函數(shù)
Kotlin開發(fā)環(huán)境設(shè)置(Eclipse)
Kotlin調(diào)用Java代碼
Kotlin使用Ant
Kotlin編譯器插件
Kotlin相等性
Kotlin JavaScript模塊
編寫Kotlin代碼文檔
Kotlin返回和跳轉(zhuǎn)
Kotlin異常處理
Kotlin可見性修飾符
Kotlin委托
Kotlin委托屬性
Kotlin編碼約定/編碼風(fēng)格
Kotlin基礎(chǔ)語法
使用Kotlin進(jìn)行服務(wù)器端開發(fā)
Kotlin接口
Kotlin反射
Kotlin類型別名
Kotlin枚舉類
Kotlin當(dāng)前版本是多少?
Kotlin注解處理工具
Kotlin類型的檢查與轉(zhuǎn)換
Kotlin屬性和字段
Kotlin類型安全的構(gòu)建器
Kotlin相比Java語言有哪些優(yōu)點(diǎn)?
Kotlin JavaScript反射
Kotlin 是什么?
Kotlin泛型
Kotlin慣用語法
Kotlin與OSGi
Kotlin數(shù)據(jù)類型
Kotlin是面向?qū)ο筮€是函數(shù)式語言?
Kotlin動態(tài)類型
Kotlin協(xié)程
Kotlin操作符符重載
Kotlin使用Gradle
Kotlin密封類
Kotlin兼容性
Kotlin集合
Kotlin調(diào)用JavaScript
Kotlin null值安全
Kotlin函數(shù)
Kotlin開發(fā)環(huán)境設(shè)置(IntelliJ IDEA)
Kotlin嵌套類
Kotlin控制流程
Kotlin和Java語言比較
Kotlin 與 Java 語言兼容嗎?
Kotlin教程
Kotlin類和繼承
Kotlin對象表達(dá)式和對象聲明
JavaScript中調(diào)用Kotlin
Kotlin區(qū)間/范圍
Kotlin數(shù)據(jù)類
Kotlin lambda表達(dá)式
Kotlin是免費(fèi)的嗎?
Kotlin包
使用Kotlin進(jìn)行Android開發(fā)
在Java中調(diào)用Kotlin代碼
Kotlin this表達(dá)式
使用Kotlin進(jìn)行JavaScript開發(fā)
Kotlin擴(kuò)展
Kotlin解構(gòu)聲明
Kotlin注解
Kotlin使用Maven

Kotlin注解處理工具

Kotlin 插件支持注解處理器,如 DaggerDBFlow 。
為了讓它們與 Kotlin 類一起工作,需要應(yīng)用 kotlin-kapt 插件:

譯注:kapt 即 Kotlin annotation processing tool(Kotlin 注解處理工具)縮寫。

Gradle 配置

apply plugin: 'kotlin-kapt'

或者,從 Kotlin 1.1.1 起,你可以使用插件 DSL 應(yīng)用它:

plugins {
    id "org.jetbrains.kotlin.kapt" version "<要使用的版本>"
}

然后在 dependencies 塊中使用 kapt 配置添加相應(yīng)的依賴項:

dependencies {
    kapt 'groupId:artifactId:版本'
}

如果你以前使用 android-apt 插件,請將其從 build.gradle 文件中刪除,并用 kapt 取代 apt 配置的用法。如果你的項目包含 Java 類,kapt 也會顧全到它們。

如果為 androidTesttest 源代碼使用注解處理器,那么相應(yīng)的 kapt 配置名為 kaptAndroidTestkaptTest。請注意 kaptAndroidTestkaptTest 擴(kuò)展了 kapt,所以你可以只提供 kapt 依賴而它對生產(chǎn)和測試源代碼都可用。

一些注解處理器(如 AutoFactory)依賴于聲明簽名中的精確類型。默認(rèn)情況下,Kapt 將每個未知類型(包括生成的類的類型)替換為 NonExistentClass,但你可以更改此行為。將額外標(biāo)志添加到 build.gradle 文件以啟用在存根(stub)中推斷出的錯誤類型:

kapt {
    correctErrorTypes = true
}

請注意,這個選項是實(shí)驗(yàn)性的,且默認(rèn)是禁用的。

Maven 配置(自 Kotlin 1.1.2 起)

compile 之前在 kotlin-maven-plugin 中添加 kapt 目標(biāo)的執(zhí)行:

<execution>
    <id>kapt</id>
    <goals>
        <goal>kapt</goal>
    </goals>
    <configuration>
        <sourceDirs>
            <sourceDir>src/main/kotlin</sourceDir>
            <sourceDir>src/main/java</sourceDir>
        </sourceDirs>
        <annotationProcessorPaths>
            <!-- 在此處指定你的注解處理器。 -->
            <annotationProcessorPath>
                <groupId>com.google.dagger</groupId>
                <artifactId>dagger-compiler</artifactId>
                <version>2.9</version>
            </annotationProcessorPath>
        </annotationProcessorPaths>
    </configuration>
</execution>

你可以在
Kotlin 示例版本庫 中找到一個顯示使用 Kotlin、Maven 和 Dagger 的完整示例項目。

請注意,IntelliJ IDEA 自身的構(gòu)建系統(tǒng)目前還不支持 kapt。當(dāng)你想要重新運(yùn)行注解處理時,請從“Maven Projects”工具欄啟動構(gòu)建。