Androidアプリ(リリースビルド用)からAndroid.util.Logへの呼び出しのみを削除するようにproguardを構成しようとしています。特にproguardに難読化や縮小を行わせたくありません。コードの。
これは私が試した構成ですが、Log
呼び出しは削除されません(-keep class **
)
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep class ** {
*;
}
-assumenosideeffects class Android.util.Log {
*;
}
私が求めていることは、proguardでさえ可能ですか?
proguard-project.txt
でこのオプションを使用して、ロギング呼び出しを削除できます。
-assumenosideeffects class Android.util.Log {
public static boolean isLoggable(Java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
このオプションは、proguard-Android.txt
のように、最適化が無効になっていない場合にのみ関係します。代わりに、proguard-Android-optimize.txt
でproject.properties
を指定する必要があります。
proguard.config=${sdk.dir}/tools/proguard/proguard-Android-optimize.txt:proguard-project.txt
必要に応じて、縮小と難読化を無効にすることができます。必要に応じて、アプリケーションの内部APIを最適化から保護することもできます。
-keep class myapp.** { *; }
もちろん、これらの手順を無効にしてすべてのコードを保持することは、ProGuardの観点からは最適ではありません。
Build.gradleで
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
}
}
Proguard-rules.proで
-dontwarn **
-target 1.7
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!code/allocation/variable
-keep class **
-keepclassmembers class *{*;}
-keepattributes *
#This will not remove error log
-assumenosideeffects class Android.util.Log {
public static boolean isLoggable(Java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
#public static int e(...);
}