Verwenden Sie Dolchmodule ohne die Direktive „injiziert“

Ich versuche, Dagger ohne die Direktive "injects" in der Annotation @Module zum Laufen zu bringen. Ich stütze mein Testprojekt auf dieAndroid Simple Dagger Beispiel

Dies ist der Teil, der mir Probleme bereitet:

@Module(
    injects = HomeActivity.class,
    complete = false
)
public class DemoModule {
  // TODO put your application-specific providers here!
}

(Edit): Was in meinem Code istCTXModules.java

Der Teil, den ich entfernen möchte, ist "injects = HomeActivity.class". Ich weiß, dass ich meine eigenen Module mit der Annotation @Inject im Konstruktor markieren kann, um diesen Teil dort zu entfernen, aber irgendwie funktioniert es nicht mit dem Modul, das dem Diagramm hinzugefügt wird. Mit dieser Leitung funktioniert alles einwandfrei.

Der Grund, warum ich das brauche, ist, dass Dolch in einem Basisbibliotheksprojekt implementiert wird, das die Grundlage für einige Projekte bildet, die eine gemeinsame Codebasis haben, und daher weiß ich im Moment oder beim Schreiben dieses Teils des Codes nicht, was Klassen werden Module injizieren.

Ist das, was ich versuche, überhaupt möglich?

Ich nehme an, es ist möglich, weil dieAndroid-Modulklasse verwendet diese Direktive nicht.

Hoffe es ist klar genug. Danke im Voraus!

(BEARBEITEN)

Ich hätte es erwähnen sollen. In meinem Modul entferne ich "injects = HomeActivity.class" und füge "library = true" hinzu wie in derAndroid-Modulklasse. Was dann passiert ist, dass ich diesen Fehler erhalte (mein Fehler, den ich vorher nicht hinzugefügt habe):

12-10 09:21:16.807: E/AndroidRuntime(21783): FATAL EXCEPTION: main
12-10 09:21:16.807: E/AndroidRuntime(21783): Process: com.ef.daggertestproject, PID: 21783
12-10 09:21:16.807: E/AndroidRuntime(21783): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ef.daggertestproject/com.ef.daggertestproject.MainActivity}: java.lang.IllegalArgumentException: No inject registered for members/com.ef.daggertestproject.MainActivity. You must explicitly add it to the 'injects' option in one of your modules.
12-10 09:21:16.807: E/AndroidRuntime(21783):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at android.app.ActivityThread.access$700(ActivityThread.java:135)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at android.os.Handler.dispatchMessage(Handler.java:102)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at android.os.Looper.loop(Looper.java:137)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at android.app.ActivityThread.main(ActivityThread.java:4998)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at java.lang.reflect.Method.invokeNative(Native Method)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at java.lang.reflect.Method.invoke(Method.java:515)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at dalvik.system.NativeStart.main(Native Method)
12-10 09:21:16.807: E/AndroidRuntime(21783): Caused by: java.lang.IllegalArgumentException: No inject registered for members/com.ef.daggertestproject.MainActivity. You must explicitly add it to the 'injects' option in one of your modules.
12-10 09:21:16.807: E/AndroidRuntime(21783):    at dagger.ObjectGraph$DaggerObjectGraph.getInjectableTypeBinding(ObjectGraph.java:281)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at dagger.ObjectGraph$DaggerObjectGraph.inject(ObjectGraph.java:258)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at com.ef.daggertestproject.MyApplication.inject(MyApplication.java:47)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at com.ef.daggertestproject.BaseActivity.onCreate(BaseActivity.java:27)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at com.ef.daggertestproject.MainActivity.onCreate(MainActivity.java:16)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at android.app.Activity.performCreate(Activity.java:5243)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-10 09:21:16.807: E/AndroidRuntime(21783):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)
12-10 09:21:16.807: E/AndroidRuntime(21783):    ... 11 more

Auch habe ich hochgeladenmein testprojekt zum github

(Final Edit) laut Jakes Antwort: "Wenn ein Modul als Bibliothek deklariert wird, muss Dagger nicht mehr über die Einspeisungspunkte Bescheid wissen." Und deshalb ist die Antwort auf meine ursprüngliche Frage, dass es nicht möglich ist.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage