I\'m trying to configure proguard to ONLY remove calls to android.util.Log from my Android app (for the release build). I specifically don\'t want proguard to do any obfusca
You can remove logging calls with this option in 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(...);
}
This option is only relevant if optimization is not disabled, like in proguard-android.txt
. You have to specify proguard-android-optimize.txt
instead, in project.properties
:
proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
You can disable shrinking and obfuscation if you wish. You can also preserve the internal API of your application from optimization if you wish:
-keep class myapp.** { *; }
Disabling these steps and keeping all code of course isn't optimal from a ProGuard point of view.
In build.gradle
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
In 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(...);
}