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