When compiling my app using Ant I can see the verbose Proguard output, and I have things setup to remove the log statements (see below), but when I run the release apk all the log statements I was trying to remove are there.
I have 2 projects each of which include a common project. The 2 main projects and the common project each have a proguard.cfg file, all of which contain the snippet to remove log statements.
Is there something that I am missing?
** All my log statements are Log.d(...)
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-dontobfuscate
-forceprocessing
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
}
Here your proguard file is ok, but there is a detail that you may be missing.
In your gradle file you probably have something like this:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt), 'proguard-rules.pro'
}
}
Check the getDefaultProguardFile('proguard-android')
, so if you intent to optimize it, you should change it to getDefaultProguardFile('proguard-android-optimize.txt')
.
I spent some time to realize it, saw your question but still not able to remove my Log
calls on my code. So I've found this link that explains that is necessary to change to the optimize file to proguard be able to optimize.
https://developer.android.com/tools/help/proguard.html#enabling-gradle
You cannot use assumenosideeffects
without Proguard optimization.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With