This is a configuration file for ProGuard.


This file is no longer maintained and is not used by new (2.2+) versions of the

Android plugin for Gradle. Instead, the Android plugin for Gradle generates the

default rules at build time and stores them in the build directory.

Optimizations: If you don’t want to optimize, use the

proguard-android.txt configuration file instead of this one, which

turns off the optimization flags. Adding optimization introduces

certain risks, since for example not all optimizations performed by

ProGuard works on all versions of Dalvik. The following flags turn

off various optimizations known to have issues, but the list may not

be complete or up to date. (The “arithmetic” optimization can be

used if you are only targeting Android 2.0 or later.) Make sure you

test thoroughly if you go this route.

-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/,!class/merging/
-optimizationpasses 5

The remainder of this file is identical to the non-optimized version

of the Proguard configuration file (except that the other file has

flags to turn off optimization).


-keepattributes Annotation
-keep public class
-keep public class

For native methods, see

-keepclasseswithmembernames class * {
native ;

keep setters in Views so that animations can still work.


-keepclassmembers public class * extends android.view.View {
void set(***);
*** get

We want to keep methods in Activity that could be used in the XML attribute onClick

-keepclassmembers class * extends {
public void *(android.view.View);

For enumeration classes, see

-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);

-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator CREATOR;

-keepclassmembers class **.R$* {
public static ;

The support library contains references to newer platform versions.

Don’t warn about those in case this app is linking against an older

platform version. We know about them, and they are safe.


Understand the @Keep support annotation.

-keep class

-keep class * {*;}

-keepclasseswithmembers class * { ;

-keepclasseswithmembers class * { ;

-keepclasseswithmembers class * { (…);