У меня странная проблема с proguard, так или иначе она ломает мой действительный файл. Без прогрессивных шоу. Предполагается ли proguard минимизировать xml-чертежи?Proguard развращает файлы, которые можно удалить
вытяжке/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>
становится как этот
<?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: Эта проблема возникает из-за shrinkResources
. Он запутывает все чертежи, которые указаны ТОЛЬКО в style.xml
. Так, например, если у меня есть кнопка, которая имеет style="@style/MyStyle"
и в styles.xml
:
<style name="MyStyle">
<item name="android:background">@drawable/wide_btn_round_white</item>
</style>.
wide_btn_round_white.xml
собирается быть нарушена. Но если я укажу фон непосредственно на кнопке, все будет работать нормально. Согласно вики я могу создать app/src/main/res/values/keep.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/wide_btn_round_white" />
Но эта вещь не работает. Насколько я понимаю, он указывает только, что этот файл не следует удалять.
Любая помощь очень ценится!
Самое лучшее отношение,
Ty, проблема возникла из-за 'shrinkResources', он обфускает все чертежи, которые указаны ТОЛЬКО в' style.xml'. Таким образом, у меня была кнопка, которая имела стиль 'style =" @ style/MyStyle "и в styles.xml:' '. Если я переместю место, где я указываю «фон» из стилей напрямую на атрибут компонента, он работает нормально. Но у меня много ярлыков, которые указаны в 'styles.xml'. В любом случае я могу исправить это, а не вручную перечислять все файлы в 'tools: keep'? – deathangel908
Я также попытался создать файл 'app/src/main/res/values / keep.xml' с контентом:' Xml version = "1.0" encoding = "utf-8"?> '. В любом случае файл поврежден. –
deathangel908