1# Some classes in the libraries extend package private classes to chare common functionality 2# that isn't explicitly part of the API 3-dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers 4 5# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations 6-keepclassmembers enum * { 7 public static **[] values(); 8 public static ** valueOf(java.lang.String); 9} 10 11# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native 12-keepclasseswithmembernames class * { 13 native <methods>; 14} 15 16# class$ methods are inserted by some compilers to implement .class construct, 17# see http://proguard.sourceforge.net/manual/examples.html#library 18-keepclassmembernames class * { 19 java.lang.Class class$(java.lang.String); 20 java.lang.Class class$(java.lang.String, boolean); 21} 22 23# Keep serializable classes and necessary members for serializable classes 24# Copied from the ProGuard manual at http://proguard.sourceforge.net. 25-keepnames class * implements java.io.Serializable 26-keepclassmembers class * implements java.io.Serializable { 27 static final long serialVersionUID; 28 private static final java.io.ObjectStreamField[] serialPersistentFields; 29 !static !transient <fields>; 30 private void writeObject(java.io.ObjectOutputStream); 31 private void readObject(java.io.ObjectInputStream); 32 java.lang.Object writeReplace(); 33 java.lang.Object readResolve(); 34} 35 36# Keep Throwable's constructor that takes a String argument. 37-keepclassmembers class * extends java.lang.Throwable { 38 <init>(java.lang.String); 39} 40 41# Please specify classes to be kept explicitly in your package's configuration. 42# -keep class * extends android.app.Activity 43# -keep class * extends android.view.View 44# -keep class * extends android.app.Service 45# -keep class * extends android.content.BroadcastReceiver 46# -keep class * extends android.content.ContentProvider 47# -keep class * extends android.preference.Preference 48# -keep class * extends android.app.BackupAgent 49 50# Parcelable CREATORs must be kept for Parcelable functionality 51-keep class * implements android.os.Parcelable { 52 public static final ** CREATOR; 53} 54 55# The support library contains references to newer platform versions. 56# Don't warn about those in case this app is linking against an older 57# platform version. We know about them, and they are safe. 58# See proguard-android.txt in the SDK package. 59# 60# DO NOT USE THIS: We figured it's dangerous to blindly ignore all support library warnings. 61# ProGuard may strip members of subclass of unknown super classes, in case an app is linking against 62# LOCAL_SDK_VERSION lower than the support library's LOCAL_SDK_VERSION. 63# See bug/20658265. 64# -dontwarn android.support.** 65 66# From https://github.com/google/guava/wiki/UsingProGuardWithGuava 67# Striped64, LittleEndianByteArray, UnsignedBytes, AbstractFuture 68-dontwarn sun.misc.Unsafe 69# Futures.getChecked (which often won't work with Proguard anyway) uses this. It 70# has a fallback, but again, don't use Futures.getChecked on Android regardless. 71-dontwarn java.lang.ClassValue 72 73# Less spammy. 74-dontnote 75 76# The lite proto runtime uses reflection to access fields based on the names in 77# the schema, keep all the fields. 78-keepclassmembers class * extends com.google.protobuf.MessageLite { <fields>; } 79