私のアンドロイドプロジェクトのxmlファイルのいくつかのコード(特にDaggerモジュール)を生成するカスタムプラグインを作成しようとしています。私は生成するコードを得ることができましたが、Daggerコンポーネントで生成されたモジュールを試してみると、Daggerコンパイラは失敗します:android-aptを使用してDaggerコンパイラから生成されたコードGradle Plugin
私はエラーを示すsmall demo projectをまとめました。プラグインとアンドロイドアプリの2つのモジュールがあります(FYI:プラグインをローカルにインストールするまで、アプリのbuild.gradleにプラグイン関連のコードをコメントアウトする必要がありました)。
私がアプリケーションを再構築すると、生成されたモジュールが予想通りに表示され、ダガーコンポーネントがIJで表示されます。しかし、android-aptプラグインがdaggerコンパイラを呼び出すとき(コンパイラが見ているコードにその場所が含まれていないとき)は明らかに利用できません。
すべてのコンパイルタスクが自分の「生成」タスクに依存していることを確認しました。失敗したタスクはcompileDebugJavaWithJavac
であり、生成されたコードについて知っておく必要があります。
源を含むしようとしているために、私が持っている:それにもかかわらず
AndroidSourceSet mainSourceSet = p.android.sourceSets.getByName('main')
LOG.info("Adding directory ${outputDir} to android source set ${mainSourceSet}")
mainSourceSet.java.srcDir(outputDir)
を、私が取得:だから
Compiling with JDK Java compiler API.
C:\projects\java\android\android_plugin_demo\plugindemoapplication\src\main\java\com\bdl\plugindemoapplication\DaggerComponent.java:12: error: cannot find symbol
@Component(modules = PluginDaggerModule.class)
^
symbol: class PluginDaggerModule
C:\projects\java\android\android_plugin_demo\plugindemoapplication\src\main\java\com\bdl\plugindemoapplication\DaggerComponent.java:13: error: dagger.internal.codegen.ComponentProcessor was unable to process this interface because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
public interface DaggerComponent {
^
2 errors
、何の魔法私は私のを見て短剣コンパイラを可能にするために不足しています生成されたコード?