Order files
This commit is contained in:
41
android/tools/android-osx/tools/proguard/README
Executable file
41
android/tools/android-osx/tools/proguard/README
Executable file
@ -0,0 +1,41 @@
|
||||
ProGuard, Java class file shrinker, optimizer, obfuscator, and preverifier
|
||||
==========================================================================
|
||||
|
||||
This distribution contains the following directories:
|
||||
|
||||
- bin : simple wrapper scripts to run ProGuard, its GUI, and ReTrace
|
||||
- lib : the main jars, compiled and ready to use with "java -jar ...."
|
||||
- docs : the complete documentation, licenses, etc. in html format
|
||||
- examples : some example configuration files
|
||||
|
||||
The best place to start is docs/index.html
|
||||
|
||||
Example
|
||||
=======
|
||||
|
||||
If you want to give ProGuard a spin right away, try processing the ProGuard
|
||||
jar itself:
|
||||
|
||||
cd examples
|
||||
java -jar ../lib/proguard.jar @proguard.pro
|
||||
|
||||
The resulting proguard_out.jar contains the same application, but it's a lot
|
||||
smaller.
|
||||
|
||||
Enjoy!
|
||||
|
||||
http://proguard.sourceforge.net/
|
||||
|
||||
Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
|
||||
Android Addendum:
|
||||
=================
|
||||
NOTE: This distribution is identical to the official Proguard 4.7 release,
|
||||
with the following modifications:
|
||||
- the "src" and "build" directories were deleted (for space considerations)
|
||||
- the task.properties file was moved from src/ into ant/ (to be compatible
|
||||
with the directory structure of earlier bundled versions of ProGuard
|
||||
- this README file was updated to reflect the above changes
|
||||
|
||||
You can download the original proguard4.7.zip, containing the source code,
|
||||
from http://proguard.sourceforge.net/.
|
2
android/tools/android-osx/tools/proguard/ant/task.properties
Executable file
2
android/tools/android-osx/tools/proguard/ant/task.properties
Executable file
@ -0,0 +1,2 @@
|
||||
proguard = proguard.ant.ProGuardTask
|
||||
proguardconfiguration = proguard.ant.ConfigurationTask
|
12
android/tools/android-osx/tools/proguard/bin/proguard.sh
Executable file
12
android/tools/android-osx/tools/proguard/bin/proguard.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Start-up script for ProGuard -- free class file shrinker, optimizer,
|
||||
# obfuscator, and preverifier for Java bytecode.
|
||||
#
|
||||
# Note: when passing file names containing spaces to this script,
|
||||
# you'll have to add escaped quotes around them, e.g.
|
||||
# "\"/My Directory/My File.txt\""
|
||||
|
||||
PROGUARD_HOME=`dirname "$0"`/..
|
||||
|
||||
java -jar $PROGUARD_HOME/lib/proguard.jar "$@"
|
15
android/tools/android-osx/tools/proguard/bin/proguardgui.sh
Executable file
15
android/tools/android-osx/tools/proguard/bin/proguardgui.sh
Executable file
@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Start-up script for the GUI of ProGuard -- free class file shrinker,
|
||||
# optimizer, obfuscator, and preverifier for Java bytecode.
|
||||
#
|
||||
# Note: when passing file names containing spaces to this script,
|
||||
# you'll have to add escaped quotes around them, e.g.
|
||||
# "\"/My Directory/My File.txt\""
|
||||
|
||||
PROGUARD_HOME=`dirname "$0"`/..
|
||||
|
||||
# On Linux, Java 1.6.0_24 and higher hang when starting the GUI:
|
||||
# http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7027598
|
||||
# We're using the -D option as a workaround.
|
||||
java -DsuppressSwingDropSupport=true -jar $PROGUARD_HOME/lib/proguardgui.jar "$@"
|
12
android/tools/android-osx/tools/proguard/bin/retrace.sh
Executable file
12
android/tools/android-osx/tools/proguard/bin/retrace.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Start-up script for Retrace -- companion tool for ProGuard, free class file
|
||||
# shrinker, optimizer, obfuscator, and preverifier for Java bytecode.
|
||||
#
|
||||
# Note: when passing file names containing spaces to this script,
|
||||
# you'll have to add escaped quotes around them, e.g.
|
||||
# "\"/My Directory/My File.txt\""
|
||||
|
||||
PROGUARD_HOME=`dirname "$0"`/..
|
||||
|
||||
java -jar $PROGUARD_HOME/lib/retrace.jar "$@"
|
149
android/tools/android-osx/tools/proguard/examples/android.pro
Executable file
149
android/tools/android-osx/tools/proguard/examples/android.pro
Executable file
@ -0,0 +1,149 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process Android
|
||||
# applications.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @android.pro
|
||||
#
|
||||
# If you're using the Android SDK (version 2.3 or higher), the android tool
|
||||
# already creates a file like this in your project, called proguard.cfg.
|
||||
# It should contain the settings of this file, minus the input and output paths
|
||||
# (-injars, -outjars, -libraryjars, -printmapping, and -printseeds).
|
||||
# The generated Ant build file automatically sets these paths.
|
||||
|
||||
# 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 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 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 class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Preserve the special static methods that are required in all enumeration
|
||||
# classes.
|
||||
|
||||
-keepclassmembers class * extends java.lang.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
|
60
android/tools/android-osx/tools/proguard/examples/annotations/examples.pro
Executable file
60
android/tools/android-osx/tools/proguard/examples/annotations/examples.pro
Executable file
@ -0,0 +1,60 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to use annotations for
|
||||
# specifying which classes and class members should be kept.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @examples.pro
|
||||
#
|
||||
|
||||
# Specify the input, output, and library jars.
|
||||
# This is assuming the code has been compiled in the examples directory.
|
||||
|
||||
-injars examples(*.class)
|
||||
-outjars out
|
||||
|
||||
-libraryjars <java.home>/lib/rt.jar
|
||||
|
||||
# Some important configuration is based on the annotations in the code.
|
||||
# We have to specify what the annotations mean to ProGuard.
|
||||
|
||||
-include lib/annotations.pro
|
||||
|
||||
#
|
||||
# We can then still add any other options that might be useful.
|
||||
#
|
||||
|
||||
# Print out a list of what we're preserving.
|
||||
|
||||
-printseeds
|
||||
|
||||
# Preserve all annotations themselves.
|
||||
|
||||
-keepattributes *Annotation*
|
||||
|
||||
# Preserve all native method names and the names of their classes.
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Preserve the special static methods that are required in all enumeration
|
||||
# classes.
|
||||
|
||||
-keepclassmembers class * extends java.lang.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();
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
import proguard.annotation.*;
|
||||
|
||||
/**
|
||||
* This applet illustrates the use of annotations for configuring ProGuard.
|
||||
*
|
||||
* You can compile it with:
|
||||
* javac -classpath ../lib/annotations.jar Applet.java
|
||||
* You can then process it with:
|
||||
* java -jar ../../../lib/proguard.jar @ ../examples.pro
|
||||
*
|
||||
* The annotation will preserve the class and its essential methods.
|
||||
*/
|
||||
@Keep
|
||||
public class Applet extends java.applet.Applet
|
||||
{
|
||||
// Implementations for Applet.
|
||||
|
||||
public void init()
|
||||
{
|
||||
// ...
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
import proguard.annotation.KeepApplication;
|
||||
|
||||
/**
|
||||
* This application illustrates the use of annotations for configuring ProGuard.
|
||||
*
|
||||
* You can compile it with:
|
||||
* javac -classpath ../lib/annotations.jar Application.java
|
||||
* You can then process it with:
|
||||
* java -jar ../../../lib/proguard.jar @ ../examples.pro
|
||||
*
|
||||
* The annotation will preserve the class and its main method.
|
||||
*/
|
||||
@KeepApplication
|
||||
public class Application
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
System.out.println("The answer is 42");
|
||||
}
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
import proguard.annotation.*;
|
||||
|
||||
/**
|
||||
* This bean illustrates the use of annotations for configuring ProGuard.
|
||||
*
|
||||
* You can compile it with:
|
||||
* javac -classpath ../lib/annotations.jar Bean.java
|
||||
* You can then process it with:
|
||||
* java -jar ../../../lib/proguard.jar @ ../examples.pro
|
||||
*
|
||||
* The annotations will preserve the class and its public getters and setters.
|
||||
*/
|
||||
@Keep
|
||||
@KeepPublicGettersSetters
|
||||
public class Bean
|
||||
{
|
||||
public boolean booleanProperty;
|
||||
public int intProperty;
|
||||
public String stringProperty;
|
||||
|
||||
|
||||
public boolean isBooleanProperty()
|
||||
{
|
||||
return booleanProperty;
|
||||
}
|
||||
|
||||
|
||||
public void setBooleanProperty(boolean booleanProperty)
|
||||
{
|
||||
this.booleanProperty = booleanProperty;
|
||||
}
|
||||
|
||||
|
||||
public int getIntProperty()
|
||||
{
|
||||
return intProperty;
|
||||
}
|
||||
|
||||
|
||||
public void setIntProperty(int intProperty)
|
||||
{
|
||||
this.intProperty = intProperty;
|
||||
}
|
||||
|
||||
|
||||
public String getStringProperty()
|
||||
{
|
||||
return stringProperty;
|
||||
}
|
||||
|
||||
|
||||
public void setStringProperty(String stringProperty)
|
||||
{
|
||||
this.stringProperty = stringProperty;
|
||||
}
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
import proguard.annotation.*;
|
||||
|
||||
/**
|
||||
* This application illustrates the use of annotations for configuring ProGuard.
|
||||
*
|
||||
* You can compile it with:
|
||||
* javac -classpath ../lib/annotations.jar NativeCallBack.java
|
||||
* You can then process it with:
|
||||
* java -jar ../../../lib/proguard.jar @ ../examples.pro
|
||||
*
|
||||
* The annotation will preserve the class and its main method.
|
||||
*/
|
||||
@KeepApplication
|
||||
public class NativeCallBack
|
||||
{
|
||||
/**
|
||||
* Suppose this is a native method that computes an answer.
|
||||
*
|
||||
* The -keep option regular ProGuard configuration will make sure it is
|
||||
* not renamed when processing this code.
|
||||
*/
|
||||
public native int computeAnswer();
|
||||
|
||||
|
||||
/**
|
||||
* Suppose this method is called back from the above native method.
|
||||
*
|
||||
* ProGuard would remove it, because it is not referenced from java.
|
||||
* The annotation will make sure it is preserved anyhow.
|
||||
*/
|
||||
@Keep
|
||||
public int getAnswer()
|
||||
{
|
||||
return 42;
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
int answer = new NativeCallBack().computeAnswer();
|
||||
|
||||
System.out.println("The answer is " + answer);
|
||||
}
|
||||
}
|
Binary file not shown.
@ -0,0 +1,118 @@
|
||||
#
|
||||
# This ProGuard configuration file specifies how annotations can be used
|
||||
# to configure the processing of other code.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @annotations.pro -libraryjars annotations.jar ...
|
||||
#
|
||||
# Note that the other input/output options still have to be specified.
|
||||
# If you specify them in a separate file, you can simply include this file:
|
||||
# -include annotations.pro
|
||||
#
|
||||
# You can add any other options that are required. For instance, if you are
|
||||
# processing a library, you can still include the options from library.pro.
|
||||
|
||||
|
||||
# The annotations are defined in the accompanying jar. For now, we'll start
|
||||
# with these. You can always define your own annotations, if necessary.
|
||||
-libraryjars annotations.jar
|
||||
|
||||
|
||||
# The following annotations can be specified with classes and with class
|
||||
# members.
|
||||
|
||||
# @Keep specifies not to shrink, optimize, or obfuscate the annotated class
|
||||
# or class member as an entry point.
|
||||
|
||||
-keep @proguard.annotation.Keep class *
|
||||
|
||||
-keepclassmembers class * {
|
||||
@proguard.annotation.Keep *;
|
||||
}
|
||||
|
||||
|
||||
# @KeepName specifies not to optimize or obfuscate the annotated class or
|
||||
# class member as an entry point.
|
||||
|
||||
-keepnames @proguard.annotation.KeepName class *
|
||||
|
||||
-keepclassmembernames class * {
|
||||
@proguard.annotation.KeepName *;
|
||||
}
|
||||
|
||||
|
||||
# The following annotations can only be specified with classes.
|
||||
|
||||
# @KeepImplementations and @KeepPublicImplementations specify to keep all,
|
||||
# resp. all public, implementations or extensions of the annotated class as
|
||||
# entry points. Note the extension of the java-like syntax, adding annotations
|
||||
# before the (wild-carded) interface name.
|
||||
|
||||
-keep class * implements @proguard.annotation.KeepImplementations *
|
||||
-keep public class * implements @proguard.annotation.KeepPublicImplementations *
|
||||
|
||||
# @KeepApplication specifies to keep the annotated class as an application,
|
||||
# together with its main method.
|
||||
|
||||
-keepclasseswithmembers @proguard.annotation.KeepApplication public class * {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
||||
|
||||
# @KeepClassMembers, @KeepPublicClassMembers, and
|
||||
# @KeepPublicProtectedClassMembers specify to keep all, all public, resp.
|
||||
# all public or protected, class members of the annotated class from being
|
||||
# shrunk, optimized, or obfuscated as entry points.
|
||||
|
||||
-keepclassmembers @proguard.annotation.KeepClassMembers class * {
|
||||
*;
|
||||
}
|
||||
|
||||
-keepclassmembers @proguard.annotation.KeepPublicClassMembers class * {
|
||||
public *;
|
||||
}
|
||||
|
||||
-keepclassmembers @proguard.annotation.KeepPublicProtectedClassMembers class * {
|
||||
public protected *;
|
||||
}
|
||||
|
||||
# @KeepClassMemberNames, @KeepPublicClassMemberNames, and
|
||||
# @KeepPublicProtectedClassMemberNames specify to keep all, all public, resp.
|
||||
# all public or protected, class members of the annotated class from being
|
||||
# optimized or obfuscated as entry points.
|
||||
|
||||
-keepclassmembernames @proguard.annotation.KeepClassMemberNames class * {
|
||||
*;
|
||||
}
|
||||
|
||||
-keepclassmembernames @proguard.annotation.KeepPublicClassMemberNames class * {
|
||||
public *;
|
||||
}
|
||||
|
||||
-keepclassmembernames @proguard.annotation.KeepPublicProtectedClassMemberNames class * {
|
||||
public protected *;
|
||||
}
|
||||
|
||||
# @KeepGettersSetters and @KeepPublicGettersSetters specify to keep all, resp.
|
||||
# all public, getters and setters of the annotated class from being shrunk,
|
||||
# optimized, or obfuscated as entry points.
|
||||
|
||||
-keepclassmembers @proguard.annotation.KeepGettersSetters class * {
|
||||
void set*(***);
|
||||
void set*(int, ***);
|
||||
|
||||
boolean is*();
|
||||
boolean is*(int);
|
||||
|
||||
*** get*();
|
||||
*** get*(int);
|
||||
}
|
||||
|
||||
-keepclassmembers @proguard.annotation.KeepPublicGettersSetters class * {
|
||||
public void set*(***);
|
||||
public void set*(int, ***);
|
||||
|
||||
public boolean is*();
|
||||
public boolean is*(int);
|
||||
|
||||
public *** get*();
|
||||
public *** get*(int);
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies not to optimize or obfuscate the annotated class or
|
||||
* class member as an entry point.
|
||||
*/
|
||||
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.CONSTRUCTOR })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface Keep {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep the annotated class as an application,
|
||||
* together with its a main method.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepApplication {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep all class members of the annotated class
|
||||
* from being optimized or obfuscated as entry points.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepClassMemberNames {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep all class members of the annotated class
|
||||
* from being shrunk, optimized, or obfuscated as entry points.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepClassMembers {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep all getters and setters of the annotated
|
||||
* class from being shrunk, optimized, or obfuscated as entry points.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepGettersSetters {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep all implementations or extensions of the
|
||||
* annotated class as entry points.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepImplementations {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies not to optimize or obfuscate the annotated class or
|
||||
* class member as an entry point.
|
||||
*/
|
||||
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.CONSTRUCTOR })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepName {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep all public class members of the annotated
|
||||
* class from being optimized or obfuscated as entry points.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepPublicClassMemberNames {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep all public class members of the annotated
|
||||
* class from being shrunk, optimized, or obfuscated as entry points.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepPublicClassMembers {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep all public getters and setters of the
|
||||
* annotated class from being shrunk, optimized, or obfuscated as entry points.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepPublicGettersSetters {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep all public implementations or extensions
|
||||
* of the annotated class as entry points.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepPublicImplementations {}
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep all public or protected class members of
|
||||
* the annotated class from being optimized or obfuscated as entry points.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepPublicProtectedClassMemberNames {}
|
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
||||
* of Java bytecode.
|
||||
*
|
||||
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
|
||||
*/
|
||||
package proguard.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* This annotation specifies to keep all public or protected class members of
|
||||
* the annotated class from being shrunk, optimized, or obfuscated as entry
|
||||
* points.
|
||||
*/
|
||||
@Target({ ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface KeepPublicProtectedClassMembers {}
|
177
android/tools/android-osx/tools/proguard/examples/ant/android-8.xml
Executable file
177
android/tools/android-osx/tools/proguard/examples/ant/android-8.xml
Executable file
@ -0,0 +1,177 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="MyAndroidApp" default="help">
|
||||
|
||||
<!-- The local.properties file is created and updated by the 'android'
|
||||
tool.
|
||||
It contains the path to the SDK. It should *NOT* be checked into
|
||||
Version Control Systems. -->
|
||||
<property file="local.properties" />
|
||||
|
||||
<!-- The build.properties file can be created by you and is never touched
|
||||
by the 'android' tool. This is the place to change some of the
|
||||
default property values used by the Ant rules.
|
||||
Here are some properties you may want to change/update:
|
||||
|
||||
source.dir
|
||||
The name of the source directory. Default is 'src'.
|
||||
out.dir
|
||||
The name of the output directory. Default is 'bin'.
|
||||
|
||||
Properties related to the SDK location or the project target should
|
||||
be updated using the 'android' tool with the 'update' action.
|
||||
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems.
|
||||
|
||||
-->
|
||||
<property file="build.properties" />
|
||||
|
||||
<!-- The default.properties file is created and updated by the 'android'
|
||||
tool, as well as ADT.
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems. -->
|
||||
<property file="default.properties" />
|
||||
|
||||
<!-- Custom Android task to deal with the project target, and import the
|
||||
proper rules.
|
||||
This requires ant 1.6.0 or above. -->
|
||||
<path id="android.antlibs">
|
||||
<pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
|
||||
<pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
|
||||
<pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
|
||||
</path>
|
||||
|
||||
<taskdef name="setup"
|
||||
classname="com.android.ant.SetupTask"
|
||||
classpathref="android.antlibs" />
|
||||
|
||||
<!-- extension targets. Uncomment the ones where you want to do custom work
|
||||
in between standard targets -->
|
||||
<!--
|
||||
<target name="-pre-build">
|
||||
</target>
|
||||
<target name="-pre-compile">
|
||||
</target>
|
||||
|
||||
[This is typically used for code obfuscation.
|
||||
Compiled code location: ${out.classes.absolute.dir}
|
||||
If this is not done in place, override ${out.dex.input.absolute.dir}]
|
||||
<target name="-post-compile">
|
||||
</target>
|
||||
-->
|
||||
|
||||
|
||||
<!-- Execute the Android Setup task that will setup some properties
|
||||
specific to the target, and import the build rules files.
|
||||
|
||||
The rules file is imported from
|
||||
<SDK>/platforms/<target_platform>/ant/ant_rules_r#.xml
|
||||
|
||||
To customize existing targets, there are two options:
|
||||
- Customize only one target:
|
||||
- copy/paste the target into this file, *before* the
|
||||
<setup> task.
|
||||
- customize it to your needs.
|
||||
- Customize the whole script.
|
||||
- copy/paste the content of the rules files (minus the top node)
|
||||
into this file, *after* the <setup> task
|
||||
- disable the import of the rules by changing the setup task
|
||||
below to <setup import="false" />.
|
||||
- customize to your needs.
|
||||
-->
|
||||
|
||||
<setup />
|
||||
|
||||
<!-- Define a place for the optimized classes. -->
|
||||
<property name="out.proguard.absolute.jar"
|
||||
location="${out.absolute.dir}/classes-processed.jar" />
|
||||
|
||||
<!-- Define a obfuscation mapping file. -->
|
||||
<property name="out.proguard.absolute.map"
|
||||
location="${out.absolute.dir}/classes-processed.map" />
|
||||
|
||||
<!-- Redefine the dex help macro, so it converts the optimized classes.. -->
|
||||
<macrodef name="dex-helper">
|
||||
<element name="external-libs" optional="yes" />
|
||||
<element name="extra-parameters" optional="yes" />
|
||||
<sequential>
|
||||
<echo>Converting optimized files into ${intermediate.dex.file}...</echo>
|
||||
<apply executable="${dx}" failonerror="true" parallel="true">
|
||||
<arg value="--dex" />
|
||||
<arg value="--output=${intermediate.dex.file}" />
|
||||
<extra-parameters />
|
||||
<arg line="${verbose.option}" />
|
||||
<fileset file="${out.proguard.absolute.jar}" />
|
||||
<external-libs />
|
||||
</apply>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!-- Define the optimization target. -->
|
||||
<taskdef resource="proguard/ant/task.properties"
|
||||
classpath="/home/eric/ProGuard/releases/proguard4.5.1/lib/proguard.jar" />
|
||||
|
||||
<target name="-post-compile">
|
||||
<echo>Optimizing compiled files and libraries into ${out.proguard.absolute.jar}...</echo>
|
||||
<proguard printmapping="${out.proguard.absolute.map}">
|
||||
<injar path="${out.classes.absolute.dir}" />
|
||||
<injar path="${external.libs.absolute.dir}" />
|
||||
<outjar path="${out.proguard.absolute.jar}" />
|
||||
<libraryjar refid="android.target.classpath" />
|
||||
|
||||
-dontpreverify
|
||||
-repackageclasses ''
|
||||
-allowaccessmodification
|
||||
-optimizations !code/simplification/arithmetic
|
||||
|
||||
<!--
|
||||
-renamesourcefileattribute SourceFile
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
-->
|
||||
|
||||
-keepattributes *Annotation*
|
||||
|
||||
-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
|
||||
|
||||
-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*(...);
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
public <init>(android.content.Context, android.util.AttributeSet);
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
public <init>(android.content.Context, android.util.AttributeSet, int);
|
||||
}
|
||||
|
||||
-keepclassmembers class * implements android.os.Parcelable {
|
||||
static android.os.Parcelable$Creator CREATOR;
|
||||
}
|
||||
|
||||
-keepclassmembers class **.R$* {
|
||||
public static <fields>;
|
||||
}
|
||||
|
||||
-keep public interface com.android.vending.licensing.ILicensingService
|
||||
-dontnote com.android.vending.licensing.ILicensingService
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
-keepclassmembers class * extends java.lang.Enum {
|
||||
public static **[] values();
|
||||
public static ** valueOf(java.lang.String);
|
||||
}
|
||||
</proguard>
|
||||
</target>
|
||||
|
||||
</project>
|
88
android/tools/android-osx/tools/proguard/examples/ant/applets.xml
Executable file
88
android/tools/android-osx/tools/proguard/examples/ant/applets.xml
Executable file
@ -0,0 +1,88 @@
|
||||
<!-- This Ant build file illustrates how to process applets.
|
||||
Usage: ant -f applets.xml -->
|
||||
|
||||
<project name="Applets" default="obfuscate" basedir="../..">
|
||||
|
||||
<target name="obfuscate">
|
||||
<taskdef resource="proguard/ant/task.properties"
|
||||
classpath="lib/proguard.jar" />
|
||||
|
||||
<proguard printseeds="on"
|
||||
printmapping="out.map"
|
||||
renamesourcefileattribute="SourceFile">
|
||||
|
||||
<!-- Specify the input jars, output jars, and library jars. -->
|
||||
|
||||
<injar file="in.jar" />
|
||||
<outjar file="out.jar" />
|
||||
|
||||
<libraryjar file="${java.home}/lib/rt.jar" />
|
||||
|
||||
<!-- Optionally preserve line numbers in the obfuscated stack traces.
|
||||
<keepattribute name="LineNumberTable">
|
||||
<keepattribute name="SourceFile">
|
||||
-->
|
||||
|
||||
<!-- Preserve all annotations. -->
|
||||
|
||||
<keepattribute name="*Annotation*" />
|
||||
|
||||
<!-- Preserve all public applets. -->
|
||||
|
||||
<keep access="public" extends="java.applet.Applet" />
|
||||
|
||||
<!-- Preserve all native method names and the names of their classes. -->
|
||||
|
||||
<keepclasseswithmembernames>
|
||||
<method access="native" />
|
||||
</keepclasseswithmembernames>
|
||||
|
||||
<!-- Preserve the methods that are required in all enumeration classes. -->
|
||||
|
||||
<keepclassmembers extends="java.lang.Enum">
|
||||
<method access="public static"
|
||||
type="**[]"
|
||||
name="values"
|
||||
parameters="" />
|
||||
<method access="public static"
|
||||
type="**"
|
||||
name="valueOf"
|
||||
parameters="java.lang.String" />
|
||||
</keepclassmembers>
|
||||
|
||||
<!-- 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 library doesn't use serialization.
|
||||
If your code contains serializable classes that have to be backward
|
||||
compatible, please refer to the manual. -->
|
||||
|
||||
<keepclassmembers implements="java.io.Serializable">
|
||||
<field access ="static final"
|
||||
type ="long"
|
||||
name ="serialVersionUID" />
|
||||
<field access ="static final"
|
||||
type ="java.io.ObjectStreamField[]"
|
||||
name ="serialPersistentFields" />
|
||||
<method access ="private"
|
||||
type ="void"
|
||||
name ="writeObject"
|
||||
parameters="java.io.ObjectOutputStream" />
|
||||
<method access ="private"
|
||||
type ="void"
|
||||
name ="readObject"
|
||||
parameters="java.io.ObjectInputStream" />
|
||||
<method type ="java.lang.Object"
|
||||
name ="writeReplace"
|
||||
parameters="" />
|
||||
<method type ="java.lang.Object"
|
||||
name ="readResolve"
|
||||
parameters="" />
|
||||
</keepclassmembers>
|
||||
|
||||
<!-- Your application may contain more items that need to be preserved;
|
||||
typically classes that are dynamically created using Class.forName -->
|
||||
|
||||
</proguard>
|
||||
</target>
|
||||
|
||||
</project>
|
15
android/tools/android-osx/tools/proguard/examples/ant/applications1.xml
Executable file
15
android/tools/android-osx/tools/proguard/examples/ant/applications1.xml
Executable file
@ -0,0 +1,15 @@
|
||||
<!-- This Ant build file illustrates how to process applications,
|
||||
by including a ProGuard-style configuration file.
|
||||
Usage: ant -f applications1.xml -->
|
||||
|
||||
<project name="Applications" default="obfuscate" basedir="../..">
|
||||
|
||||
<target name="obfuscate">
|
||||
<taskdef resource="proguard/ant/task.properties"
|
||||
classpath="lib/proguard.jar" />
|
||||
|
||||
<proguard configuration="examples/applications.pro" />
|
||||
|
||||
</target>
|
||||
|
||||
</project>
|
74
android/tools/android-osx/tools/proguard/examples/ant/applications2.xml
Executable file
74
android/tools/android-osx/tools/proguard/examples/ant/applications2.xml
Executable file
@ -0,0 +1,74 @@
|
||||
<!-- This Ant build file illustrates how to process applications,
|
||||
by including ProGuard-style configuration options.
|
||||
Usage: ant -f applications2.xml -->
|
||||
|
||||
<project name="Applications" default="obfuscate" basedir="../..">
|
||||
|
||||
<target name="obfuscate">
|
||||
<taskdef resource="proguard/ant/task.properties"
|
||||
classpath="lib/proguard.jar" />
|
||||
|
||||
<proguard>
|
||||
|
||||
<!-- Specify the input jars, output jars, and library jars. -->
|
||||
|
||||
-injars in.jar
|
||||
-outjars out.jar
|
||||
|
||||
-libraryjars ${java.home}/lib/rt.jar
|
||||
<!-- -libraryjars junit.jar -->
|
||||
<!-- -libraryjars servlet.jar -->
|
||||
<!-- -libraryjars jai_core.jar -->
|
||||
<!-- ... -->
|
||||
|
||||
<!-- Save the obfuscation mapping to a file, and preserve line numbers. -->
|
||||
|
||||
-printmapping out.map
|
||||
-renamesourcefileattribute SourceFile
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
<!-- Preserve all annotations. -->
|
||||
|
||||
-keepattributes *Annotation*
|
||||
|
||||
<!-- Preserve all public applications. -->
|
||||
|
||||
-keepclasseswithmembers public class * {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
||||
|
||||
<!-- Preserve all native method names and the names of their classes. -->
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
<!-- Preserve the methods that are required in all enumeration classes. -->
|
||||
|
||||
-keepclassmembers class * extends java.lang.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 library 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 -->
|
||||
|
||||
</proguard>
|
||||
</target>
|
||||
|
||||
</project>
|
98
android/tools/android-osx/tools/proguard/examples/ant/applications3.xml
Executable file
98
android/tools/android-osx/tools/proguard/examples/ant/applications3.xml
Executable file
@ -0,0 +1,98 @@
|
||||
<!-- This Ant build file illustrates how to process applications,
|
||||
using a full-blown XML configuration.
|
||||
Usage: ant -f applications3.xml -->
|
||||
|
||||
<project name="Applications" default="obfuscate" basedir="../..">
|
||||
|
||||
<target name="obfuscate">
|
||||
<taskdef resource="proguard/ant/task.properties"
|
||||
classpath="lib/proguard.jar" />
|
||||
|
||||
<proguard printseeds="on"
|
||||
printmapping="out.map"
|
||||
renamesourcefileattribute="SourceFile">
|
||||
|
||||
<!-- Specify the input jars, output jars, and library jars. -->
|
||||
|
||||
<injar file="in.jar" />
|
||||
<outjar file="out.jar" />
|
||||
|
||||
<libraryjar file="${java.home}/lib/rt.jar" />
|
||||
<!-- libraryjar file="junit.jar" / -->
|
||||
<!-- libraryjar file="servlet.jar" / -->
|
||||
<!-- libraryjar file="jai_core.jar" / -->
|
||||
<!-- ... / -->
|
||||
|
||||
<!-- Preserve line numbers in the obfuscated stack traces. -->
|
||||
|
||||
<keepattribute name="LineNumberTable" />
|
||||
<keepattribute name="SourceFile" />
|
||||
|
||||
<!-- Preserve all annotations. -->
|
||||
|
||||
<keepattribute name="*Annotation*" />
|
||||
|
||||
<!-- Preserve all public applications. -->
|
||||
|
||||
<keepclasseswithmembers access="public">
|
||||
<method access ="public static"
|
||||
type ="void"
|
||||
name ="main"
|
||||
parameters="java.lang.String[]" />
|
||||
</keepclasseswithmembers>
|
||||
|
||||
<!-- Preserve all native method names and the names of their classes. -->
|
||||
|
||||
<keepclasseswithmembernames>
|
||||
<method access="native" />
|
||||
</keepclasseswithmembernames>
|
||||
|
||||
<!-- Preserve the methods that are required in all enumeration classes. -->
|
||||
|
||||
<keepclassmembers extends="java.lang.Enum">
|
||||
<method access="public static"
|
||||
type="**[]"
|
||||
name="values"
|
||||
parameters="" />
|
||||
<method access="public static"
|
||||
type="**"
|
||||
name="valueOf"
|
||||
parameters="java.lang.String" />
|
||||
</keepclassmembers>
|
||||
|
||||
<!-- 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 library doesn't use serialization.
|
||||
If your code contains serializable classes that have to be backward
|
||||
compatible, please refer to the manual. -->
|
||||
|
||||
<keepclassmembers implements="java.io.Serializable">
|
||||
<field access ="static final"
|
||||
type ="long"
|
||||
name ="serialVersionUID" />
|
||||
<field access ="static final"
|
||||
type ="java.io.ObjectStreamField[]"
|
||||
name ="serialPersistentFields" />
|
||||
<method access ="private"
|
||||
type ="void"
|
||||
name ="writeObject"
|
||||
parameters="java.io.ObjectOutputStream" />
|
||||
<method access ="private"
|
||||
type ="void"
|
||||
name ="readObject"
|
||||
parameters="java.io.ObjectInputStream" />
|
||||
<method type ="java.lang.Object"
|
||||
name ="writeReplace"
|
||||
parameters="" />
|
||||
<method type ="java.lang.Object"
|
||||
name ="readResolve"
|
||||
parameters="" />
|
||||
</keepclassmembers>
|
||||
|
||||
<!-- Your application may contain more items that need to be preserved;
|
||||
typically classes that are dynamically created using Class.forName -->
|
||||
|
||||
</proguard>
|
||||
</target>
|
||||
|
||||
</project>
|
102
android/tools/android-osx/tools/proguard/examples/ant/library.xml
Executable file
102
android/tools/android-osx/tools/proguard/examples/ant/library.xml
Executable file
@ -0,0 +1,102 @@
|
||||
<!-- This Ant build file illustrates how to process a program library,
|
||||
such that it remains usable as a library.
|
||||
Usage: ant -f library.xml -->
|
||||
|
||||
<project name="Library" default="obfuscate" basedir="../..">
|
||||
|
||||
<target name="obfuscate">
|
||||
<taskdef resource="proguard/ant/task.properties"
|
||||
classpath="lib/proguard.jar" />
|
||||
|
||||
<proguard printmapping="out.map"
|
||||
renamesourcefileattribute="SourceFile">
|
||||
|
||||
<!-- Specify the input jars, output jars, and library jars. -->
|
||||
|
||||
<injar file="library.jar" />
|
||||
<outjar file="library_out.jar" />
|
||||
|
||||
<libraryjar file="${java.home}/lib/rt.jar" />
|
||||
|
||||
<!-- Keep some useful attributes. -->
|
||||
|
||||
<keepattribute name="InnerClasses" />
|
||||
<keepattribute name="SourceFile" />
|
||||
<keepattribute name="LineNumberTable" />
|
||||
<keepattribute name="Deprecated" />
|
||||
<keepattribute name="*Annotation*" />
|
||||
|
||||
<!-- Preserve all public classes, and their public and protected fields
|
||||
and methods. -->
|
||||
|
||||
<keep access="public">
|
||||
<field access="public protected" />
|
||||
<method access="public protected" />
|
||||
</keep>
|
||||
|
||||
<!-- Preserve all .class method names. -->
|
||||
|
||||
<keepclassmembernames access="public">
|
||||
<method type ="java.lang.Class"
|
||||
name ="class$"
|
||||
parameters="java.lang.String" />
|
||||
<method type ="java.lang.Class"
|
||||
name ="class$"
|
||||
parameters="java.lang.String,boolean" />
|
||||
</keepclassmembernames>
|
||||
|
||||
<!-- Preserve all native method names and the names of their classes. -->
|
||||
|
||||
<keepclasseswithmembernames>
|
||||
<method access="native" />
|
||||
</keepclasseswithmembernames>
|
||||
|
||||
<!-- Preserve the methods that are required in all enumeration classes. -->
|
||||
|
||||
<keepclassmembers extends="java.lang.Enum">
|
||||
<method access="public static"
|
||||
type="**[]"
|
||||
name="values"
|
||||
parameters="" />
|
||||
<method access="public static"
|
||||
type="**"
|
||||
name="valueOf"
|
||||
parameters="java.lang.String" />
|
||||
</keepclassmembers>
|
||||
|
||||
<!-- 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 library doesn't use serialization.
|
||||
If your code contains serializable classes that have to be backward
|
||||
compatible, please refer to the manual. -->
|
||||
|
||||
<keepclassmembers implements="java.io.Serializable">
|
||||
<field access ="final"
|
||||
type ="long"
|
||||
name ="serialVersionUID" />
|
||||
<field access ="static final"
|
||||
type ="java.io.ObjectStreamField[]"
|
||||
name ="serialPersistentFields" />
|
||||
<method access ="private"
|
||||
type ="void"
|
||||
name ="writeObject"
|
||||
parameters="java.io.ObjectOutputStream" />
|
||||
<method access ="private"
|
||||
type ="void"
|
||||
name ="readObject"
|
||||
parameters="java.io.ObjectInputStream" />
|
||||
<method type ="java.lang.Object"
|
||||
name ="writeReplace"
|
||||
parameters="" />
|
||||
<method type ="java.lang.Object"
|
||||
name ="readResolve"
|
||||
parameters="" />
|
||||
</keepclassmembers>
|
||||
|
||||
<!-- Your application may contain more items that need to be preserved;
|
||||
typically classes that are dynamically created using Class.forName -->
|
||||
|
||||
</proguard>
|
||||
</target>
|
||||
|
||||
</project>
|
52
android/tools/android-osx/tools/proguard/examples/ant/midlets.xml
Executable file
52
android/tools/android-osx/tools/proguard/examples/ant/midlets.xml
Executable file
@ -0,0 +1,52 @@
|
||||
<!-- This Ant build file illustrates how to process J2ME midlets.
|
||||
Usage: ant -f midlets.xml -->
|
||||
|
||||
<project name="Midlets" default="obfuscate" basedir="../..">
|
||||
|
||||
<target name="obfuscate">
|
||||
<taskdef resource="proguard/ant/task.properties"
|
||||
classpath="lib/proguard.jar" />
|
||||
|
||||
<proguard microedition="on"
|
||||
printseeds="on"
|
||||
printmapping="out.map"
|
||||
overloadaggressively="on"
|
||||
repackageclasses=""
|
||||
allowaccessmodification="on"
|
||||
renamesourcefileattribute="SourceFile">
|
||||
|
||||
<!-- On Windows, you can't use mixed case class names,
|
||||
should you still want to use the preverify tool.
|
||||
usemixedcaseclassnames="false">
|
||||
-->
|
||||
|
||||
<!-- Specify the input jars, output jars, and library jars. -->
|
||||
|
||||
<injar file="in.jar" />
|
||||
<outjar file="out.jar" />
|
||||
|
||||
<libraryjar file="/usr/local/java/wtk2.5.2/lib/midpapi20.jar" />
|
||||
<libraryjar file="/usr/local/java/wtk2.5.2/lib/cldcapi11.jar" />
|
||||
|
||||
<!-- Optionally preserve line numbers in the obfuscated stack traces.
|
||||
<keepattribute name="LineNumberTable">
|
||||
<keepattribute name="SourceFile">
|
||||
-->
|
||||
|
||||
<!-- Preserve all public midlets. -->
|
||||
|
||||
<keep access="public" extends="javax.microedition.midlet.MIDlet" />
|
||||
|
||||
<!-- Preserve all native method names and the names of their classes. -->
|
||||
|
||||
<keepclasseswithmembernames>
|
||||
<method access="native" />
|
||||
</keepclasseswithmembernames>
|
||||
|
||||
<!-- Your application may contain more items that need to be preserved;
|
||||
typically classes that are dynamically created using Class.forName -->
|
||||
|
||||
</proguard>
|
||||
</target>
|
||||
|
||||
</project>
|
78
android/tools/android-osx/tools/proguard/examples/ant/proguard.xml
Executable file
78
android/tools/android-osx/tools/proguard/examples/ant/proguard.xml
Executable file
@ -0,0 +1,78 @@
|
||||
<!-- This Ant build file illustrates how to process ProGuard (including its
|
||||
main application, its GUI, its Ant task, and its WTK plugin), and the
|
||||
ReTrace tool, all in one go.
|
||||
Usage: ant -f proguard.xml -->
|
||||
|
||||
<project name="ProGuard" default="obfuscate" basedir="../..">
|
||||
|
||||
<target name="obfuscate">
|
||||
<taskdef resource="proguard/ant/task.properties"
|
||||
classpath="lib/proguard.jar" />
|
||||
|
||||
<proguard printmapping="proguard.map"
|
||||
overloadaggressively="on"
|
||||
repackageclasses=""
|
||||
renamesourcefileattribute="SourceFile">
|
||||
|
||||
<!-- Specify the input jars, output jars, and library jars. -->
|
||||
|
||||
<injar file="lib/proguard.jar" />
|
||||
<injar file="lib/proguardgui.jar" filter="!META-INF/**" />
|
||||
<injar file="lib/retrace.jar" filter="!META-INF/**" />
|
||||
|
||||
<outjar file="examples/ant/proguard_out.jar" />
|
||||
|
||||
<libraryjar file="${java.home}/lib/rt.jar" />
|
||||
<libraryjar file="/usr/local/java/ant/lib/ant.jar" />
|
||||
<libraryjar file="/usr/local/java/wtk2.5.2/wtklib/kenv.zip" />
|
||||
|
||||
<!-- Adapt the resource file names, based on the corresponding obfuscated
|
||||
class names. -->
|
||||
|
||||
<adaptresourcefilenames filter="**.properties,**.gif,**.jpg" />
|
||||
<adaptresourcefilecontents filter="proguard/ant/task.properties" />
|
||||
|
||||
<!-- Optionally preserve line numbers in the obfuscated stack traces.
|
||||
<keepattribute name="LineNumberTable">
|
||||
<keepattribute name="SourceFile">
|
||||
-->
|
||||
|
||||
<!-- The main seeds: ProGuard and its companion tool ReTrace. -->
|
||||
|
||||
<keep access="public" name="proguard.ProGuard">
|
||||
<method access ="public static"
|
||||
type ="void"
|
||||
name ="main"
|
||||
parameters="java.lang.String[]" />
|
||||
</keep>
|
||||
<keep access="public" name="proguard.gui.ProGuardGUI">
|
||||
<method access ="public static"
|
||||
type ="void"
|
||||
name ="main"
|
||||
parameters="java.lang.String[]" />
|
||||
</keep>
|
||||
<keep access="public" name="proguard.retrace.ReTrace">
|
||||
<method access ="public static"
|
||||
type ="void"
|
||||
name ="main"
|
||||
parameters="java.lang.String[]" />
|
||||
</keep>
|
||||
|
||||
<!-- If we have ant.jar, we can properly process the Ant task. -->
|
||||
|
||||
<keeppackagename name="proguard.ant" />
|
||||
<keep name="proguard.ant.*" allowobfuscation="true" />
|
||||
<keepclassmembers access="public" name="proguard.ant.*">
|
||||
<constructor parameters="org.apache.tools.ant.Project" />
|
||||
<method access="public" type="void" name="set*" parameters="***" />
|
||||
<method access="public" type="void" name="add*" parameters="***" />
|
||||
</keepclassmembers>
|
||||
|
||||
<!-- If we have kenv.zip, we can process the J2ME WTK plugin. -->
|
||||
|
||||
<keep access="public" name="proguard.wtk.ProGuardObfuscator" />
|
||||
|
||||
</proguard>
|
||||
</target>
|
||||
|
||||
</project>
|
88
android/tools/android-osx/tools/proguard/examples/ant/servlets.xml
Executable file
88
android/tools/android-osx/tools/proguard/examples/ant/servlets.xml
Executable file
@ -0,0 +1,88 @@
|
||||
<!-- This Ant build file illustrates how to process servlets.
|
||||
Usage: ant -f servlets.xml -->
|
||||
|
||||
<project name="Servlets" default="obfuscate" basedir="../..">
|
||||
|
||||
<target name="obfuscate">
|
||||
<taskdef resource="proguard/ant/task.properties"
|
||||
classpath="lib/proguard.jar" />
|
||||
|
||||
<proguard printseeds="on"
|
||||
printmapping="proguard.map"
|
||||
renamesourcefileattribute="SourceFile">
|
||||
|
||||
<!-- Specify the input jars, output jars, and library jars. -->
|
||||
|
||||
<injar file="in.jar" />
|
||||
<outjar file="out.jar" />
|
||||
|
||||
<libraryjar file="${java.home}/lib/rt.jar" />
|
||||
|
||||
<!-- Optionally preserve line numbers in the obfuscated stack traces.
|
||||
<keepattribute name="LineNumberTable">
|
||||
<keepattribute name="SourceFile">
|
||||
-->
|
||||
|
||||
<!-- Preserve all annotations. -->
|
||||
|
||||
<keepattribute name="*Annotation*" />
|
||||
|
||||
<!-- Keep all public servlets. -->
|
||||
|
||||
<keep access="public" implements="javax.servlet.Servlet" />
|
||||
|
||||
<!-- Preserve all native method names and the names of their classes. -->
|
||||
|
||||
<keepclasseswithmembernames>
|
||||
<method access="native" />
|
||||
</keepclasseswithmembernames>
|
||||
|
||||
<!-- Preserve the methods that are required in all enumeration classes. -->
|
||||
|
||||
<keepclassmembers extends="java.lang.Enum">
|
||||
<method access="public static"
|
||||
type="**[]"
|
||||
name="values"
|
||||
parameters="" />
|
||||
<method access="public static"
|
||||
type="**"
|
||||
name="valueOf"
|
||||
parameters="java.lang.String" />
|
||||
</keepclassmembers>
|
||||
|
||||
<!-- 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 library doesn't use serialization.
|
||||
If your code contains serializable classes that have to be backward
|
||||
compatible, please refer to the manual. -->
|
||||
|
||||
<keepclassmembers implements="java.io.Serializable">
|
||||
<field access ="static final"
|
||||
type ="long"
|
||||
name ="serialVersionUID" />
|
||||
<field access ="static final"
|
||||
type ="java.io.ObjectStreamField[]"
|
||||
name ="serialPersistentFields" />
|
||||
<method access ="private"
|
||||
type ="void"
|
||||
name ="writeObject"
|
||||
parameters="java.io.ObjectOutputStream" />
|
||||
<method access ="private"
|
||||
type ="void"
|
||||
name ="readObject"
|
||||
parameters="java.io.ObjectInputStream" />
|
||||
<method type ="java.lang.Object"
|
||||
name ="writeReplace"
|
||||
parameters="" />
|
||||
<method type ="java.lang.Object"
|
||||
name ="readResolve"
|
||||
parameters="" />
|
||||
</keepclassmembers>
|
||||
|
||||
<!-- Your application may contain more items that need to be preserved;
|
||||
typically classes that are dynamically created using Class.forName -->
|
||||
|
||||
</proguard>
|
||||
</target>
|
||||
|
||||
</project>
|
69
android/tools/android-osx/tools/proguard/examples/applets.pro
Executable file
69
android/tools/android-osx/tools/proguard/examples/applets.pro
Executable file
@ -0,0 +1,69 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process applets.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @applets.pro
|
||||
#
|
||||
|
||||
# Specify the input jars, output jars, and library jars.
|
||||
|
||||
-injars in.jar
|
||||
-outjars out.jar
|
||||
|
||||
-libraryjars <java.home>/lib/rt.jar
|
||||
|
||||
# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
|
||||
# traces later on. 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.
|
||||
|
||||
-printmapping out.map
|
||||
-renamesourcefileattribute SourceFile
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# Preserve all annotations.
|
||||
|
||||
-keepattributes *Annotation*
|
||||
|
||||
# You can print out the seeds that are matching the keep options below.
|
||||
|
||||
#-printseeds out.seeds
|
||||
|
||||
# Preserve all public applets.
|
||||
|
||||
-keep public class * extends java.applet.Applet
|
||||
|
||||
# Preserve all native method names and the names of their classes.
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Preserve the special static methods that are required in all enumeration
|
||||
# classes.
|
||||
|
||||
-keepclassmembers class * extends java.lang.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 library 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
|
75
android/tools/android-osx/tools/proguard/examples/applications.pro
Executable file
75
android/tools/android-osx/tools/proguard/examples/applications.pro
Executable file
@ -0,0 +1,75 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process applications.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @applications.pro
|
||||
#
|
||||
|
||||
# Specify the input jars, output jars, and library jars.
|
||||
|
||||
-injars in.jar
|
||||
-outjars out.jar
|
||||
|
||||
-libraryjars <java.home>/lib/rt.jar
|
||||
#-libraryjars junit.jar
|
||||
#-libraryjars servlet.jar
|
||||
#-libraryjars jai_core.jar
|
||||
#...
|
||||
|
||||
# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
|
||||
# traces later on. 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.
|
||||
|
||||
-printmapping out.map
|
||||
-renamesourcefileattribute SourceFile
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# Preserve all annotations.
|
||||
|
||||
-keepattributes *Annotation*
|
||||
|
||||
# You can print out the seeds that are matching the keep options below.
|
||||
|
||||
#-printseeds out.seeds
|
||||
|
||||
# Preserve all public applications.
|
||||
|
||||
-keepclasseswithmembers public class * {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
||||
|
||||
# Preserve all native method names and the names of their classes.
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Preserve the special static methods that are required in all enumeration
|
||||
# classes.
|
||||
|
||||
-keepclassmembers class * extends java.lang.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
|
18
android/tools/android-osx/tools/proguard/examples/dictionaries/compact.txt
Executable file
18
android/tools/android-osx/tools/proguard/examples/dictionaries/compact.txt
Executable file
@ -0,0 +1,18 @@
|
||||
#
|
||||
# This obfuscation dictionary contains strings that are already present
|
||||
# in many class files. Since these strings can be shared, the resulting
|
||||
# obfuscated class files will generally be a little bit more compact.
|
||||
# Usage:
|
||||
# java -jar proguard.jar ..... -obfuscationdictionary compact.txt
|
||||
#
|
||||
|
||||
Code
|
||||
V
|
||||
I
|
||||
Z
|
||||
B
|
||||
C
|
||||
S
|
||||
F
|
||||
D
|
||||
L
|
58
android/tools/android-osx/tools/proguard/examples/dictionaries/keywords.txt
Executable file
58
android/tools/android-osx/tools/proguard/examples/dictionaries/keywords.txt
Executable file
@ -0,0 +1,58 @@
|
||||
#
|
||||
# This obfuscation dictionary contains reserved Java keywords. They can't
|
||||
# be used in Java source files, but they can be used in compiled class files.
|
||||
# Note that this hardly improves the obfuscation. Decent decompilers can
|
||||
# automatically replace reserved keywords, and the effect can fairly simply be
|
||||
# undone by obfuscating again with simpler names.
|
||||
# Usage:
|
||||
# java -jar proguard.jar ..... -obfuscationdictionary keywords.txt
|
||||
#
|
||||
|
||||
do
|
||||
if
|
||||
for
|
||||
int
|
||||
new
|
||||
try
|
||||
byte
|
||||
case
|
||||
char
|
||||
else
|
||||
goto
|
||||
long
|
||||
this
|
||||
void
|
||||
break
|
||||
catch
|
||||
class
|
||||
const
|
||||
final
|
||||
float
|
||||
short
|
||||
super
|
||||
throw
|
||||
while
|
||||
double
|
||||
import
|
||||
native
|
||||
public
|
||||
return
|
||||
static
|
||||
switch
|
||||
throws
|
||||
boolean
|
||||
default
|
||||
extends
|
||||
finally
|
||||
package
|
||||
private
|
||||
abstract
|
||||
continue
|
||||
strictfp
|
||||
volatile
|
||||
interface
|
||||
protected
|
||||
transient
|
||||
implements
|
||||
instanceof
|
||||
synchronized
|
@ -0,0 +1,23 @@
|
||||
#
|
||||
# This obfuscation dictionary contains quotes from plays by Shakespeare.
|
||||
# It illustrates that any text can be used, for whatever flippant reasons
|
||||
# one may have.
|
||||
# Usage:
|
||||
# java -jar proguard.jar ..... -obfuscationdictionary shakespeare.txt
|
||||
#
|
||||
|
||||
|
||||
"This thing of darkness I acknowledge mine."
|
||||
|
||||
--From The Tempest (V, i, 275-276)
|
||||
|
||||
|
||||
"Though this be madness, yet there is method in 't."
|
||||
|
||||
--From Hamlet (II, ii, 206)
|
||||
|
||||
|
||||
"What's in a name? That which we call a rose
|
||||
By any other word would smell as sweet."
|
||||
|
||||
--From Romeo and Juliet (II, ii, 1-2)
|
209
android/tools/android-osx/tools/proguard/examples/dictionaries/windows.txt
Executable file
209
android/tools/android-osx/tools/proguard/examples/dictionaries/windows.txt
Executable file
@ -0,0 +1,209 @@
|
||||
#
|
||||
# This obfuscation dictionary contains names that are not allowed as file names
|
||||
# in Windows, not even with extensions like .class or .java. They can however
|
||||
# be used without problems in jar archives, which just begs to apply them as
|
||||
# obfuscated class names. Trying to unpack the obfuscated archives in Windows
|
||||
# will probably generate some sparks.
|
||||
# Usage:
|
||||
# java -jar proguard.jar ..... -classobfuscationdictionary windows.txt
|
||||
# -packageobfuscationdictionary windows.txt
|
||||
#
|
||||
|
||||
aux
|
||||
Aux
|
||||
aUx
|
||||
AUx
|
||||
auX
|
||||
AuX
|
||||
aUX
|
||||
AUX
|
||||
AUX
|
||||
con
|
||||
Con
|
||||
cOn
|
||||
COn
|
||||
coN
|
||||
CoN
|
||||
cON
|
||||
CON
|
||||
CON
|
||||
nul
|
||||
Nul
|
||||
nUl
|
||||
NUl
|
||||
nuL
|
||||
NuL
|
||||
nUL
|
||||
NUL
|
||||
NUL
|
||||
prn
|
||||
Prn
|
||||
pRn
|
||||
PRn
|
||||
prN
|
||||
PrN
|
||||
pRN
|
||||
PRN
|
||||
PRN
|
||||
com1
|
||||
Com1
|
||||
cOm1
|
||||
COm1
|
||||
coM1
|
||||
CoM1
|
||||
cOM1
|
||||
COM1
|
||||
COM1
|
||||
com2
|
||||
Com2
|
||||
cOm2
|
||||
COm2
|
||||
coM2
|
||||
CoM2
|
||||
cOM2
|
||||
COM2
|
||||
COM2
|
||||
com3
|
||||
Com3
|
||||
cOm3
|
||||
COm3
|
||||
coM3
|
||||
CoM3
|
||||
cOM3
|
||||
COM3
|
||||
COM3
|
||||
com4
|
||||
Com4
|
||||
cOm4
|
||||
COm4
|
||||
coM4
|
||||
CoM4
|
||||
cOM4
|
||||
COM4
|
||||
COM4
|
||||
com5
|
||||
Com5
|
||||
cOm5
|
||||
COm5
|
||||
coM5
|
||||
CoM5
|
||||
cOM5
|
||||
COM5
|
||||
COM5
|
||||
com6
|
||||
Com6
|
||||
cOm6
|
||||
COm6
|
||||
coM6
|
||||
CoM6
|
||||
cOM6
|
||||
COM6
|
||||
COM6
|
||||
com7
|
||||
Com7
|
||||
cOm7
|
||||
COm7
|
||||
coM7
|
||||
CoM7
|
||||
cOM7
|
||||
COM7
|
||||
COM7
|
||||
com8
|
||||
Com8
|
||||
cOm8
|
||||
COm8
|
||||
coM8
|
||||
CoM8
|
||||
cOM8
|
||||
COM8
|
||||
COM8
|
||||
com9
|
||||
Com9
|
||||
cOm9
|
||||
COm9
|
||||
coM9
|
||||
CoM9
|
||||
cOM9
|
||||
COM9
|
||||
COM9
|
||||
lpt1
|
||||
Lpt1
|
||||
lPt1
|
||||
LPt1
|
||||
lpT1
|
||||
LpT1
|
||||
lPT1
|
||||
LPT1
|
||||
LPT1
|
||||
lpt2
|
||||
Lpt2
|
||||
lPt2
|
||||
LPt2
|
||||
lpT2
|
||||
LpT2
|
||||
lPT2
|
||||
LPT2
|
||||
LPT2
|
||||
lpt3
|
||||
Lpt3
|
||||
lPt3
|
||||
LPt3
|
||||
lpT3
|
||||
LpT3
|
||||
lPT3
|
||||
LPT3
|
||||
LPT3
|
||||
lpt4
|
||||
Lpt4
|
||||
lPt4
|
||||
LPt4
|
||||
lpT4
|
||||
LpT4
|
||||
lPT4
|
||||
LPT4
|
||||
LPT4
|
||||
lpt5
|
||||
Lpt5
|
||||
lPt5
|
||||
LPt5
|
||||
lpT5
|
||||
LpT5
|
||||
lPT5
|
||||
LPT5
|
||||
LPT5
|
||||
lpt6
|
||||
Lpt6
|
||||
lPt6
|
||||
LPt6
|
||||
lpT6
|
||||
LpT6
|
||||
lPT6
|
||||
LPT6
|
||||
LPT6
|
||||
lpt7
|
||||
Lpt7
|
||||
lPt7
|
||||
LPt7
|
||||
lpT7
|
||||
LpT7
|
||||
lPT7
|
||||
LPT7
|
||||
LPT7
|
||||
lpt8
|
||||
Lpt8
|
||||
lPt8
|
||||
LPt8
|
||||
lpT8
|
||||
LpT8
|
||||
lPT8
|
||||
LPT8
|
||||
LPT8
|
||||
lpt9
|
||||
Lpt9
|
||||
lPt9
|
||||
LPt9
|
||||
lpT9
|
||||
LpT9
|
||||
lPT9
|
||||
LPT9
|
||||
LPT9
|
79
android/tools/android-osx/tools/proguard/examples/library.pro
Executable file
79
android/tools/android-osx/tools/proguard/examples/library.pro
Executable file
@ -0,0 +1,79 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process a program
|
||||
# library, such that it remains usable as a library.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @library.pro
|
||||
#
|
||||
|
||||
# Specify the input jars, output jars, and library jars.
|
||||
# In this case, the input jar is the program library that we want to process.
|
||||
|
||||
-injars in.jar
|
||||
-outjars out.jar
|
||||
|
||||
-libraryjars <java.home>/lib/rt.jar
|
||||
|
||||
# Save the obfuscation mapping to a file, so we can de-obfuscate any stack
|
||||
# traces later on. 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.
|
||||
|
||||
-printmapping out.map
|
||||
-keepparameternames
|
||||
-renamesourcefileattribute SourceFile
|
||||
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
|
||||
SourceFile,LineNumberTable,EnclosingMethod
|
||||
|
||||
# Preserve all annotations.
|
||||
|
||||
-keepattributes *Annotation*
|
||||
|
||||
# Preserve all public classes, and their public and protected fields and
|
||||
# methods.
|
||||
|
||||
-keep public class * {
|
||||
public protected *;
|
||||
}
|
||||
|
||||
# Preserve all .class method names.
|
||||
|
||||
-keepclassmembernames class * {
|
||||
java.lang.Class class$(java.lang.String);
|
||||
java.lang.Class class$(java.lang.String, boolean);
|
||||
}
|
||||
|
||||
# Preserve all native method names and the names of their classes.
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Preserve the special static methods that are required in all enumeration
|
||||
# classes.
|
||||
|
||||
-keepclassmembers class * extends java.lang.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 library 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 library 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
|
67
android/tools/android-osx/tools/proguard/examples/midlets.pro
Executable file
67
android/tools/android-osx/tools/proguard/examples/midlets.pro
Executable file
@ -0,0 +1,67 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process J2ME midlets.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @midlets.pro
|
||||
#
|
||||
|
||||
# Specify the input jars, output jars, and library jars.
|
||||
|
||||
-injars in.jar
|
||||
-outjars out.jar
|
||||
|
||||
-libraryjars /usr/local/java/wtk2.5.2/lib/midpapi20.jar
|
||||
-libraryjars /usr/local/java/wtk2.5.2/lib/cldcapi11.jar
|
||||
|
||||
# Preverify the code suitably for Java Micro Edition.
|
||||
|
||||
-microedition
|
||||
|
||||
# Allow methods with the same signature, except for the return type,
|
||||
# to get the same obfuscation name.
|
||||
|
||||
-overloadaggressively
|
||||
|
||||
# Put all obfuscated classes into the nameless root package.
|
||||
|
||||
-repackageclasses ''
|
||||
|
||||
# Allow classes and class members to be made public.
|
||||
|
||||
-allowaccessmodification
|
||||
|
||||
# On Windows, you can't use mixed case class names,
|
||||
# should you still want to use the preverify tool.
|
||||
#
|
||||
# -dontusemixedcaseclassnames
|
||||
|
||||
# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
|
||||
# traces later on.
|
||||
|
||||
-printmapping out.map
|
||||
|
||||
# You can keep a fixed source file attribute and all line number tables to
|
||||
# get stack traces with line numbers.
|
||||
|
||||
#-renamesourcefileattribute SourceFile
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# You can print out the seeds that are matching the keep options below.
|
||||
|
||||
#-printseeds out.seeds
|
||||
|
||||
# Preserve all public midlets.
|
||||
|
||||
-keep public class * extends javax.microedition.midlet.MIDlet
|
||||
|
||||
# Preserve all native method names and the names of their classes.
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Your midlet 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
|
57
android/tools/android-osx/tools/proguard/examples/proguard.pro
vendored
Executable file
57
android/tools/android-osx/tools/proguard/examples/proguard.pro
vendored
Executable file
@ -0,0 +1,57 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process ProGuard itself.
|
||||
# Configuration files for typical applications will be very similar.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @proguard.pro
|
||||
#
|
||||
|
||||
# Specify the input jars, output jars, and library jars.
|
||||
# We'll filter out the Ant and WTK classes, keeping everything else.
|
||||
|
||||
-injars ../lib/proguard.jar(!proguard/ant/**,!proguard/wtk/**)
|
||||
-outjars proguard_out.jar
|
||||
|
||||
-libraryjars <java.home>/lib/rt.jar
|
||||
|
||||
# Write out an obfuscation mapping file, for de-obfuscating any stack traces
|
||||
# later on, or for incremental obfuscation of extensions.
|
||||
|
||||
-printmapping proguard.map
|
||||
|
||||
# Allow methods with the same signature, except for the return type,
|
||||
# to get the same obfuscation name.
|
||||
|
||||
-overloadaggressively
|
||||
|
||||
# Put all obfuscated classes into the nameless root package.
|
||||
|
||||
-repackageclasses ''
|
||||
|
||||
# Allow classes and class members to be made public.
|
||||
|
||||
-allowaccessmodification
|
||||
|
||||
# The entry point: ProGuard and its main method.
|
||||
|
||||
-keep public class proguard.ProGuard {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
||||
|
||||
# If you want to preserve the Ant task as well, you'll have to specify the
|
||||
# main ant.jar.
|
||||
|
||||
#-libraryjars /usr/local/java/ant/lib/ant.jar
|
||||
#-adaptresourcefilecontents proguard/ant/task.properties
|
||||
#
|
||||
#-keep,allowobfuscation class proguard.ant.*
|
||||
#-keepclassmembers public class proguard.ant.* {
|
||||
# <init>(org.apache.tools.ant.Project);
|
||||
# public void set*(***);
|
||||
# public void add*(***);
|
||||
#}
|
||||
|
||||
# If you want to preserve the WTK obfuscation plug-in, you'll have to specify
|
||||
# the kenv.zip file.
|
||||
|
||||
#-libraryjars /usr/local/java/wtk2.5.2/wtklib/kenv.zip
|
||||
#-keep public class proguard.wtk.ProGuardObfuscator
|
62
android/tools/android-osx/tools/proguard/examples/proguardall.pro
Executable file
62
android/tools/android-osx/tools/proguard/examples/proguardall.pro
Executable file
@ -0,0 +1,62 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process ProGuard
|
||||
# (including its main application, its GUI, its Ant task, and its WTK plugin),
|
||||
# and the ReTrace tool, all in one go.
|
||||
# Configuration files for typical applications will be very similar.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @proguardall.pro
|
||||
#
|
||||
|
||||
# Specify the input jars, output jars, and library jars.
|
||||
# We'll read all jars from the lib directory, process them, and write the
|
||||
# processed jars to a new out directory.
|
||||
|
||||
-injars ../lib
|
||||
-outjars out
|
||||
|
||||
# You may have to adapt the paths below.
|
||||
|
||||
-libraryjars <java.home>/lib/rt.jar
|
||||
-libraryjars /usr/local/java/ant/lib/ant.jar
|
||||
-libraryjars /usr/local/java/wtk2.5.2/wtklib/kenv.zip
|
||||
|
||||
# Allow methods with the same signature, except for the return type,
|
||||
# to get the same obfuscation name.
|
||||
|
||||
-overloadaggressively
|
||||
|
||||
# Put all obfuscated classes into the nameless root package.
|
||||
|
||||
-repackageclasses ''
|
||||
|
||||
# Adapt the names and contents of the resource files.
|
||||
|
||||
-adaptresourcefilenames **.properties,**.gif,**.jpg
|
||||
-adaptresourcefilecontents proguard/ant/task.properties
|
||||
|
||||
# The main entry points.
|
||||
|
||||
-keep public class proguard.ProGuard {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
||||
|
||||
-keep public class proguard.gui.ProGuardGUI {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
||||
|
||||
-keep public class proguard.retrace.ReTrace {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
||||
|
||||
# If we have ant.jar, we can properly process the Ant task.
|
||||
|
||||
-keep,allowobfuscation class proguard.ant.*
|
||||
-keepclassmembers public class proguard.ant.* {
|
||||
<init>(org.apache.tools.ant.Project);
|
||||
public void set*(***);
|
||||
public void add*(***);
|
||||
}
|
||||
|
||||
# If we have kenv.zip, we can process the J2ME WTK plugin.
|
||||
|
||||
-keep public class proguard.wtk.ProGuardObfuscator
|
50
android/tools/android-osx/tools/proguard/examples/proguardgui.pro
Executable file
50
android/tools/android-osx/tools/proguard/examples/proguardgui.pro
Executable file
@ -0,0 +1,50 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process the ProGuard GUI.
|
||||
# Configuration files for typical applications will be very similar.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @proguardgui.pro
|
||||
#
|
||||
|
||||
# Specify the input jars, output jars, and library jars.
|
||||
# The input jars will be merged in a single output jar.
|
||||
# We'll filter out the Ant and WTK classes.
|
||||
|
||||
-injars ../lib/proguardgui.jar
|
||||
-injars ../lib/proguard.jar(!META-INF/**,!proguard/ant/**,!proguard/wtk/**)
|
||||
-injars ../lib/retrace.jar (!META-INF/**)
|
||||
-outjars proguardgui_out.jar
|
||||
|
||||
-libraryjars <java.home>/lib/rt.jar
|
||||
|
||||
# If we wanted to reuse the previously obfuscated proguard_out.jar, we could
|
||||
# perform incremental obfuscation based on its mapping file, and only keep the
|
||||
# additional GUI files instead of all files.
|
||||
|
||||
#-applymapping proguard.map
|
||||
#-injars ../lib/proguardgui.jar
|
||||
#-outjars proguardgui_out.jar
|
||||
#-libraryjars ../lib/proguard.jar(!proguard/ant/**,!proguard/wtk/**)
|
||||
#-libraryjars ../lib/retrace.jar
|
||||
#-libraryjars <java.home>/lib/rt.jar
|
||||
|
||||
|
||||
# Allow methods with the same signature, except for the return type,
|
||||
# to get the same obfuscation name.
|
||||
|
||||
-overloadaggressively
|
||||
|
||||
# Put all obfuscated classes into the nameless root package.
|
||||
|
||||
-repackageclasses ''
|
||||
|
||||
# Adapt the names of resource files, based on the corresponding obfuscated
|
||||
# class names. Notably, in this case, the GUI resource properties file will
|
||||
# have to be renamed.
|
||||
|
||||
-adaptresourcefilenames **.properties,**.gif,**.jpg
|
||||
|
||||
# The entry point: ProGuardGUI and its main method.
|
||||
|
||||
-keep public class proguard.gui.ProGuardGUI {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
43
android/tools/android-osx/tools/proguard/examples/retrace.pro
Executable file
43
android/tools/android-osx/tools/proguard/examples/retrace.pro
Executable file
@ -0,0 +1,43 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process the ReTrace tool.
|
||||
# Configuration files for typical applications will be very similar.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @retrace.pro
|
||||
#
|
||||
|
||||
# Specify the input jars, output jars, and library jars.
|
||||
# The input jars will be merged in a single output jar.
|
||||
# We'll filter out the Ant and WTK classes.
|
||||
|
||||
-injars ../lib/retrace.jar
|
||||
-injars ../lib/proguard.jar(!META-INF/MANIFEST.MF,
|
||||
!proguard/ant/**,!proguard/wtk/**)
|
||||
-outjars retrace_out.jar
|
||||
|
||||
-libraryjars <java.home>/lib/rt.jar
|
||||
|
||||
# If we wanted to reuse the previously obfuscated proguard_out.jar, we could
|
||||
# perform incremental obfuscation based on its mapping file, and only keep the
|
||||
# additional ReTrace files instead of all files.
|
||||
|
||||
#-applymapping proguard.map
|
||||
#-outjars retrace_out.jar(proguard/retrace/**)
|
||||
|
||||
# Allow methods with the same signature, except for the return type,
|
||||
# to get the same obfuscation name.
|
||||
|
||||
-overloadaggressively
|
||||
|
||||
# Put all obfuscated classes into the nameless root package.
|
||||
|
||||
-repackageclasses ''
|
||||
|
||||
# Allow classes and class members to be made public.
|
||||
|
||||
-allowaccessmodification
|
||||
|
||||
# The entry point: ReTrace and its main method.
|
||||
|
||||
-keep public class proguard.retrace.ReTrace {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
132
android/tools/android-osx/tools/proguard/examples/scala.pro
Executable file
132
android/tools/android-osx/tools/proguard/examples/scala.pro
Executable file
@ -0,0 +1,132 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process Scala
|
||||
# applications, including the Scala runtime.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @scala.pro
|
||||
#
|
||||
|
||||
# Specify the input jars, output jars, and library jars.
|
||||
|
||||
-injars in.jar
|
||||
-injars /usr/local/java/scala-2.9.1/lib/scala-library.jar
|
||||
#-injars /usr/local/java/scala-2.9.1/lib/scala-compiler.jar(!META-INF/MANIFEST.MF)
|
||||
#-injars /usr/local/java/scala-2.9.1/lib/jline.jar(!META-INF/MANIFEST.MF)
|
||||
-outjars out.jar
|
||||
|
||||
-libraryjars <java.home>/lib/rt.jar
|
||||
#-libraryjars /usr/local/java/ant/lib/ant.jar
|
||||
#...
|
||||
|
||||
# Ignore some compiler artefacts.
|
||||
|
||||
-dontwarn scala.**
|
||||
|
||||
# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
|
||||
# traces later on. 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.
|
||||
|
||||
-printmapping out.map
|
||||
-renamesourcefileattribute SourceFile
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# Preserve all annotations.
|
||||
|
||||
-keepattributes *Annotation*
|
||||
|
||||
# You can print out the seeds that are matching the keep options below.
|
||||
|
||||
#-printseeds out.seeds
|
||||
|
||||
# Preserve all public applications.
|
||||
|
||||
-keepclasseswithmembers public class * {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
||||
|
||||
# Preserve some classes and class members that are accessed by means of
|
||||
# introspection.
|
||||
|
||||
-keep class * implements org.xml.sax.EntityResolver
|
||||
|
||||
-keepclassmembers class * {
|
||||
** MODULE$;
|
||||
}
|
||||
|
||||
-keepclassmembernames class scala.concurrent.forkjoin.ForkJoinPool {
|
||||
long eventCount;
|
||||
int workerCounts;
|
||||
int runControl;
|
||||
scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode syncStack;
|
||||
scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode spareStack;
|
||||
}
|
||||
|
||||
-keepclassmembernames class scala.concurrent.forkjoin.ForkJoinWorkerThread {
|
||||
int base;
|
||||
int sp;
|
||||
int runState;
|
||||
}
|
||||
|
||||
-keepclassmembernames class scala.concurrent.forkjoin.ForkJoinTask {
|
||||
int status;
|
||||
}
|
||||
|
||||
-keepclassmembernames class scala.concurrent.forkjoin.LinkedTransferQueue {
|
||||
scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference head;
|
||||
scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference tail;
|
||||
scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference cleanMe;
|
||||
}
|
||||
|
||||
# Preserve some classes and class members that are accessed by means of
|
||||
# introspection in the Scala compiler library, if it is processed as well.
|
||||
|
||||
#-keep class * implements jline.Completor
|
||||
#-keep class * implements jline.Terminal
|
||||
|
||||
#-keep class scala.tools.nsc.Global
|
||||
|
||||
#-keepclasseswithmembers class * {
|
||||
# <init>(scala.tools.nsc.Global);
|
||||
#}
|
||||
|
||||
#-keepclassmembers class * {
|
||||
# *** scala_repl_value();
|
||||
# *** scala_repl_result();
|
||||
#}
|
||||
|
||||
# Preserve all native method names and the names of their classes.
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Preserve the special static methods that are required in all enumeration
|
||||
# classes.
|
||||
|
||||
-keepclassmembers class * extends java.lang.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
|
||||
|
70
android/tools/android-osx/tools/proguard/examples/servlets.pro
Executable file
70
android/tools/android-osx/tools/proguard/examples/servlets.pro
Executable file
@ -0,0 +1,70 @@
|
||||
#
|
||||
# This ProGuard configuration file illustrates how to process servlets.
|
||||
# Usage:
|
||||
# java -jar proguard.jar @servlets.pro
|
||||
#
|
||||
|
||||
# Specify the input jars, output jars, and library jars.
|
||||
|
||||
-injars in.jar
|
||||
-outjars out.jar
|
||||
|
||||
-libraryjars <java.home>/lib/rt.jar
|
||||
-libraryjars /usr/local/java/servlet/servlet.jar
|
||||
|
||||
# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
|
||||
# traces later on. 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.
|
||||
|
||||
-printmapping out.map
|
||||
-renamesourcefileattribute SourceFile
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# Preserve all annotations.
|
||||
|
||||
-keepattributes *Annotation*
|
||||
|
||||
# You can print out the seeds that are matching the keep options below.
|
||||
|
||||
#-printseeds out.seeds
|
||||
|
||||
# Preserve all public servlets.
|
||||
|
||||
-keep public class * implements javax.servlet.Servlet
|
||||
|
||||
# Preserve all native method names and the names of their classes.
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# Preserve the special static methods that are required in all enumeration
|
||||
# classes.
|
||||
|
||||
-keepclassmembers class * extends java.lang.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 library 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
|
BIN
android/tools/android-osx/tools/proguard/lib/proguard.jar
Executable file
BIN
android/tools/android-osx/tools/proguard/lib/proguard.jar
Executable file
Binary file not shown.
BIN
android/tools/android-osx/tools/proguard/lib/proguardgui.jar
Executable file
BIN
android/tools/android-osx/tools/proguard/lib/proguardgui.jar
Executable file
Binary file not shown.
BIN
android/tools/android-osx/tools/proguard/lib/retrace.jar
Executable file
BIN
android/tools/android-osx/tools/proguard/lib/retrace.jar
Executable file
Binary file not shown.
49
android/tools/android-osx/tools/proguard/license.html
Executable file
49
android/tools/android-osx/tools/proguard/license.html
Executable file
@ -0,0 +1,49 @@
|
||||
<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
||||
<meta http-equiv="content-style-type" content="text/css">
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
<title>ProGuard License</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h2>License</h2>
|
||||
|
||||
<b>ProGuard</b> is free. You can use it freely for processing your
|
||||
applications, commercial or not. Your code obviously remains yours after
|
||||
having been processed, and its license can remain the same.
|
||||
<p>
|
||||
|
||||
<b>ProGuard</b> itself is copyrighted, but its distribution license provides
|
||||
you with some rights for modifying and redistributing its code and its
|
||||
documentation. More specifically, <b>ProGuard</b> is distributed under the
|
||||
terms of the <a href="GPL.html">GNU General Public License</a> (GPL), version
|
||||
2, as published by the <a href="http://www.fsf.org/" target="other">Free
|
||||
Software Foundation</a> (FSF). In short, this means that you may freely
|
||||
redistribute the program, modified or as is, on the condition that you make
|
||||
the complete source code available as well. If you develop a program that is
|
||||
linked with
|
||||
<b>ProGuard</b>, the program as a whole has to be distributed at no charge
|
||||
under the GPL. I am granting a <a href="GPL_exception.html">special
|
||||
exception</a> to the latter clause (in wording suggested by
|
||||
the <a href="http://www.gnu.org/copyleft/gpl-faq.html#GPLIncompatibleLibs"
|
||||
target="other">FSF</a>), for combinations with the following stand-alone
|
||||
applications: Apache Ant, Apache Maven, the Google Android SDK, the Eclipse
|
||||
ProGuardDT GUI, the EclipseME JME IDE, the Oracle NetBeans Java IDE, the Oracle
|
||||
JME Wireless Toolkit, the Simple Build Tool for Scala, the NeoMAD Tools by
|
||||
Neomades, the Javaground Tools, and the Sanaware Tools.
|
||||
|
||||
<p>
|
||||
The <b>ProGuard user documentation</b> represents an important part of this
|
||||
work. It may only be redistributed without changes, along with the unmodified
|
||||
version of the code.
|
||||
|
||||
<hr />
|
||||
<noscript><div><a target="_top" href="index.html" class="button">Show menu</a></div></noscript>
|
||||
<address>
|
||||
Copyright © 2002-2011
|
||||
<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a>.
|
||||
</address>
|
||||
</body>
|
||||
</html>
|
64
android/tools/android-osx/tools/proguard/proguard-android-optimize.txt
Executable file
64
android/tools/android-osx/tools/proguard/proguard-android-optimize.txt
Executable file
@ -0,0 +1,64 @@
|
||||
# This is a configuration file for ProGuard.
|
||||
# http://proguard.sourceforge.net/index.html#manual/usage.html
|
||||
|
||||
# Optimizations: If you don't want to optimize, use the
|
||||
# proguard-android.txt configuration file instead of this one, which
|
||||
# turns off the optimization flags. Adding optimization introduces
|
||||
# certain risks, since for example not all optimizations performed by
|
||||
# ProGuard works on all versions of Dalvik. The following flags turn
|
||||
# off various optimizations known to have issues, but the list may not
|
||||
# be complete or up to date. (The "arithmetic" optimization can be
|
||||
# used if you are only targeting Android 2.0 or later.) Make sure you
|
||||
# test thoroughly if you go this route.
|
||||
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
|
||||
-optimizationpasses 5
|
||||
-allowaccessmodification
|
||||
-dontpreverify
|
||||
|
||||
# The remainder of this file is identical to the non-optimized version
|
||||
# of the Proguard configuration file (except that the other file has
|
||||
# flags to turn off optimization).
|
||||
|
||||
-dontusemixedcaseclassnames
|
||||
-dontskipnonpubliclibraryclasses
|
||||
-verbose
|
||||
|
||||
-keepattributes *Annotation*
|
||||
-keep public class com.google.vending.licensing.ILicensingService
|
||||
-keep public class com.android.vending.licensing.ILicensingService
|
||||
|
||||
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# keep setters in Views so that animations can still work.
|
||||
# see http://proguard.sourceforge.net/manual/examples.html#beans
|
||||
-keepclassmembers public class * extends android.view.View {
|
||||
void set*(***);
|
||||
*** get*();
|
||||
}
|
||||
|
||||
# We want to keep methods in Activity that could be used in the XML attribute onClick
|
||||
-keepclassmembers class * extends android.app.Activity {
|
||||
public void *(android.view.View);
|
||||
}
|
||||
|
||||
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
|
||||
-keepclassmembers enum * {
|
||||
public static **[] values();
|
||||
public static ** valueOf(java.lang.String);
|
||||
}
|
||||
|
||||
-keep class * implements android.os.Parcelable {
|
||||
public static final android.os.Parcelable$Creator *;
|
||||
}
|
||||
|
||||
-keepclassmembers class **.R$* {
|
||||
public static <fields>;
|
||||
}
|
||||
|
||||
# The support library contains references to newer platform versions.
|
||||
# Don't warn about those in case this app is linking against an older
|
||||
# platform version. We know about them, and they are safe.
|
||||
-dontwarn android.support.**
|
57
android/tools/android-osx/tools/proguard/proguard-android.txt
Executable file
57
android/tools/android-osx/tools/proguard/proguard-android.txt
Executable file
@ -0,0 +1,57 @@
|
||||
# This is a configuration file for ProGuard.
|
||||
# http://proguard.sourceforge.net/index.html#manual/usage.html
|
||||
|
||||
-dontusemixedcaseclassnames
|
||||
-dontskipnonpubliclibraryclasses
|
||||
-verbose
|
||||
|
||||
# Optimization is turned off by default. Dex does not like code run
|
||||
# through the ProGuard optimize and preverify steps (and performs some
|
||||
# of these optimizations on its own).
|
||||
-dontoptimize
|
||||
-dontpreverify
|
||||
# Note that if you want to enable optimization, you cannot just
|
||||
# include optimization flags in your own project configuration file;
|
||||
# instead you will need to point to the
|
||||
# "proguard-android-optimize.txt" file instead of this one from your
|
||||
# project.properties file.
|
||||
|
||||
-keepattributes *Annotation*
|
||||
-keep public class com.google.vending.licensing.ILicensingService
|
||||
-keep public class com.android.vending.licensing.ILicensingService
|
||||
|
||||
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
# keep setters in Views so that animations can still work.
|
||||
# see http://proguard.sourceforge.net/manual/examples.html#beans
|
||||
-keepclassmembers public class * extends android.view.View {
|
||||
void set*(***);
|
||||
*** get*();
|
||||
}
|
||||
|
||||
# We want to keep methods in Activity that could be used in the XML attribute onClick
|
||||
-keepclassmembers class * extends android.app.Activity {
|
||||
public void *(android.view.View);
|
||||
}
|
||||
|
||||
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
|
||||
-keepclassmembers enum * {
|
||||
public static **[] values();
|
||||
public static ** valueOf(java.lang.String);
|
||||
}
|
||||
|
||||
-keep class * implements android.os.Parcelable {
|
||||
public static final android.os.Parcelable$Creator *;
|
||||
}
|
||||
|
||||
-keepclassmembers class **.R$* {
|
||||
public static <fields>;
|
||||
}
|
||||
|
||||
# The support library contains references to newer platform versions.
|
||||
# Don't warn about those in case this app is linking against an older
|
||||
# platform version. We know about them, and they are safe.
|
||||
-dontwarn android.support.**
|
20
android/tools/android-osx/tools/proguard/proguard-project.txt
Executable file
20
android/tools/android-osx/tools/proguard/proguard-project.txt
Executable file
@ -0,0 +1,20 @@
|
||||
# To enable ProGuard in your project, edit project.properties
|
||||
# to define the proguard.config property as described in that file.
|
||||
#
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in ${sdk.dir}/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the ProGuard
|
||||
# include property in project.properties.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
Reference in New Issue
Block a user