Source code

Revision control

Other Tools

2
3
# Preserve all annotations.
4
5
-keepattributes *Annotation*
6
7
# Preserve all .class method names.
8
9
-keepclassmembernames class * {
10
java.lang.Class class$(java.lang.String);
11
java.lang.Class class$(java.lang.String, boolean);
12
}
13
14
# Preserve all native method names and the names of their classes.
15
16
-keepclasseswithmembernames,includedescriptorclasses class * {
17
native <methods>;
18
}
19
20
# Preserve the special static methods that are required in all enumeration
21
# classes.
22
23
-keepclassmembers class * extends java.lang.Enum {
24
public static **[] values();
25
public static ** valueOf(java.lang.String);
26
}
27
28
# Explicitly preserve all serialization members. The Serializable interface
29
# is only a marker interface, so it wouldn't save them.
30
# You can comment this out if your library doesn't use serialization.
31
# If your code contains serializable classes that have to be backward
32
# compatible, please refer to the manual.
33
34
-keepclassmembers class * implements java.io.Serializable {
35
static final long serialVersionUID;
36
static final java.io.ObjectStreamField[] serialPersistentFields;
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
43
# Preserve all View implementations and their special context constructors.
44
45
-keep public class * extends android.view.View {
46
public <init>(android.content.Context);
47
public <init>(android.content.Context, android.util.AttributeSet);
48
public <init>(android.content.Context, android.util.AttributeSet, int);
49
public void set*(...);
50
}
51
52
# Keep setters in Views so that animations can still work.
54
# From tools/proguard/proguard-android.txt.
55
-keepclassmembers public class * extends android.view.View {
56
void set*(***);
57
*** get*();
58
}
59
60
# Preserve all classes that have special context constructors, and the
61
# constructors themselves.
62
63
-keepclasseswithmembers class * {
64
public <init>(android.content.Context, android.util.AttributeSet);
65
}
66
67
# Preserve the special fields of all Parcelable implementations.
68
69
-keepclassmembers class * implements android.os.Parcelable {
70
static android.os.Parcelable$Creator CREATOR;
71
}
72
73
# Preserve static fields of inner classes of R classes that might be accessed
74
# through introspection.
75
76
-keepclassmembers class **.R$* {
77
public static <fields>;
78
}
79
80
# GeckoView specific rules.
81
82
# Keep everthing in org.mozilla.geckoview
83
-keep class org.mozilla.geckoview.** { *; }
84
85
-keep class org.mozilla.gecko.SysInfo {
86
*;
87
}
88
89
-keep class org.mozilla.gecko.mozglue.JNIObject {
90
*;
91
}
92
93
-keep class * extends org.mozilla.gecko.mozglue.JNIObject {
94
*;
95
}
96
97
# Keep the annotation.
98
-keep @interface org.mozilla.gecko.annotation.JNITarget
99
100
# Keep classes tagged with the annotation.
101
-keep @org.mozilla.gecko.annotation.JNITarget class *
102
103
# Keep all members of an annotated class.
104
-keepclassmembers @org.mozilla.gecko.annotation.JNITarget class * {
105
*;
106
}
107
108
# Keep annotated members of any class.
109
-keepclassmembers class * {
110
@org.mozilla.gecko.annotation.JNITarget *;
111
}
112
113
# Keep classes which contain at least one annotated element. Split over two directives
114
# because, according to the developer of ProGuard, "the option -keepclasseswithmembers
115
# doesn't combine well with the '*' wildcard" (And, indeed, using it causes things to
116
# be deleted that we want to keep.)
117
-keepclasseswithmembers class * {
118
@org.mozilla.gecko.annotation.JNITarget <methods>;
119
}
120
-keepclasseswithmembers class * {
121
@org.mozilla.gecko.annotation.JNITarget <fields>;
122
}
123
124
# Keep WebRTC targets.
125
-keep @interface org.mozilla.gecko.annotation.WebRTCJNITarget
126
-keep @org.mozilla.gecko.annotation.WebRTCJNITarget class *
127
-keepclassmembers class * {
128
@org.mozilla.gecko.annotation.WebRTCJNITarget *;
129
}
130
-keepclassmembers @org.mozilla.gecko.annotation.WebRTCJNITarget class * {
131
*;
132
}
133
-keepclasseswithmembers class * {
134
@org.mozilla.gecko.annotation.WebRTCJNITarget <methods>;
135
}
136
-keepclasseswithmembers class * {
137
@org.mozilla.gecko.annotation.WebRTCJNITarget <fields>;
138
}
139
140
# Keep generator-targeted entry points.
141
-keep @interface org.mozilla.gecko.annotation.WrapForJNI
142
-keep @org.mozilla.gecko.annotation.WrapForJNI class *
143
-keepclassmembers,includedescriptorclasses class * {
144
@org.mozilla.gecko.annotation.WrapForJNI *;
145
}
146
-keepclasseswithmembers,includedescriptorclasses class * {
147
@org.mozilla.gecko.annotation.WrapForJNI <methods>;
148
}
149
-keepclasseswithmembers,includedescriptorclasses class * {
150
@org.mozilla.gecko.annotation.WrapForJNI <fields>;
151
}
152
153
# Keep all members of an annotated class.
154
-keepclassmembers,includedescriptorclasses @org.mozilla.gecko.annotation.WrapForJNI class * {
155
*;
156
}
157
158
# Keep Reflection targets.
159
-keep @interface org.mozilla.gecko.annotation.ReflectionTarget
160
-keep @org.mozilla.gecko.annotation.ReflectionTarget class *
161
-keepclassmembers class * {
162
@org.mozilla.gecko.annotation.ReflectionTarget *;
163
}
164
-keepclassmembers @org.mozilla.gecko.annotation.ReflectionTarget class * {
165
*;
166
}
167
-keepclasseswithmembers class * {
168
@org.mozilla.gecko.annotation.ReflectionTarget <methods>;
169
}
170
-keepclasseswithmembers class * {
171
@org.mozilla.gecko.annotation.ReflectionTarget <fields>;
172
}
173
174
# Avoid "Warning: org.yaml.snakeyaml.scanner.ScannerImpl: can't find
175
# referenced method 'java.nio.ByteBuffer flip()' in library class
176
# java.nio.ByteBuffer".
177
# Between Java 1.8 and 1.9, the signature of `flip()` changed, which
178
# trips up proguard.
179
180
-dontwarn org.yaml.snakeyaml.scanner.ScannerImpl