web-dev-qa-db-ja.com

AndroidプロジェクトJavaおよびKotlinファイル、kaptまたはannotationProcessor?

AndroidプロジェクトミキシングJavaおよびKotlinファイルで、annotationProcessorまたはkapt、あるいはその両方を使用する必要があるかどうかを知りたいですか?

私の理解では、コード生成に注釈を使用するJavaファイルにはannotationProcessorを使用する必要があり、Kotlinにはkaptを使用する必要があります=コード生成に注釈を使用するファイル。

両方の言語が混在するプロジェクトがあり、build.gradleのすべてのannotationProcessor依存関係をkaptに置き換えただけです。驚いたことに、それはビルドされ、正しく実行されているようですが、kaptがJavaファイル...

誰かが私に説明できますか?

ありがとうございました

18
gxela

まず、Kotlin注釈処理ツール(kapt)はJavaコンパイラを使用して注釈プロセッサを実行します。プロジェクトにJavaクラスが含まれている場合、kaptが処理します Kotlinlang Androidサポート前からkaptを使用した場合は、annotationProcessorを使用することをお勧めします。

JetBrainsには素敵な 記事 kaptがどのように機能するかについての詳細があり、2015年からですが最新です。

10
UnlikePluto

Javaでは、次のようにannotationProcessor(またはapt)依存関係を指定できます。

dependencies {
  ...
  annotationProcessor "com.google.dagger:dagger-compiler:$dagger-version"
}

Kotlinでは、kotlin-kaptプラグインを追加してkaptを有効にし、annotationProcessorkaptに置き換える必要があります。

apply plugin: 'kotlin-kapt' //Must include
dependencies {
    ...
    kapt "com.google.dagger:dagger-compiler:$dagger-version"
}

それで全部です! kaptがJavaファイルとkotlinファイルの両方を処理するため、annotationProcessorの依存関係を維持する必要がないことに注意してください。

詳細: link

10
0xAliHn