すべてのログを削除するためにproguardを使用しようとしています:proguard-project.txtに次の行を入力しました。
-assumenosideeffects class Android.util.Log { *; }
そして、私のproject.propertiesは次のようになります:
proguard.config=${sdk.dir}/tools/proguard/proguard-Android.txt:proguard-project.txt
それにもかかわらず、ログはアプリケーションに表示され続けます。ここで何が間違っていますか?
「Object#wait()」などのメソッドが含まれているため、「*」ワイルドカードを指定しないでください。メソッドを明示的にリストする方が適切です:
-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
を指定する必要があります。
proguard.config=${sdk.dir}/tools/proguard/proguard-Android-optimize.txt:proguard-project.txt
または現代的な Android Gradleプラグイン
buildTypes {
releaseSomeBuildType {
...
proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'your-proguard-file.pro'
}
}
かなり遅いので、同じ問題に遭遇しました。私はAndroid studio 1.3を使用しています。これが私がやったことです。
proguard-Android-optimize.txt
のリリースビルドで除去するログメソッドを追加します。
-assumenosideeffects class Android.util.Log {
public static boolean isLoggable(Java.lang.String, int);
public static int d(...);
public static int w(...);
public static int v(...);
public static int i(...);
}
Build.gradle(モジュール:アプリ)で、proguard-Android.txtではなく、proguard-Android-optimize.txtをデフォルトのproguardファイルとして設定します。
buildTypes {
release {
minifyEnabled true
debuggable false
proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt')
}
}
これは、proguard-Android.txt
の最適化がフラグ付きでデフォルトでオフになっているためです。
-dontoptimize
-dontpreverify
これは私のために働いた、それが他の人を助けることを願っています。
次のようにする必要があります。
-assumenosideeffects class Android.util.Log {
public static int d(...);
public static int v(...);
public static int i(...);
public static int w(...);
public static int e(...);
public static int wtf(...);
}
使用しているすべてのログメソッドを展開します。