2

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.

Antwort

0

nicht ganz sicher, warum, aber das Hinzufügen manuell Ressourcen Pfad etwas sein könnte, um zu versuchen,

android { 
sourceSets { 
    main { 
     res.srcDirs = ['res1', 'res2'] 
    } 
} 
} 

beziehen sich auf diese link für weitere Informationen

+0

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

Verwandte Themen