Created
June 16, 2015 02:04
-
-
Save athkalia/d50ecfaac0b4241c0bef to your computer and use it in GitHub Desktop.
Android Proguard config that just works
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# // PROGUARD CONFIG FOR ALL ANDROID APPS // ******************************************************************************************************************* | |
-optimizationpasses 5 | |
-dontusemixedcaseclassnames | |
-dontskipnonpubliclibraryclasses | |
-dontskipnonpubliclibraryclassmembers | |
-dontpreverify | |
-verbose | |
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* | |
-flattenpackagehierarchy | |
-allowaccessmodification | |
-keepattributes *Annotation* | |
-renamesourcefileattribute SourceFile | |
-keepattributes SourceFile,LineNumberTable | |
-repackageclasses '' | |
-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 | |
-dontnote com.android.vending.licensing.ILicensingService | |
# Explicitly preserve all serialization members. The Serializable interface is only a marker interface, so it wouldn't save them. | |
-keepclassmembers class * implements java.io.Serializable { | |
static final long serialVersionUID; | |
private static final java.io.ObjectStreamField[] serialPersistentFields; | |
private void writeObject(java.io.ObjectOutputStream); | |
private void readObject(java.io.ObjectInputStream); | |
java.lang.Object writeReplace(); | |
java.lang.Object readResolve(); | |
} | |
# Preserve all native method names and the names of their classes. | |
-keepclasseswithmembers class * { | |
native <methods>; | |
} | |
-keepclasseswithmembers class * { | |
public <init>(android.content.Context, android.util.AttributeSet); | |
} | |
-keepclasseswithmembers class * { | |
public <init>(android.content.Context, android.util.AttributeSet, int); | |
} | |
# Preserve static fields of inner classes of R classes that might be accessed through introspection. | |
-keepclassmembers class **.R$* { | |
public static <fields>; | |
} | |
# Preserve the special static methods that are required in all enumeration classes. | |
-keepclassmembers enum * { | |
public static **[] values(); | |
public static ** valueOf(java.lang.String); | |
} | |
-keep public class * { | |
public protected *; | |
} | |
-keep class * implements android.os.Parcelable { | |
public static final android.os.Parcelable$Creator *; | |
} | |
# 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. | |
-dontwarn android.support.** | |
# // PROGUARD CONFIG FOR GSON// ******************************************************************************************************************************** | |
# Gson uses generic type information stored in a class file when working with fields. Proguard removes such information by default, so configure it to keep all | |
# of it. | |
-keepattributes Signature | |
# Gson specific classes. | |
-keep class sun.misc.Unsafe { *; } | |
# Application classes that will be serialized/deserialized over Gson. | |
-keep class your.classes.here.** { *; } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment