Proguard Android应用程序用于LVL和Fragment兼容性支持。

8
我试图使用Proguard来保护我的应用程序,该应用程序最终将整合LVL和In-app Billing。问题在于,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 *;
}
2个回答

15

仅凭那些还不足以生产一个可用的应用程序...例如,Proguard默认会删除你所有的片段,并且它使用了一些其他的兼容库。

我发现以下方法有效:

-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

应该关闭它。但是即使如此,在真正的安卓1.6手机上彻底测试一下。我没有这样做,太晚才发现proguard对二进制文件进行了破坏性更改,只在1.6上表现出来...


8
要使Proguard与v4兼容库正常工作,请将以下内容添加到您的proguard.cfg文件中:
-dontwarn **CompatHoneycomb
-keep class android.support.v4.** { *; }

请注意,不要删除任何html标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接