APKを難読化しましたが、ファイルサイズは12MBから10.5MBにしか縮小されていません。
比較的小さな削減にすぎない理由は、アプリがいくつかの大きなライブラリを使用しているためかもしれませんが、実行された難読化のレベルを確認する方法はありますか?
念のため、これは私のproguard-project.txtファイルです...
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-Android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.Android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
-dontwarn Twitter4j.**
...そして私が使用しているライブラリはAndroid-support-v4.jar
、acra-4.5.0.jar
およびTwitter4j-core-4.0.2.jar
。
プロジェクトディレクトリにProguard
フォルダーがあり、そこに4つのテキストファイルがあります。
dump.txt
.apkファイル内のすべてのクラスファイルの内部構造を記述します
mapping.txt
元のクラスとメソッド、および難読化されたクラス、メソッド、およびフィールド名の間のマッピングをリストします。このファイルは、難読化されたスタックトレースを元のクラス、メソッド、およびメンバー名に変換するため、リリースビルドからバグレポートを受信する場合に重要です。詳細については、難読化されたスタックトレースのデコードを参照してください。
seeds.txt
難読化されていないクラスとメンバーをリストします
usage.txt
.apkから削除されたコードをリストします
お役に立てれば!
ProGuardがAndroidアプリを処理するとき、各ステップで何が起こったかを示すいくつかの出力ファイルを生成します。これらのファイルはビルドディレクトリにあります
<module_name>/build/outputs/mapping/<buildType>/
そこで見つけることができます:
seeds.txt
-ProGuardはクラスプールを調べ、seeds.txt
のいずれかに一致するすべてのクラスとメンバーのリストをkeep rules
に出力します。これは、作成した保持ルールが保持しようとしているクラスと実際に一致する場合のデバッグに役立ちます。usage.txt
-これは縮小段階で、ProGuardはアプリから未使用のコードを取り除きます。これを行うと、削除されるコードであるunused code
がusage.txt
に出力されます。これは、実行時にクラスが存在しない理由を把握しようとしている場合に便利です。mapping.txt
-ProGuardが次に行う必要があるのは、できるだけ多くのコードを難読化することです。つまり、クラスとメンバーの名前を「a」、「b」などの意味のない名前に変更します。 ProGuardは、すべてのクラスとメンバーの古い名前と新しい名前をmapping.txt
に出力します。すべてのコードの名前が変更されるわけではありませんが、すべてのコードはmapping.txt
にリストされています。これは、スタックトレースの難読化を解除する場合に必要なファイルです。これにより、難読化された名前から元のコード名までさかのぼることができます。dump.txt
-処理後のすべてのコードの完全なリスト。つまり、クラスファイルに残っているものはすべて最適化されていない形式なので、巨大なファイルになります。ただし、クラスファイルの内容を確認したいが、.classファイルまたは.dexファイルを逆コンパイルしたくない場合、これは非常に便利です。これは、ステップの非常に高度な概要で作成した図です
続きを読む こちら
実行された難読化のレベルを確認する方法はありますか?
フラグ-optimizationpasses N
を使用できる場合があります。
実行する最適化パスの数を指定します。デフォルトでは、単一のパスが実行されます。複数のパスにより、さらに改善される場合があります。最適化パスの後に改善が見つからない場合、最適化は終了します。最適化時にのみ適用されます。