2016-06-21 8 views
2

私はアプリケーションモジュール(私のアプリケーション)とJavaライブラリプロジェクトモジュール(api)を持っています。私はapiモジュールでdagger 2を使用したいと思います。注釈プロセッサが機能していない場合、Daggerプレフィックス付きクラス(例:DaggerApiComponent)は期待通りに生成されていません。どんな助けでも大いに感謝され、はい、私はgradleを使用しています。ダガー2をAndroidスタジオのJavaライブラリプロジェクトで使用するにはどうすればいいですか?

+0

I'amわからないように見えますが、おそらくこれはあなたの問題である:https://bitbucket.org/hvisser/android-apt/issues/18/support-java-pluginルックス'android-apt'プラグイン(アノテーションに基づいてコードを生成するためにダガーによって使用される)のように、アンドロイドモジュールのためだけに機能します。 – micha

+0

さて、なぜ、ダガー2をJavaライブラリーと呼ぶのかというと、私は答えが苦手なときにそれを見つけ出すことに近づいている。 – Bhargav

+0

** Project **に切り替えるまで、私はこの問題に数時間を費やして解決できなかった。 *生成したクラスが 'release'ビルドタイプの下にあったことを見て、見た。 'release'に切り替えると、ビルドタイプのものが魔法のように動作し始めました。 私はまた、新しいビルドツールから新しい 'annotationProcessor'を使用しています。 –

答えて

8

最後に私はこれを修正することができました。これは、apply plugin: 'com.android.application'を使用した場合にのみ、gradleのandroid-aptプラグインが利用可能になりました。したがって、com.android.applicationプラグインを使用できないJavaライブラリでは、このプラグインを適用した後にプラグインapply plugin: "net.ltgt.apt"を使用する必要があります。これは、daggerのコンパイラ依存性apt "com.google.dagger:dagger-compiler:2.0.2"を依存ブロックで使用できます。また、net.ltgt.aptが正しく動作するためにはapply plugin: "idea"が必要です。アイデアプラグインを適用しない場合、アノテーションプロセッサはダガーファクトリクラスを生成しますが、IDEのsourceSetには含まれないため、アイデアプラグインの適用を忘れてしまいます。そう最終的には私のビルドスクリプトは、この

buildscript { 
    repositories { 
     maven { 
      url "https://plugins.gradle.org/m2/" 
     } 
    } 
    dependencies { 
     classpath "net.ltgt.gradle:gradle-apt-plugin:0.6" 
    } 
} 
apply plugin: 'java' 
apply plugin: "net.ltgt.apt" 
apply plugin: "idea" 

dependencies { 
    // Dagger 2 and Compiler 
    compile 'com.google.dagger:dagger:2.0.2' 
    apt "com.google.dagger:dagger-compiler:2.0.2" 
} 
+0

ありがとう!この日の無駄な日! – JenniferG

関連する問題