Während eines Instrumentierungstests gibt meine App den folgenden Fehler aus. Dieser Fehler wird nicht in meinen Nicht-Test-Builds ausgelöst.ResourceNotFoundException für Ressource im Bibliotheks-Modul während des Instrumentierungstests
android.content.res.Resources$NotFoundException: String resource ID #0x7f030002
Ich habe zwei gradle Module
:app (android-application) //applicationId: com.app
:library (android-library) //applicationId: com.library
//:app includes :library as a dependency
Die betreffende Ressource definiert ist und im :library
Modul geworfen.
Während unter Instrumentierung, mein :library
Modul ruft:
context.getResources().getString(com.library.R.string.pref_key)
- dies löst eine Ausnahme
Wenn ich an einem Haltepunkt bei der Instrumentierung debuggen und rufen:
context.getResources().getString(com.app.R.string.pref_key)
- das funktioniert! Aber das ist Code von meinem:library
Modul, das keine Abhängigkeit von:app
hat.
Wie kann ich das beheben? Hinweis - Der Fehler tritt nur bei Instrumentierungstests auf, nicht bei normalen Builds.
UPDATE: während unter Instrumentierung, ruft getString(com.library.R.string.pref_key)
Werke, wenn sie von einer Klasse im :app
Modul genannt, aber wirft die Ausnahme von einer Klasse innerhalb des :library
Modul. Buchstäblich verhält sich das Aufrufen der exakt gleichen Methode auf derselben Instanz Resources
anders, wenn von :app
vs :library
aufgerufen wird.
die Ressourcen tatsächlich da sind. Der Aufruf schlägt nur fehl, wenn er innerhalb des Moduls ': library' erfolgt. Wenn der * exact * selbe Aufruf innerhalb des ': app' Moduls erfolgt, funktioniert es. – ZakTaccardi