2014-01-17 6 views
5

私は仕事と図書館プロジェクトを持っています。 Daggerは作業プロジェクトで使用されましたが、数日前に私はDaggerをライブラリプロジェクトに使用することにしました。ライブラリプロジェクトのEclipse Javaコンパイラと注釈処理設定を構成し、必要なDagger & JavaWriter JARを追加し、ライブラリプロジェクトでModuleをデカールしました。現在、両方のプロジェクトにエラーはありません。ライブラリプロジェクトでDaggerを使用できますか?

しかし、ときに私はAndroidデバイス上でアプリケーションを実行しようとすると、それがクラッシュ:

java.lang.RuntimeException: 
Unable to create application com.iqm.smartapp.AlarmsApplication: 
java.lang.IllegalStateException: 
Module adapter for class com.iqm.library.IQMLibraryModule could not be loaded. 
Please ensure that code generation was run for this module. 

私は、これは.apt_generatedフォルダが空であるため、ライブラリプロジェクトで発生すると思います! Daggerはライブラリプロジェクトのクラスを生成しません。おそらく、いくつかのIDE /プロジェクトの設定ミスがあります。しかし、仕事とライブラリーの両方のプロジェクトで、きちんと設定をして、何が間違っているのか分かりません。

私の質問:AndroidライブラリプロジェクトでDaggerを使用することは可能ですか?そして、有効にするためには適切なEclipse構成にはコード生成が必要ですか?

ありがとうございます。

編集:私は新しいクリーンなライブラリプロジェクトを作成し、ダガーに設定し、古いものからすべてのソースファイルをコピーしました。現時点では、新しいプロジェクトのすべてが期待通りに機能します。奇妙なこと!

答えて

0

ライブラリ内でDaggerを使用しても問題はありません。ここでの問題は、必要なバインドコードが生成されていないことです。

Eclipse内でこれを有効にするには、this linkを参照してください。

+0

私はプロジェクトプロパティ、特にJavaコンパイラ、Annotation Processing&Factory Pathの少なくとも10倍の検証を受けました。彼らは正しいのですが、バインディングコードは生成されませんでした。新しいクリーンプロジェクトでは、すべて期待どおりに動作します。私は古いプロジェクトで何が壊れていたのか考えていません。 –

+0

apt設定を変更した後、プロジェクトを完全に再構築することを忘れないでください。 –

+0

@Singletonsについて、ライブラリープロジェクトと具体的なアプリケーションプロジェクトにここに記載されているように注入すると、dagger 2(そしてこれはdagger 1.xの場合も同じです)とライブラリプロジェクトに問題があるようです:http ://stackoverflow.com/q/31417795/1041533 – AgentKnopf

関連する問題