aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/java/proguard/proguard5.3.3/examples/gradle/android.gradle
diff options
context:
space:
mode:
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.gradle195
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(...);
+ //}
+}