Proguard Android应用程序的LVL和片段兼容性支持

问题描述:

我试图使用Proguard对我的应用程序,它最终将纳入LVL和应用程序内结算。我遇到的问题是Proguard在开始时不断崩溃我的应用程序,很难弄清楚失败的原因。Proguard Android应用程序的LVL和片段兼容性支持

我正在使用Android V4支持兼容性库,它似乎吹走了图书馆以及其他一些东西。

有没有人有一个proguard.cfg与初学者的v4 compat库的基本版本一起使用?

目前我正在使用股票proguard.cfg哪些不起作用。

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

-keep public class * extends android.app.Activity 

-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class com.android.vending.licensing.ILicensingService 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keepclasseswithmembernames class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembernames class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

这不足以产生一个工作程序.. proguard的意愿,例如删除默认情况下,所有的片段,还有更多的compat。它使用的库。

我发现了以下工作:

-dontwarn **CompatHoneycomb 
-dontwarn **CompatHoneycombMR2 
-dontwarn **CompatCreatorHoneycombMR2 
-keep class android.support.v4.** { *; } 

-keep public class * extends android.support.v4.** 
-keep public class * extends android.app.Fragment 

从理论上讲,如果你只是想proguard的为混淆,并在其另一“功能”不ineterested,然后

-dontshrink 
-dontoptimize 

应该切换它关了。即使如此,虽然在真正的Android 1.6手机上测试彻底。我没有,发现过早的proguard已经对二进制进行了突破性的改变,仅表现在1.6 ...

要有ProGuard和v4的兼容性库的工作添加到您的proguard.cfg:

 
-dontwarn **CompatHoneycomb 
-keep class android.support.v4.** { *; }