2017-01-26 14 views
1

私はproguardに奇妙な問題がありますが、何とか私の有効な描画可能ファイルが破損しています。 proguard drawableがなくてもOKです。 proguardはxmlのドロアブルを縮小する予定ですか?Proguardが描画可能ファイルを破損しています

wide_btn_round_white.xml /描画可能:

release { 
     minifyEnabled true 
     shrinkResources true 
     signingConfig signingConfigs.release 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 

proguard-rules.pro:

<?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ようになり

-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</it‌​em> 
</style>. 

wide_btn_round_white.xmlをつもりが壊れことです。しかし、ボタンに背景を直接指定すると、すべてが正常に機能します。 WikiをIによる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" /> 

をしかし、この事は動作しません。私が理解しているように、このファイルを削除しないように指定するだけです。

ご協力いただきありがとうございます。

お問い合わせ

答えて

1

一般に、ProguardはJavaのXMLファイルでは動作しません。だから私はあなたのビルドは、ファイルを破壊する方法の一部だと思います。おそらく、新しいプロジェクトを開いてソースと.gitファイル(あれば)をコピーしてください。

もう1つはAndroid shrink resourcesなので、shrinkResourcesをfalseに設定してみましょう。そうなった場合は、tools:keepを使用して問題のあるリソースをシュレンダーから遠ざけてください。

<?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" /> 
+0

Ty、問題は 'shrinkResources'のため、' style.xml'でのみ指定されたすべてのドロアブルを難読化しています。だから私は 'style =" @ style/MyStyle "'とstyles.xml: ''のボタンを持っていました。スタイルから 'background'を指定した場所をコンポーネント属性に直接移動してもOKです。しかし、私は 'styles.xml'で指定されたdrawableをたくさん持っています。どのようにしても、 'tools:keep'にすべてのファイルを手動でリストするのではなく、これを修正できますか? – deathangel908

+0

また、コンテンツを持つファイル 'app/src/main/res/values/keep.xml'を作成しようとしました:' <?xml version = "1.0" encoding = "utf-8"?> 'ファイルはとにかく壊れてしまいます。 – deathangel908

関連する問題