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

时间:2011-05-22 20:32:12

标签: android proguard android-fragments android-lvl android-support-library

我正在尝试将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 *;
}

2 个答案:

答案 0 :(得分:15)

这还不足以产生一个正常工作的应用程序..例如,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

应该将其关闭。即便如此,虽然在真正的Android 1.6手机上彻底测试。我没有发现太晚了,proguard对二进制文件做了一个突破性的改变,只能在1.6 ...

上显示出来

答案 1 :(得分:8)

让Proguard使用v4兼容性库将其添加到proguard.cfg中:

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