Kotlin の generateStubs 設定とは何ですか? 質問する

Kotlin の generateStubs 設定とは何ですか? 質問する

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 = trueJavaと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")]
}

例 :

Kotlin (1.1.50) アノテーションプロセッササポート付き Dagger2 の例 Gradle ビルド

おすすめ記事