8

私は自分のアプリに対してProguardを使用しようとしていますが、これには最終的にLVLとアプリ内課金が組み込まれます。私が抱えている問題は、Proguardが起動時にアプリをクラッシュさせ続け、何が失敗しているかを把握するのが難しいことです。

私はAndroidV4サポート互換性ライブラリを使用していますが、そのライブラリやその他のものが吹き飛ばされているようです。

初心者向けのv4互換ライブラリの基本バージョンで動作するproguard.cfgを持っている人はいますか?

現在、機能しないストック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 *;
}
4

2 に答える 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

オフにする必要があります。それでも、実際の android 1.6 phone で徹底的にテストします。私は、1.6 でのみ明らかになったバイナリに重大な変更を加えたのが遅すぎたことを知りませんでした...

于 2011-08-07T13:29:28.313 に答える
8

Proguard を v4 互換ライブラリで動作させるには、これを proguard.cfg に追加します。

-dontwarn **CompatHoneycomb
-keep class android.support.v4.** { *; }
于 2011-05-25T09:09:02.300 に答える