難読化されたAndroidアプリケーションを作成したい。そのためにProGuardを使用している。すべてのLog。*メッセージを自動的に削除したい。どうすればよいですか? this 投稿しますが、それでも取得できます(デコンパイラーを使用して難読化を確認します)。
proguard-project.txtは次のとおりです。
-injars libs/In.jar
-outjars libs/Out.jar
#-libraryjars <Java.home>/lib/rt.jar
-libraryjars C:/Users/thomas/Android-sdks/platforms/Android-7/Android.jar
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class * {
public protected *;
}
-keepclassmembernames class * {
Java.lang.Class class$(Java.lang.String);
Java.lang.Class class$(Java.lang.String, boolean);
}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(Java.lang.String);
}
-keepclassmembers class * implements Java.io.Serializable {
static final long serialVersionUID;
private static final Java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(Java.io.ObjectOutputStream);
private void readObject(Java.io.ObjectInputStream);
Java.lang.Object writeReplace();
Java.lang.Object readResolve();
}
-assumenosideeffects class Android.util.Log {
public static *** d(...);
public static *** e(...);
}
どんな助けでもいただければ幸いです。
ありがとう。
これにより、すべてのデバッグLog.d(TAG, "...");
およびエラーLog.e(TAG, "...")
呼び出しのみが削除されます。
-assumenosideeffects class Android.util.Log {
public static *** d(...);
public static *** e(...);
}
すべてのログ呼び出しを削除するには、次を使用します。
-assumenosideeffects class Android.util.Log { *; }
デフォルトのAndroid Proguard構成は最適化を無効にします。これを有効にするには、プロジェクトのproject.propertiesファイルでproguard-Android.txtの代わりにproguard-Android-optimize.txtを使用します
プロガードに頭を包むことができないように見える人のために、あなたはあなたが2つのことをすることを確認しなければなりません。
1:@yorkwから
-assumenosideeffects class Android.util.Log { *; }
2:@Gallalから
プロジェクトのproject.propertiesファイルで次を使用します。
proguard.config=${sdk.dir}/tools/proguard/proguard-Android-optimize.txt:proguard-project.txt
の代わりに
proguard.config=${sdk.dir}/tools/proguard/proguard-Android.txt:proguard-project.txt
これは、SDKに含まれているため、「すぐに使用できる」2つのプロガードオプションがあるためです。
Android-adk > tools > proguard
これには2つのファイルが含まれています。
proguard-Android.txt
proguard-Android-optimize.txt
それが他の誰かの助けになることを願っています。
Android Studioを使用している場合は、メインアプリケーションのbuild.gradle
を変更する必要があります。
Gradleファイルで、デフォルトファイルとしてproguard-Android-optimize.txt
の使用法を指定する必要があります。
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
// With the file below, it does not work!
//proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
実際、デフォルトのproguard-Android.txt
ファイルでは、次の2つのフラグで最適化が無効になっています。
-dontoptimize
-dontpreverify
proguard-Android-optimize.txt
ファイルはこれらの行を追加しないため、assumenosideeffects
が機能するようになりました。
次に、Eclipseなどの他の回答で述べたように、メインのプロガードファイルに次の行を追加する必要があります。
-assumenosideeffects class Android.util.Log {
public static *** d(...);
public static *** e(...);
}