私はgradlew(4.10.2)+ dagger(2.18)を使用して奇妙な問題に直面しています。
問題は私が電話したときです:
./gradlew :app:compileDebugAndroidTestKotlin
ビルドが失敗します:
タスク:Common:compileDebugJavaWithJavacが失敗しました
/CommonModule_ProvidesGsonFactory.Java:6:エラー:パッケージjavax.annotation.processingが存在しませんimport javax.annotation.processing。Generated;
/CommonModule_ProvidesGsonFactory.Java:8:エラー:シンボルが見つかりません@Generated(
しかし、タスクを実行すると from Android Studio の場合、タスクは成功し、@Generated
は失敗します短剣生成クラスに存在します。
@Generated
を使用した./gradlew
アノテーションを回避するためのヒントはありますか?
ダガーはauto-common
のGeneratedAnnotations
は、どの@Generated
使用する注釈。これは、クラスパスに基づいて行われます。
これは、アノテーションプロセッサの実行中にjavax.annotation.processing.Generated
は使用可能であり、ジェネレーターで使用されますが、結果のファイルが別のタスクでコンパイルされると、クラスパス上に存在しなくなります。
考えられる原因は、新しいバージョンのJDKを使用してコードが生成され、インクリメンタルビルドが無効であり、完全な「クリーン&再ビルド」が必要であるか、Java言語レベルに問題がある注釈プロセッサはJava 9+で実行されますが、AndroidはJava 8以下としてコンパイルされます。