diff options
Diffstat (limited to 'third_party/java/proguard/proguard5.3.3/examples/gradle/android.gradle')
-rw-r--r-- | third_party/java/proguard/proguard5.3.3/examples/gradle/android.gradle | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/third_party/java/proguard/proguard5.3.3/examples/gradle/android.gradle b/third_party/java/proguard/proguard5.3.3/examples/gradle/android.gradle new file mode 100644 index 0000000000..b4fe7191c0 --- /dev/null +++ b/third_party/java/proguard/proguard5.3.3/examples/gradle/android.gradle @@ -0,0 +1,195 @@ +// +// This Gradle build file illustrates how to process Android +// applications. +// Usage: +// gradle -b android.gradle proguard +// +// If you're using the Android SDK, the Ant release build and Eclipse export +// already take care of the proper settings. You only need to enable ProGuard +// by commenting in the corresponding line in project.properties. You can still +// add project-specific configuration in proguard-project.txt. +// +// This configuration file is for custom, stand-alone builds. + +// Tell Gradle where to find the ProGuard task. + +buildscript { + repositories { + flatDir dirs: '../../lib' + } + dependencies { + classpath ':proguard' + } +} + +// Define a ProGuard task. + +task proguard(type: proguard.gradle.ProGuardTask) { + + // You should probably import a more compact ProGuard-style configuration + // file for all static settings, but we're specifying them all here, for + // the sake of the example. + //configuration 'configuration.pro' + + // Specify the input jars, output jars, and library jars. + // Note that ProGuard works with Java bytecode (.class), + // before the dex compiler converts it into Dalvik code (.dex). + + injars 'bin/classes' + injars 'libs' + outjars 'bin/classes-processed.jar' + + libraryjars '/usr/local/android-sdk/platforms/android-9/android.jar' + //libraryjars '/usr/local/android-sdk/add-ons/google_apis-7_r01/libs/maps.jar' + // ... + + // Save the obfuscation mapping to a file, so you can de-obfuscate any stack + // traces later on. + + printmapping 'bin/classes-processed.map' + + // You can print out the seeds that are matching the keep options below. + + //printseeds 'bin/classes-processed.seeds' + + // Preverification is irrelevant for the dex compiler and the Dalvik VM. + + dontpreverify + + // Reduce the size of the output some more. + + repackageclasses '' + allowaccessmodification + + // Switch off some optimizations that trip older versions of the Dalvik VM. + + optimizations '!code/simplification/arithmetic' + + // Keep a fixed source file attribute and all line number tables to get line + // numbers in the stack traces. + // You can comment this out if you're not interested in stack traces. + + renamesourcefileattribute 'SourceFile' + keepattributes 'SourceFile,LineNumberTable' + + // RemoteViews might need annotations. + + keepattributes '*Annotation*' + + // Preserve all fundamental application classes. + + keep 'public class * extends android.app.Activity' + keep 'public class * extends android.app.Application' + keep 'public class * extends android.app.Service' + keep 'public class * extends android.content.BroadcastReceiver' + keep 'public class * extends android.content.ContentProvider' + + // Preserve all View implementations, their special context constructors, and + // their setters. + + keep 'public class * extends android.view.View { \ + public <init>(android.content.Context); \ + public <init>(android.content.Context, android.util.AttributeSet); \ + public <init>(android.content.Context, android.util.AttributeSet, int); \ + public void set*(...); \ + }' + + // Preserve all classes that have special context constructors, and the + // constructors themselves. + + keepclasseswithmembers 'class * { \ + public <init>(android.content.Context, android.util.AttributeSet); \ + }' + + // Preserve all classes that have special context constructors, and the + // constructors themselves. + + keepclasseswithmembers 'class * { \ + public <init>(android.content.Context, android.util.AttributeSet, int); \ + }' + + // Preserve all possible onClick handlers. + + keepclassmembers 'class * extends android.content.Context { \ + public void *(android.view.View); \ + public void *(android.view.MenuItem); \ + }' + + // Preserve the special fields of all Parcelable implementations. + + keepclassmembers 'class * implements android.os.Parcelable { \ + static android.os.Parcelable$Creator CREATOR; \ + }' + + // Preserve static fields of inner classes of R classes that might be accessed + // through introspection. + + keepclassmembers 'class **.R$* { \ + public static <fields>; \ + }' + + // Preserve annotated Javascript interface methods. + + keepclassmembers 'class * { \ + @android.webkit.JavascriptInterface <methods>; \ + }' + + // Preserve the required interface from the License Verification Library + // (but don't nag the developer if the library is not used at all). + + keep 'public interface com.android.vending.licensing.ILicensingService' + + dontnote 'com.android.vending.licensing.ILicensingService' + + // The Android Compatibility library references some classes that may not be + // present in all versions of the API, but we know that's ok. + + dontwarn 'android.support.**' + + // Preserve all native method names and the names of their classes. + + keepclasseswithmembernames includedescriptorclasses:true, 'class * { \ + native <methods>; \ + }' + + // Preserve the special static methods that are required in all enumeration + // classes. + + keepclassmembers allowshrinking:true, 'enum * { \ + public static **[] values(); \ + public static ** valueOf(java.lang.String); \ + }' + + // Explicitly preserve all serialization members. The Serializable interface + // is only a marker interface, so it wouldn't save them. + // You can comment this out if your application doesn't use serialization. + // If your code contains serializable classes that have to be backward + // compatible, please refer to the manual. + + keepclassmembers 'class * implements java.io.Serializable { \ + static final long serialVersionUID; \ + static final java.io.ObjectStreamField[] serialPersistentFields; \ + private void writeObject(java.io.ObjectOutputStream); \ + private void readObject(java.io.ObjectInputStream); \ + java.lang.Object writeReplace(); \ + java.lang.Object readResolve(); \ + }' + + // Your application may contain more items that need to be preserved; + // typically classes that are dynamically created using Class.forName: + + //keep 'public class mypackage.MyClass' + //keep 'public interface mypackage.MyInterface' + //keep 'public class * implements mypackage.MyInterface' + + // If you wish, you can let the optimization step remove Android logging + // calls. + //assumenosideeffects class android.util.Log { + // public static boolean isLoggable(java.lang.String, int); + // public static int v(...); + // public static int i(...); + // public static int w(...); + // public static int d(...); + // public static int e(...); + //} +} |