175 lines
5.5 KiB
Prolog
175 lines
5.5 KiB
Prolog
#
|
|
# This ProGuard configuration file illustrates how to process Android
|
|
# applications.
|
|
# Usage:
|
|
# java -jar proguard.jar @android.pro
|
|
#
|
|
# 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.
|
|
|
|
# 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 class * {
|
|
native <methods>;
|
|
}
|
|
|
|
# Preserve the special static methods that are required in all enumeration
|
|
# classes.
|
|
|
|
-keepclassmembers,allowoptimization 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(...);
|
|
#}
|