2017-12-13 19 views
0

アプリのリリースビルドをビルドすると、Proguardが動作しますが、APKアナライザを使用してAPKを見ても、明らかに難読化は適用されません。Proguardが私のコードを難読化しないのはなぜですか?

私の意図は、リバースエンジニアリングを少し難しくするために、難読化をAPKに適用することです。

Gradle: 

buildTypes { 
    release { 
     signingConfig signingConfigs.release 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

私がGradleコンソールで見ることができるように、Proguardは確実に動作しています。

proguard-rules.pro: 

-dontshrink 
-dontoptimize 

-keep class com.squareup.picasso.** { *; } 
-dontwarn com.squareup.picasso.** 

-keep class com.squareup.okhttp.** { *; } 
-dontwarn com.squareup.okhttp.** 

-keep class kotlin.reflect.** { *; } 
-dontwarn kotlin.reflect.** 

-keep class javax.annotation.** { *; } 
-dontwarn javax.annotation.** 

-keep class org.codehaus.mojo.** { *; } 
-dontwarn org.codehaus.mojo.** 

Proguardのドキュメントでは、デフォルトでは難読化が実行されています。また、keepステートメントで指定されたクラスは難読化されませんが、アプリケーション自体のクラスはkeepステートメントでは指定されていませんが、難読化されていません。

さらに見ていくと、aapt_rules.txtという名前のファイルがビルドフォルダにあります。このファイルには、アプリケーションのすべてのクラスのkeepステートメントのようなものが含まれています。私はそれがなぜあるのか分からない。

Proguardを再構成して、クラスを縮小したり削除したりせずに、アプリケーション内のすべてのコード(ライブラリではなく)を難読化するにはどうすればよいですか?ラインkeep class com.squareup.picasso.** { *; }-keep class com.squareup.okhttp.** { *; }を見て

答えて

0

あなたは、上記のパッケージまたはサブパッケージの一部であるものを難読化されていません。

上記のパッケージとサブパッケージに含まれていないものは、Progaurdによって難読化されます。

これらのパッケージの外にクラスがありますか。

+0

proguard-rules.proのkeepステートメントのすべてのクラスは、プロジェクトが使用するライブラリクラスです。難読化する必要があるのは、プロジェクトコードそのものであり、そのファイルには言及されていません。 –

+0

proguard_seed.txtファイルとproguard_map.txtを共有できますか – Shailesh

関連する問題