問題タブ [dagger-2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 短剣はタイプパラメータフィールドを注入できません
私はアンドロイドアプリケーションに取り組んでおり、抽象クラスでパラメータ化されたタイプのフィールドを注入しようとしています: BaseListFragment
しかし、コンパイル時に次のエラーが発生します:エラー:シンボルクラスSが見つかりません
BaseFragment のコードは次のとおりです。
ここに私のサービスモジュールがあります:
BaseListFragment を拡張するクラスの例を次に示します。
パラメータ化された型を注入する方法はありますか?
よろしく、
android - Dagger 2 に依存関係を追加するときに Facebook SDK がコンパイルされない
次のように、build.gradle (アプリ) に短剣を含めました。
{compile 'com.squareup.dagger:dagger:1.2.+'
provided 'com.squareup.dagger:dagger-compiler:1.2.+'}
現在、プロジェクトを Dagger 2.0 にアップグレードし、Mockito と Espresso で単体テストを作成しようとしています。新しい依存関係は次のもので構成されています。
compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
provided 'org.glassfish:javax.annotation:10.0-b28'
プロジェクトに含まれるプロジェクトに Facebook SDK が含まれていて、次のようなエラーが発生しています。error: cannot find symbol class R
私もリポジトリとして追加しましたmaven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
ここで何が起こっているのか、そしてそれを解決する方法を理解する手助けをいただければ幸いです。
java - コンポーネントの依存関係を使用する場合のシングルトンの問題
次のコードが機能しない理由を理解するのに問題があります。
私は次のプロジェクト構造を持っています:
どこ
と
どこ
すべてを次のように初期化します。
コンパイルが行われると、次のエラーが発生します。
エラー:(11, 1) エラー: com.test.CComponent (スコープ外) はスコープ付きバインディングを参照できない場合があります: @Provides @Singleton com.test.XXX com.test.CCModule.provideXXX()
私が目指しているのは、あるコンポーネントが他のコンポーネントからバインディングを継承して、オブジェクト (シングルトン) への同じ参照を持つようにすることです。
java - コンパイル時の java.lang.NoSuchMethodError
Android プロジェクトのコンパイルに失敗しました。エラーメッセージは次のとおりです。
タスク ':mobile:_compileAppDebug' の実行に失敗しました。
java.lang.NoSuchMethodError: com.google.auto.common.MoreTypes.asTypeElements(Ljavax/lang/model/util/Types;Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableSet;
これは、Google Auto を含む多数のライブラリを指定するモジュールの gradle 依存関係です。
依存関係を調べたとき、欠落しているメソッドが存在する場所であるため、Googleの自動値が必要だと思いましたが、提供されたものを追加しても問題は解決しません。
プロジェクト gradle ファイルには retrolambda プラグインが含まれています
どの依存関係がコンパイルエラーを引き起こしているかを特定するのを手伝ってくれる人はいますか? 興味深いことに、gradle ファイルを空のプロジェクトにコピーすると、すべて正常に動作します。
java - Dagger 2 のコンポーネント (オブジェクト グラフ) のライフサイクルを決定するものは何ですか?
私は、Dagger 2 のスコープ、特にスコープ グラフのライフサイクルについて頭を悩ませようとしています。スコープを離れるときにクリーンアップされるコンポーネントをどのように作成しますか。
Android アプリケーションの場合、Dagger 1.x を使用すると、通常、アプリケーション レベルにルート スコープがあり、これを拡張してアクティビティ レベルで子スコープを作成します。
子スコープは、参照を保持している限り存在し、この場合はアクティビティのライフサイクルでした。onDestroy で参照を削除することで、スコープ付きグラフを自由にガベージ コレクションできるようになりました。
編集
ジェシー・ウィルソンは最近、測定カルパを投稿しました
Dagger 1.0 はスコープ名をひどく台無しにしました... @Singleton アノテーションはルート グラフとカスタム グラフの両方に使用されるため、実際のスコープが何であるかを把握するのは困難です。
私が読んだり聞いたりした他のすべてのことは、スコープの動作を改善するダガー 2 を指していますが、違いを理解するのに苦労しています。以下の @Kirill Boyarshinov のコメントによると、コンポーネントまたは依存関係のライフサイクルは、通常どおり、具体的な参照によって決定されます。では、Dagger 1.x と 2.0 のスコープの違いは、純粋にセマンティックの明確さの問題なのでしょうか?
私の理解
ダガー 1.x
依存関係はどちら@Singleton
かでした。これは、ルート グラフとサブグラフの依存関係にも同様に当てはまり、依存関係がどのグラフにバインドされているかについてあいまいさをもたらしました (「In Dagger are Singletons within the subgraph cached or will they always be recreated when a new activity sub-graphs.構築されていますか?)
ダガー2.0
カスタム スコープを使用すると、意味的に明確なスコープを作成できますが、機能的に@Singleton
は Dagger 1.xに適用するのと同等です。
要点は、使用すると、このコンポーネントのライフサイクルに関する意図@PerActivity
を伝えることができますが、最終的にはいつでもどこでもコンポーネントを使用できるということです。Dagger の唯一の約束は、特定のコンポーネントに対して、スコープ アノテーション付きメソッドが単一のインスタンスを返すことです。また、Dagger 2 はコンポーネントのスコープ アノテーションを使用して、モジュールが同じスコープ内またはスコープ外の依存関係のみを提供することを確認していると思います。
要約すれば
依存関係は依然としてシングルトンまたは非シングルトンのいずれか@Singleton
ですが、現在はアプリケーション レベルのシングルトン インスタンスを対象としており、カスタム スコープは、より短いライフサイクルでシングルトンの依存関係に注釈を付けるための推奨される方法です。
開発者は、不要になった参照を削除することによってコンポーネント/依存関係のライフサイクルを管理する責任があり、コンポーネントが意図したスコープで一度だけ作成されるようにする責任がありますが、カスタム スコープ アノテーションにより、そのスコープを簡単に識別できます。 .
64,000 ドルの質問*
Dagger 2 のスコープとライフサイクルに関する私の理解は正しいですか?
* 実際には 64,000 ドルの質問ではありません。
android - JUnit テスト用の Dagger2 生成ファイルはありません
新しい AndroidStudio 1.1 バージョンでは、単体テストのサポートが導入されました。この URL http://tools.android.com/tech-docs/unit-testing-supportでは、IDE をセットアップして Android ソースの JUnit テストを実行する方法について順を追って説明しています。
このプラグインhttps://bitbucket.org/hvisser/android-aptは、Dagger2 で生成されたファイルを AS に提供するために使用され、通常の Android コードでは問題なく動作しますが、残念ながら JUnit テスト クラス用に生成された Dagger2 ファイルはありません。のような依存関係を設定しようとしました
androidTestApt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
android-apt プラグインのドキュメントによると、成功していません。
問題は、単体テストのさまざまなソース ディレクトリにあると思います。これはsrc/test/java
、src/androidTest/java
Android インストルメンテーション テストで使用されるものではありません。
この問題を解決する方法や情報を教えてください。
android - Gradle: 依存関係のためにリポジトリを強制的に使用する
gradle に 1 つの依存関係にリポジトリを使用させる方法があるかどうかを知りたいです。たとえば、次のようにします。
com.google.dagger
チェックアウトしたいhttps://oss.sonatype.org/content/repositories/snapshots
のは、今のところチェックアウトを試みhttps://maven.fabric.io/repo
た結果、次のエラーが発生したためです。
ありがとうございました。
android - Dagger2 の依存関係 - Gradle
Android Studio のプロジェクトに Dagger2 を追加しようとしていますが、build.gradle に貼り付ける適切な依存関係が見つかりません。適切な回線を送っていただけませんか?