Kotlin の場合とは何ですかgenerateStubs
? での設定は次のとおりですbuild.gradle
。
ここの公開文書では見つけられません:参照: kapt.html
kapt {
generateStubs = true
}
プロジェクトで をJava
使用している場合でも、追加する必要がありますか?Kotlin(1.2)
ベストアンサー1
編集:
プロジェクトでJavaとKotlin(1.2)を使用している場合でも、追加する必要があります。
いいえ、バージョン1.0.4generateStubs
注釈処理 API の新しい実験的な実装が導入されました。これで、でこれを構成する必要はありませんbuild.gradle
。
build.gradle
有効にしたい場合は、以下を追加してください:
apply plugin: 'kotlin-kapt'
generateStubs
また、設定を削除する必要がありますbuild.gradle
しかし、詳細についてはご質問のとおり、generateStubs
古い投稿はそのままにしておきます。
使用 :
dagger 2やdbflowなどのライブラリを使用するには、次kapt
のように使用します。これにより、コンパイラは必要なスタブクラスを生成できるようになります。generatestubs = true
JavaとKotlinの相互運用性が有効になっていない場合はgenerateStubs = true
、「bootstrap
」(に渡されるカスタム注釈プロセッサはjavac
、注釈データを読み込み、他の注釈プロセッサを呼び出します。)生成されたソースを参照するにはJavaコードが必要です。から
注意: 生成されたコードは常に であり、Java
ではありませんKotlin
。
スタブの生成には、すべての宣言を解決する必要があり、戻り値の型を知るには式 (関数本体または符号後のプロパティ初期化子=
) の分析が必要になることがあるため、比較的多くの作業が必要です。そのため、スタブを使用するとkapt
ビルドが多少遅くなります。スタブがデフォルトでオフになっているのはそのためです。スタブを有効にするには、ファイルに次の内容を書き込む必要がありますbuild.gradle
。
kapt {
generateStubs = true
}
仕組み:
スタブ (コンパイラによって生成された中間クラス) を使用すると、Kotlin から「生成された」ソースを参照できます。そうしないと、コンパイラは不足しているソースを参照できなくなります。
生成されたソースは に作成されます"build/generated/source/kapt/main"
。これは「build
「」は通常 IntelliJ のプロジェクト ソースから除外されますが、このソース ルートはビルド スクリプト自体にマークされます。
sourceSets {
main.java.srcDirs += [file("$buildDir/generated/source/kapt/main")]
}
例 :