I持って、次のコード自分のアプリケーションのproguard.cfg
(はい、私はまた、proguard.config=proguard.cfg
build.properties
を持っている):難読化を有効にするために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のエクスポートされたバージョンをアップロードしていることを知っています。
実際にProGuardを使用してビルドしていますか?そのファイルは十分ではありません。ProGuardがビルドログに表示されるはずです。あなたは、ビルドされたアプリケーションを見て、それが難読化されていることを確認する必要があります。 – ThomasW
@ThomasWはい私です。プロジェクトには 'dump.txt'、' mapping.txt'、 'seeds.txt'、' usage.txt'の4つのファイルを持つ 'proguard'フォルダがあります。ファイル 'mapping.txt'は、ActivityクラスやPreferencesクラスのようないくつかのクラスを除いて、大部分のシンボルが単一の文字に難読化されていることを示しています。私は 'proguard.cfg'にそれらのための' -keep'文があることに気付きました。それが理由だろうか?返信+1。 – ateiob
はい、あなたのアプリが正常に動作するためには、一部のクラスが残念ながら残っている必要があります。たとえば、ビュー・クラスは、XMLファイルを使用したレイアウトが機能するためには同じままにする必要があります。特定のクラスやメソッド名を期待する他のコードとやりとりするコードの部分は、難読化することはできません。内部的に使用されるコードで、難読化することができます。おそらくそれはあなたが見ているものですか? – ThomasW