Właśnie uaktualniłem nasz projekt, aby użyć Roboguice 3 i nagle wszystkie wstrzyknięte obiekty stały się puste, w tym POJO, Dostawcy, Widoki, Zasoby itp. walcząc, aby dowiedzieć się, dlaczego.Wstrzykiwane obiekty stały się puste po uaktualnieniu do Roboguice 3
Przede wszystkim istnieje plik gradle build, włączono i wyłączono Proguard i nie miało to znaczenia. Uważam, że obecnie używamy Roboguice 3.0.1, ale próbowałem 3.0 i nadal miałem problem.
compile ('org.roboguice:roboguice:3.+') {
exclude module: 'asm'
}
provided 'org.roboguice:roboblender:3.+
I mamy pewne niestandardowe powiązania w pliku modułu, więc oto jak ja, określając je według wiki:
<meta-data
android:name="roboguice.modules"
android:value="com.some.CustomModule"/>
Tylko dla rekordu Próbowałem również określić w klasie Application to tak i to nie działa:
RoboGuice.getOrCreateBaseApplicationInjector(
this,
RoboGuice.DEFAULT_STAGE,
RoboGuice.newDefaultRoboModule(this),
new CustomModule(this));
to wszystko na ustawieniach, nie zmienia niczego, a jeśli używam Roboguice 2, wszystko działa.
kilka innych rzeczy, które ja również próbowałem:
- próbował także bez Roboblender i adnotacji db
RoboGuice.setUseAnnotationDatabases(false);
nie zrobić różnicę. - te logi są drukowane dobrze, więc myślę, że rzeczywista biblioteka jest zapakowana w prawo.
- Zamiast wstrzykiwanie dostawcę POJO, starałem się używać zastrzyk instrukcja jak to
RoboGuice.getInjector(this).getInstance(SharedPreferencesHelper.class);
i zgłasza błąd oCould not find a suitable constructor in some.path.SharedPreferencesHelper. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
Najdziwniejsze jest to, że w klasie SharedPreferencesHelper mamy publiczny konstruktor z@Inject
adnotacją, myślę, że jakoś to nie brane pod uwagę? Może cały ten problem wynika z faktu, że adnotacja nie jest brana pod uwagę?
Od kilku dni walę z tym w głowę i naprawdę doceniam każdy wkład lub więcej rzeczy do wypróbowania.
Powyższe wydaje się działać w przypadku projektów o smakach kompilacji. [RoboGuice wiki] (https://github.com/roboguice/roboguice/wiki/RoboBlender-wiki) jest nieaktualne. – Diederik