Injizierte Objekte wurden nach dem Upgrade auf Roboguice 3 zu Null.

Ich habe gerade unser Projekt auf Roboguice 3 aktualisiert und plötzlich wurden alle injizierten Objekte zu Null, einschließlich POJO, Providers, Views, Resources usw. Und ich kämpfe darum herauszufinden, warum.

Zunächst gibt es die Gradle-Build-Datei, die sowohl Proguard ein- als auch ausgeschaltet hat, und es hat keinen Unterschied gemacht. Ich glaube, wir verwenden derzeit Roboguice 3.0.1, aber ich habe 3.0 ausprobiert und hatte immer noch das Problem.

compile ('org.roboguice:roboguice:3.+') {
    exclude module: 'asm'
}
provided 'org.roboguice:roboblender:3.+

Und wir haben einige benutzerdefinierte Bindungen in einer Module-Datei, also hier ist, wie ich es gemäß dem Wiki spezifiziere:

<meta-data
  android:name="roboguice.modules"
  android:value="com.some.CustomModule"/>

Nur für den Datensatz, ich habe auch versucht, es in der Application-Klasse wie folgt anzugeben, und es hat nicht funktioniert:

RoboGuice.getOrCreateBaseApplicationInjector(
                    this,
                    RoboGuice.DEFAULT_STAGE,
                    RoboGuice.newDefaultRoboModule(this),
                    new CustomModule(this));

Das wars für das Setup, wir haben nichts geändert und wenn ich Roboguice 2 benutze, funktioniert alles.

Ein paar andere Dinge, die ich auch ausprobiert habe:

Auch ohne Roboblender und Annotation versucht dbRoboGuice.setUseAnnotationDatabases(false); es hat keinen Unterschied gemacht.Ln.d("Test" + Strings.toString(0)); Diese Protokolle werden einwandfrei ausgedruckt, daher denke ich, dass die eigentliche Bibliothek richtig verpackt ist. Anstatt einen Provider eines POJO zu injizieren, habe ich versucht, eine manuelle Injektion wie diese zu verwendenRoboGuice.getInjector(this).getInstance(SharedPreferencesHelper.class); und es wirft den Fehler überCould 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. Das Seltsame ist, dass wir in der SharedPreferencesHelper-Klasse einen öffentlichen Konstruktor mit @ habe@Inject kommentiert, ich denke, irgendwie ist es nicht berücksichtigt? Vielleicht liegt das ganze Problem daran, dass Anmerkungen nicht berücksichtigt werden?

Ich habe jetzt seit ein paar Tagen meinen Kopf dagegen geschlagen und würde mich über jede Eingabe oder weitere Dinge freuen, die ich versuchen könnte.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage