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

我正在尝试对我的应用程序使用Proguard,最终将包含LVL和应用程序内结算。 我遇到的问题是,Proguard不断崩溃我的应用程序开始,很难弄清楚什么是失败。

我正在使用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当作混淆器,而对其他“特性”没有兴趣的话

 -dontshrink -dontoptimize 

应该关掉它。 即使这样,虽然testing在一个真正的Android 1.6手机彻底 。 我没有,发现已经太迟了proguard已经作出了突破性的变化,只能performance在1.6 …

要让Proguard使用v4兼容性库,请将其添加到您的proguard.cfg中:

 -twtwarn ** CompatHoneycomb
 -keep类android.support.v4。** {*;  }