【问题标题】:Proguard Android App for LVL and Fragment Compatibility Support用于 LVL 和 Fragment 兼容性支持的 Proguard Android 应用程序
【发布时间】:2011-05-22 20:32:12
【问题描述】:

我正在尝试对我的应用使用 Proguard,该应用最终将包含 LVL 和应用内计费。我遇到的问题是 Proguard 在启动时不断使我的应用程序崩溃,并且很难找出失败的原因。

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

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

目前我正在使用不起作用的股票 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 *;
}

【问题讨论】:

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


    【解决方案1】:

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

    应该关闭它。即便如此,在真正的 android 1.6 手机上进行彻底测试。我没有发现,而且为时已晚,proguard 对仅在 1.6 上出现的二进制文件进行了重大更改...

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        相关资源
        最近更新 更多