初めてプロガードを使用しています。プロジェクトのルート パッケージ内にすべてのアクティビティ、フラグメント、リスト フラグメントなどがあります (それらを移動しようとしましたが、違いはありませんでした)。私は標準proguard-android.txt
に加えて、必要なものproguard-project.txt
を何でも配置できる場所を使用しています。これらのクラスは無視されるだけなので、これらのクラスに違いはありません。
usage.txt
それらは、seeds.txt
、mapping.txt
またはにリストされてdump.txt
おらず、dex にもありません (ただし、ライブラリ クラスは正しく処理されているようです)。
-keep public class <my.project.rootpackage>.MyActivity
無視されたクラスごとに1つ試してみましたが、他の多くのことを試しましたが、最後のものは次のとおりです。
-dontshrink
-dontoptimize
-dontobfuscate
-keep public class * extends android.app.Application
-keep public class * extends android.support.v4.app.FragmentActivity
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.support.v4.app.ListFragment
-keep public class * extends android.preference.PreferenceActivity
学習中にもっと単純なプロジェクトを使用することもできますが、ProGuard がライブラリを適切に処理しているように見えるので、なぜそれが機能しないのかわかりません。もちろん、デバッグ モードでビルドすると、プロジェクトは正常に動作します。
ProGuard を v4.8 に更新、Eclipse 3.7.2、ADT および SDK を更新、プロジェクト ターゲット API 15、ProGuard からのメッセージなし。
私は何が欠けていますか?ビルドプロセスをクリアしたことがないことを認めます。Ant を学ぶ必要がありますか?
編集: 機能しない場合 (つまり、ProGuard がエラーで終了する場合)、次のようなエラーがよく発生します。
警告: my.project.package.ClassA: 参照されているクラス my.project.package.ClassB が見つかりません
2 つのクラスを同じパッケージに含めることもできます。