1# Copied from http://google3/java/com/google/android/apps/common/proguard/base.flags
2
3# This file is intended to contain proguard options that *nobody* would ever
4# not want, in *any* configuration - they ensure basic correctness, and have
5# no downsides. You probably do not want to make changes to this file.
6
7# The presence of both of these attributes causes dalvik and other jvms to print
8# stack traces on uncaught exceptions, which is necessary to get useful crash
9# reports.
10-keepattributes SourceFile,LineNumberTable
11
12# Preverification was introduced in Java 6 to enable faster classloading, but
13# dex doesn't use the java .class format, so it has no benefit and can cause
14# problems.
15-dontpreverify
16
17# Skipping analysis of some classes may make proguard strip something that's
18# needed.
19-dontskipnonpubliclibraryclasses
20
21# Case-insensitive filesystems can't handle when a.class and A.class exist in
22# the same directory.
23-dontusemixedcaseclassnames
24
25# This prevents the names of native methods from being obfuscated and prevents
26# UnsatisfiedLinkErrors.
27-keepclasseswithmembernames class * {
28    native <methods>;
29}
30
31# hackbod discourages the use of enums on android, but if you use them, they
32# should work. Allow instantiation via reflection by keeping the values method.
33-keepclassmembers enum * {
34    public static **[] values();
35}
36
37# Parcel reflectively accesses this field.
38-keepclassmembers class * implements android.os.Parcelable {
39  public static *** CREATOR;
40}
41
42# These methods are needed to ensure that serialization behaves as expected when
43# classes are obfuscated, shrunk, and/or optimized.
44-keepclassmembers class * implements java.io.Serializable {
45    static final long serialVersionUID;
46    private static final java.io.ObjectStreamField[] serialPersistentFields;
47    private void writeObject(java.io.ObjectOutputStream);
48    private void readObject(java.io.ObjectInputStream);
49    java.lang.Object writeReplace();
50    java.lang.Object readResolve();
51}
52
53# Don't warn about Guava. Any Guava-using app will fail the proguard stage without this dontwarn,
54# and since Guava is so widely used, we include it here in the base.
55-dontwarn com.google.common.**
56
57# Don't warn about Error Prone annotations (e.g. @CompileTimeConstant)
58-dontwarn com.google.errorprone.annotations.**
59
60# Based on http://ag/718466: android.app.Notification.setLatestEventInfo() was
61# removed in MNC, but is still referenced (safely) by the NotificationCompat
62# code.
63-dontwarn android.app.Notification
64
65# Silence notes about dynamically referenced classes from AOSP support
66# libraries.
67-dontnote android.graphics.Insets
68
69# AOSP support library:  ICU references to gender and plurals messages.
70-dontnote libcore.icu.ICU
71-keep class libcore.icu.ICU { *** get(...);}
72
73# AOSP support library:  Handle classes that use reflection.
74-dontnote android.support.v4.app.NotificationCompatJellybean
75