Home | History | Annotate | Download | only in examples
      1 #
      2 # This ProGuard configuration file illustrates how to process Android
      3 # applications.
      4 # Usage:
      5 #     java -jar proguard.jar @android.pro
      6 #
      7 # If you're using the Android SDK (version 2.3 or higher), the android tool
      8 # already creates a file like this in your project, called proguard.cfg.
      9 # It should contain the settings of this file, minus the input and output paths
     10 # (-injars, -outjars, -libraryjars, -printmapping, and -printseeds).
     11 # The generated Ant build file automatically sets these paths.
     12 
     13 # Specify the input jars, output jars, and library jars.
     14 # Note that ProGuard works with Java bytecode (.class),
     15 # before the dex compiler converts it into Dalvik code (.dex).
     16 
     17 -injars  bin/classes
     18 -injars  libs
     19 -outjars bin/classes-processed.jar
     20 
     21 -libraryjars /usr/local/android-sdk/platforms/android-9/android.jar
     22 #-libraryjars /usr/local/android-sdk/add-ons/google_apis-7_r01/libs/maps.jar
     23 # ...
     24 
     25 # Save the obfuscation mapping to a file, so you can de-obfuscate any stack
     26 # traces later on.
     27 
     28 -printmapping bin/classes-processed.map
     29 
     30 # You can print out the seeds that are matching the keep options below.
     31 
     32 #-printseeds bin/classes-processed.seeds
     33 
     34 # Preverification is irrelevant for the dex compiler and the Dalvik VM.
     35 
     36 -dontpreverify
     37 
     38 # Reduce the size of the output some more.
     39 
     40 -repackageclasses ''
     41 -allowaccessmodification
     42 
     43 # Switch off some optimizations that trip older versions of the Dalvik VM.
     44 
     45 -optimizations !code/simplification/arithmetic
     46 
     47 # Keep a fixed source file attribute and all line number tables to get line
     48 # numbers in the stack traces.
     49 # You can comment this out if you're not interested in stack traces.
     50 
     51 -renamesourcefileattribute SourceFile
     52 -keepattributes SourceFile,LineNumberTable
     53 
     54 # RemoteViews might need annotations.
     55 
     56 -keepattributes *Annotation*
     57 
     58 # Preserve all fundamental application classes.
     59 
     60 -keep public class * extends android.app.Activity
     61 -keep public class * extends android.app.Application
     62 -keep public class * extends android.app.Service
     63 -keep public class * extends android.content.BroadcastReceiver
     64 -keep public class * extends android.content.ContentProvider
     65 
     66 # Preserve all View implementations, their special context constructors, and
     67 # their setters.
     68 
     69 -keep public class * extends android.view.View {
     70     public <init>(android.content.Context);
     71     public <init>(android.content.Context, android.util.AttributeSet);
     72     public <init>(android.content.Context, android.util.AttributeSet, int);
     73     public void set*(...);
     74 }
     75 
     76 # Preserve all classes that have special context constructors, and the
     77 # constructors themselves.
     78 
     79 -keepclasseswithmembers class * {
     80     public <init>(android.content.Context, android.util.AttributeSet);
     81 }
     82 
     83 # Preserve all classes that have special context constructors, and the
     84 # constructors themselves.
     85 
     86 -keepclasseswithmembers class * {
     87     public <init>(android.content.Context, android.util.AttributeSet, int);
     88 }
     89 
     90 # Preserve the special fields of all Parcelable implementations.
     91 
     92 -keepclassmembers class * implements android.os.Parcelable {
     93     static android.os.Parcelable$Creator CREATOR;
     94 }
     95 
     96 # Preserve static fields of inner classes of R classes that might be accessed
     97 # through introspection.
     98 
     99 -keepclassmembers class **.R$* {
    100   public static <fields>;
    101 }
    102 
    103 # Preserve the required interface from the License Verification Library
    104 # (but don't nag the developer if the library is not used at all).
    105 
    106 -keep public interface com.android.vending.licensing.ILicensingService
    107 
    108 -dontnote com.android.vending.licensing.ILicensingService
    109 
    110 # The Android Compatibility library references some classes that may not be
    111 # present in all versions of the API, but we know that's ok.
    112 
    113 -dontwarn android.support.**
    114 
    115 # Preserve all native method names and the names of their classes.
    116 
    117 -keepclasseswithmembernames class * {
    118     native <methods>;
    119 }
    120 
    121 # Preserve the special static methods that are required in all enumeration
    122 # classes.
    123 
    124 -keepclassmembers class * extends java.lang.Enum {
    125     public static **[] values();
    126     public static ** valueOf(java.lang.String);
    127 }
    128 
    129 # Explicitly preserve all serialization members. The Serializable interface
    130 # is only a marker interface, so it wouldn't save them.
    131 # You can comment this out if your application doesn't use serialization.
    132 # If your code contains serializable classes that have to be backward 
    133 # compatible, please refer to the manual.
    134 
    135 -keepclassmembers class * implements java.io.Serializable {
    136     static final long serialVersionUID;
    137     static final java.io.ObjectStreamField[] serialPersistentFields;
    138     private void writeObject(java.io.ObjectOutputStream);
    139     private void readObject(java.io.ObjectInputStream);
    140     java.lang.Object writeReplace();
    141     java.lang.Object readResolve();
    142 }
    143 
    144 # Your application may contain more items that need to be preserved; 
    145 # typically classes that are dynamically created using Class.forName:
    146 
    147 # -keep public class mypackage.MyClass
    148 # -keep public interface mypackage.MyInterface
    149 # -keep public class * implements mypackage.MyInterface
    150