1#
2# This ProGuard configuration file specifies how annotations can be used
3# to configure the processing of other code.
4# Usage:
5#     java -jar proguard.jar @annotations.pro -libraryjars annotations.jar ...
6#
7# Note that the other input/output options still have to be specified.
8# If you specify them in a separate file, you can simply include this file:
9#     -include annotations.pro
10#
11# You can add any other options that are required. For instance, if you are
12# processing a library, you can still include the options from library.pro.
13
14
15# The annotations are defined in the accompanying jar. For now, we'll start
16# with these. You can always define your own annotations, if necessary.
17-libraryjars annotations.jar
18
19
20# The following annotations can be specified with classes and with class
21# members.
22
23# @Keep specifies not to shrink, optimize, or obfuscate the annotated class
24# or class member as an entry point.
25
26-keep @proguard.annotation.Keep class *
27
28-keepclassmembers class * {
29    @proguard.annotation.Keep *;
30}
31
32
33# @KeepName specifies not to optimize or obfuscate the annotated class or
34# class member as an entry point.
35
36-keepnames @proguard.annotation.KeepName class *
37
38-keepclassmembernames class * {
39    @proguard.annotation.KeepName *;
40}
41
42
43# The following annotations can only be specified with classes.
44
45# @KeepImplementations and @KeepPublicImplementations specify to keep all,
46# resp. all public, implementations or extensions of the annotated class as
47# entry points. Note the extension of the java-like syntax, adding annotations
48# before the (wild-carded) interface name.
49
50-keep        class * implements @proguard.annotation.KeepImplementations       *
51-keep public class * implements @proguard.annotation.KeepPublicImplementations *
52
53# @KeepApplication specifies to keep the annotated class as an application,
54# together with its main method.
55
56-keepclasseswithmembers @proguard.annotation.KeepApplication public class * {
57    public static void main(java.lang.String[]);
58}
59
60# @KeepClassMembers, @KeepPublicClassMembers, and
61# @KeepPublicProtectedClassMembers specify to keep all, all public, resp.
62# all public or protected, class members of the annotated class from being
63# shrunk, optimized, or obfuscated as entry points.
64
65-keepclassmembers @proguard.annotation.KeepClassMembers class * {
66    *;
67}
68
69-keepclassmembers @proguard.annotation.KeepPublicClassMembers class * {
70    public *;
71}
72
73-keepclassmembers @proguard.annotation.KeepPublicProtectedClassMembers class * {
74    public protected *;
75}
76
77# @KeepClassMemberNames, @KeepPublicClassMemberNames, and
78# @KeepPublicProtectedClassMemberNames specify to keep all, all public, resp.
79# all public or protected, class members of the annotated class from being
80# optimized or obfuscated as entry points.
81
82-keepclassmembernames @proguard.annotation.KeepClassMemberNames class * {
83    *;
84}
85
86-keepclassmembernames @proguard.annotation.KeepPublicClassMemberNames class * {
87    public *;
88}
89
90-keepclassmembernames @proguard.annotation.KeepPublicProtectedClassMemberNames class * {
91    public protected *;
92}
93
94# @KeepGettersSetters and @KeepPublicGettersSetters specify to keep all, resp.
95# all public, getters and setters of the annotated class from being shrunk,
96# optimized, or obfuscated as entry points.
97
98-keepclassmembers @proguard.annotation.KeepGettersSetters class * {
99    void set*(***);
100    void set*(int, ***);
101
102    boolean is*();
103    boolean is*(int);
104
105    *** get*();
106    *** get*(int);
107}
108
109-keepclassmembers @proguard.annotation.KeepPublicGettersSetters class * {
110    public void set*(***);
111    public void set*(int, ***);
112
113    public boolean is*();
114    public boolean is*(int);
115
116    public *** get*();
117    public *** get*(int);
118}
119