0

Ich erstelle eine signierte APK, die ich hochladen muss, um Store zu spielen. Das Problem, das ich habe, ist, dass die Karte, die ich verwende, einen benutzerdefinierten Stil verwendet, und ich referenziere die benutzerdefinierten Stile von Res>raw Ordner. Wenn ich das debuggable APK erzeuge/die App auf meinem Telefon laufe, kann die Datei R.raw.mapstyle_grayscale abgerufen werden. Wenn ich versuche, eine signierte APK zu erzeugen, erhalte ich die Fehler Error:(936, 98) error: cannot find symbol variable mapstyle_grayscaleErzeugung signierter APK fehlende Ressourcendateien

Mein Code sieht wie folgt aus:

Boolean success = false; 
int map_version = manager.getMapVersion(this); 
switch (map_version){ 
    case 0: 
     break; 
    case 1: 
     success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.mapstyle_grayscale)); 
     break; 
    case 2: 
     success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.mapstyle_night)); 
     break; 
    case 3: 
     success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.mapstyle_retro)); 
     break;  
} 

if (!success) 
    Log.e("Maps", "Style parsing failed."); 
else 
    Log.i("Maps","Style parsing successful"); 

Antwort

0

Bitte überprüfen Sie Ihre build.gradle Datei und sehen, ob Ihr minifyEnabled und shrinkResources auf true gesetzt sind. Wenn minifyEnabled und shrinkResources auf true festgelegt sind, werden die nicht verwendeten Ressourcen beim Generieren einer Release-APK entfernt. Normalerweise können Ressourcen, auf die vom Code verwiesen wird, als nicht verwendete Ressource gefunden werden, und daher tritt das Problem auf.

Wenn es spezifische Ressourcen, die Sie wünschen, eine XML-Datei in Ihrem Projekt mit einem <resources> Tag zu halten oder zu verwerfen, erstellen und jede Ressource angeben, in dem tools:keep Attribute und jede Ressource zu halten im tools:discard Attribute zu verwerfen. Beide Attribute akzeptieren eine durch Kommas getrennte Liste von Ressourcennamen. Sie können das Sternchen als Platzhalter verwenden. Bitte check here für weitere Informationen.

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:tools="http://schemas.android.com/tools" 
    tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*" 
    tools:discard="@layout/unused2" /> 

Developers guide for android hat mehr Informationen über die Ressourcen Schrumpfung.

+0

minifyEnabled ist auf false eingestellt shrinkResources war ebenfalls falsch, ich habe versucht, es auf true zu setzen und das obige XML hinzuzufügen, aber der Fehler, der erzeugt wird, ist immer noch derselbe. – user145490

+0

Bitte setzen Sie Ihre 'build.gradle' und' proguard-rules.pro'. –

Verwandte Themen