Ich versuche, ein Projekt, in dem ich zwei Module haben common-lib
und app
.Dolch 2: Gradle Modul Abhängigkeit mit der Implementierung in einem anderen Modul
Das lib-Modul hat eine eigene Dolch-Komponente und Module und soll geschmacksunabhängig sein.
Nun hängt ein Teil davon von aromespezifischen Ressourcenwerten ab, die im Modul app
deklariert sind, also habe ich versucht, die Komponente über eine Schnittstelle zu abstrahieren und ihre Implementierung im Modul app
zu überschreiben.
Dolch-Modul deklarieren in common-lib
Gradle-Modul, Abhängigkeiten mit NoOp-Implementierungen zu erfüllen.
@Module
public class NetworkConfigModule {
@Provides
@Singleton
HeaderParams providesHeaderParams(NoOpHeaderParams noOpHeaderParams){
return noOpHeaderParams;
}
@Provides
@Singleton
AppHostsProvider providesAppHostsProvider(NoOpAppHostsProvider noOpAppHostsProvider){
return noOpAppHostsProvider;
}
}
Dagger Modul deklariert in app
gradle Modul, Abhängigkeiten mit der tatsächlichen Umsetzung zu erfüllen.
Dies funktioniert nicht, weil Dolch nicht gerade die Modul-Klasse überschreibt, aber das ist irgendwie zu erwarten.
Meine Frage ist, wie ich meine Dagger Module einrichten können, damit ich HeaderParams
und AppHostsProvider
Schnittstellen in common-lib
verwenden können, aber ich spritze ihre Implementierungen in app
.
Hey David, danke für deine Antwort, es klingt gut, aber ich kämpfe immer noch um jeden Teil deines zweiten Vorschlags ... Wenn NetworkComponentHolder und NetworkComponent beide im 'common-lib'-Modul sind, stehe ich nicht vor dem gleichen Problem, weil ich die Implementierung ihrer Abhängigkeiten nicht bereitstellen kann? – mdelolmo
@mdelolmo Sie würden die Anwendung die Schnittstelle implementieren lassen, dann können Sie einen Verweis auf die Anwendung in der Bibliothek abrufen und auf die Komponente zugreifen, indem Sie die Schnittstelle verwenden. Dies ist, wenn Sie 'component.inject (this)' irgendwo in Ihrem Modul aufrufen müssen –