Ich habe seltsames Problem mit Proguard, irgendwie bricht es meine gültige zeichnende Datei. Ohne Programm zeichnbare Shows ok. Soll Proguard xml drawables minimieren?Proguard verdirbt Zeichnungsdateien
ziehbar/wide_btn_round_white.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle" >
<corners android:radius="25dip" />
<padding android:bottom="10dp"/>
<padding android:top="10dp"/>
<solid android:color="@color/colorOrangeGetStarted" />
</shape>
</item>
</selector>
wird wie dieser
<?xml version="1.0" encoding="utf-8"?>
<x />
build.gradle:
release {
minifyEnabled true
shrinkResources true
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
proguard-rules.pro:
-keepattributes *Annotation*
-keepattributes Signature
-keepclassmembers class ** {
@com.squareup.otto.Subscribe public *;
@com.squareup.otto.Produce public *;
}
-dontwarn okio.**
-dontwarn retrofit2.Platform$Java8
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
-keep class com.stripe.** { *; }
-keepclassmembers class com.myapp.services.http.** {
<fields>;
}
-keepclassmembers class com.myapp.services.ws.** {
<fields>;
}
-keepclassmembers class * extends java.lang.Enum {
<fields>;
public static **[] values();
public static ** valueOf(java.lang.String);
}
EDIT: geschieht Dieses Problem tritt aufgrund von shrinkResources
. Es verschleiert alle Zeichen, die NUR in style.xml
angegeben sind. So zum Beispiel wenn ich eine Taste, die style="@style/MyStyle"
und in styles.xml
hat:
<style name="MyStyle">
<item name="android:background">@drawable/wide_btn_round_white</item>
</style>.
wide_btn_round_white.xml
ist gonna gebrochen werden. Aber wenn ich den Hintergrund direkt auf der Schaltfläche festlege, würde alles OK funktionieren. Nach dem Wiki kann ich app/src/main/res/values/keep.xml
erstellen:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/wide_btn_round_white" />
Aber dieses Ding funktioniert nicht. Wie ich es verstehe, gibt es nur an, dass diese Datei nicht entfernt werden soll.
Jede Hilfe wird sehr geschätzt!
Beste Hinsicht
Ty, war die Frage wegen 'shrinkResources', es verschleiert alle Drawables, die nur in' style.xml' angegeben sind. Also hatte ich einen Button mit 'style =" @ style/MyStyle "' und in styles.xml: ''. Wenn ich den Ort verschiebe, an dem ich 'background von Styles direkt zum Komponentenattribut gebe, funktioniert es OK. Aber ich habe viele Zeichen in "styles.xml". Irgendwie kann ich das beheben, anstatt manuell alle Dateien in 'tools: keep' aufzulisten? – deathangel908
Ich habe auch versucht, die Datei 'app/src/main/res/values / keep.xml' mit Inhalt zu erstellen:' Xml version = "1.0" encoding = "utf-8"?> '. Die Datei wird trotzdem beschädigt. –
deathangel908