blob: 4de52219a151bd2544c5f5f28ab5ba35adf7cd8c [file] [log] [blame]
Ying Wang38cdd442013-05-30 10:45:46 -07001# see http://sourceforge.net/tracker/?func=detail&aid=2787465&group_id=54750&atid=474707
2-optimizations !code/simplification/arithmetic
3-optimizations !code/simplification/cast
Ying Wang38cdd442013-05-30 10:45:46 -07004
5# To prevent name conflict in incremental obfuscation.
6-useuniqueclassmembernames
7
8# Some classes in the libraries extend package private classes to chare common functionality
9# that isn't explicitly part of the API
10-dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers
11
Ying Wang57453512013-05-17 10:02:00 -070012# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
13-keepclassmembers enum * {
14 public static **[] values();
15 public static ** valueOf(java.lang.String);
16}
17
18# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
19-keepclasseswithmembernames class * {
20 native <methods>;
21}
22
23# class$ methods are inserted by some compilers to implement .class construct,
24# see http://proguard.sourceforge.net/manual/examples.html#library
25-keepclassmembernames class * {
26 java.lang.Class class$(java.lang.String);
27 java.lang.Class class$(java.lang.String, boolean);
28}
29
Ying Wang57453512013-05-17 10:02:00 -070030# Keep serializable classes and necessary members for serializable classes
31# Copied from the ProGuard manual at http://proguard.sourceforge.net.
32-keepnames class * implements java.io.Serializable
33-keepclassmembers class * implements java.io.Serializable {
34 static final long serialVersionUID;
35 private static final java.io.ObjectStreamField[] serialPersistentFields;
36 !static !transient <fields>;
37 private void writeObject(java.io.ObjectOutputStream);
38 private void readObject(java.io.ObjectInputStream);
39 java.lang.Object writeReplace();
40 java.lang.Object readResolve();
41}
42
Ying Wang480a9bb2015-05-11 14:56:20 -070043# Keep Throwable's constructor that takes a String argument.
44-keepclassmembers class * extends java.lang.Throwable {
45 <init>(java.lang.String);
46}
47
Ying Wang57453512013-05-17 10:02:00 -070048# Please specify classes to be kept explicitly in your package's configuration.
49# -keep class * extends android.app.Activity
50# -keep class * extends android.view.View
51# -keep class * extends android.app.Service
52# -keep class * extends android.content.BroadcastReceiver
53# -keep class * extends android.content.ContentProvider
54# -keep class * extends android.preference.Preference
55# -keep class * extends android.app.BackupAgent
56
Scott Kennedy62eb51a2014-04-07 11:25:47 -070057# Parcelable CREATORs must be kept for Parcelable functionality
58-keep class * implements android.os.Parcelable {
59 public static final ** CREATOR;
60}
Ying Wang57453512013-05-17 10:02:00 -070061
62# The support library contains references to newer platform versions.
63# Don't warn about those in case this app is linking against an older
64# platform version. We know about them, and they are safe.
65# See proguard-android.txt in the SDK package.
Ying Wang4f5d0e62015-05-04 19:21:48 -070066#
67# DO NOT USE THIS: We figured it's dangerous to blindly ignore all support library warnings.
68# ProGuard may strip members of subclass of unknown super classes, in case an app is linking against
69# LOCAL_SDK_VERSION lower than the support library's LOCAL_SDK_VERSION.
70# See bug/20658265.
71# -dontwarn android.support.**
Ying Wangf864d502014-06-17 11:53:31 -070072
73# Less spammy.
74-dontnote