を注釈付きクラスにアクセスする:AとB(私はここで注釈プロセッサと注釈モジュールが含まれていない)Androidの注釈プロセッサ私は2モジュールを搭載したアンドロイドStudioプロジェクト抱えている様々なモジュールから
Bが依存します
BはAndroidライブラリモジュールで、Aは単純なJavaライブラリモジュールです。私はまた、モジュールB上の注釈プロセッサを抱えている
私が直面してる問題がある:
は、私が注釈付きに配置されたファイルの両方のモジュールに基づいて、いくつかのコードを生成したい - AとB.この問題は、Annotation Processorの動作(ソースコードファイル* .javaのみで、コンパイルされた* .classのものではない)から発生します。残念ながら、Bのコンパイル時に、Annotation ProcessorはAからのソースファイルにアクセスできません。
唯一のことは、一種の解決策、モジュールAからの注釈付きクラスを含むフォルダをソースセットとしてモジュールBに含めることでした。この方法で、モジュールBはコンパイル時にこれらのファイルにアクセスできます。問題を解決
sourceSets {
main {
java {
srcDirs = ['src/main/java', '../module_A/src/main/java/path/to/annotated/classes/folder']
}
}
}
- 今注釈プロセッサは、両方のモジュールからすべての注釈付きのクラスへのアクセス権を持っていますが、...
残念ながら、それは別の問題を紹介し...モジュールAからのもの注釈付きクラス現在2回コンパイルされています。モジュールAのJARファイルとモジュールBのAARファイルに含まれています。
質問1:モジュールAのソースファイルにアクセスするには、Bで動作する注釈プロセッサから別の方法がありますか? (私は見つけることができたところでは、答えは... NOですが、チェック)
質問2:私は、モジュールBのAAR最終パッケージからこれらのコンパイルされたファイル(繰り返されるもの)を除外することができますどのように?
質問3:多分...それは絶対に間違ったアプローチですか?助言がありますか?
ありがとうございます!
あなたの答えのおかげで、私は少し混乱しています:現在の状態モジュールBにAにあなたの答えのための – ivtoto
感謝を依存しますが、私は少し混乱しています:現在の状態では**モジュールBすでにA **に依存しています。 'の依存{プロジェクトコンパイル(「:A」)を}'それがコンパイル依存性として定義されているように、それは、Aからコンパイルされたクラスへのアクセスを有するべきです。そして、 'getTypeElement'あなたが私の答え@ivtoto – ivtoto
を述べたが、既に'要素#getTypeElement'のドキュメントへのリンクを持っているについて、もう少し具体的ください可能性があります。私はそれを使用する例も追加しました。そこにはドキュメントがありますか、それはあなたにとっては不明ですか?たぶん、あなたはいくつかの研究を行い、おそらく追加の質問をするべきです。 – user1643723