add export to c# button

This commit is contained in:
Mystikfluu
2023-04-13 07:10:18 +02:00
parent a1a397d06d
commit 1a20bea369
164 changed files with 14362 additions and 1 deletions
+281
View File
@@ -0,0 +1,281 @@
//
// This Gradle build file illustrates how to process Android
// applications.
//
// If you're using the Android SDK, the provided build systems with Gradle,
// Android Studio, Eclipse, and Ant already take care of the proper settings.
// You only need to enable ProGuard as explained in the Android documentation.
// You can still add project-specific configuration in proguard-project.txt.
//
// This configuration file is for custom, stand-alone builds.
// Usage:
// gradle -b android.gradle proguard
// Tell Gradle where to find the ProGuard task.
buildscript {
repositories {
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.0.1'
}
}
// Define a ProGuard task.
task ('proguard', type: proguard.gradle.ProGuardTask) {
// You should probably import a more compact ProGuard-style configuration
// file for all static settings, but we're specifying them all here, for
// the sake of the example.
//configuration 'configuration.pro'
//##############################################################################
// Input and output.
//##############################################################################
// 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 'classes'
injars 'libs'
outjars 'classes-processed.jar'
libraryjars '/usr/local/android-sdk/platforms/android-27/android.jar'
//libraryjars '/usr/local/java/android-sdk/extras/android/support/v4/android-support-v4.jar'
//libraryjars '/usr/local/java/android-sdk/add-ons/addon-google_apis-google-21/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'
//##############################################################################
// General settings.
//##############################################################################
verbose
// We can debug the ProGuard configuration by instrumenting the code and
// checking the log for feedback. Disable the option again for actual releases!
//addconfigurationdebugging
// We can also disable the individual processing steps.
//dontshrink
//dontoptimize
//dontobfuscate
// Specifically target Android.
android
// The dex compiler ignores preverification information.
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.
renamesourcefileattribute 'SourceFile'
keepattributes 'SourceFile,LineNumberTable'
//##############################################################################
// Settings to handle reflection in the code.
//##############################################################################
// RemoteViews might need annotations.
keepattributes '*Annotation*'
// Preserve all fundamental application classes.
keep 'public class * extends android.app.Activity'
keep 'public class * extends android.app.Application'
keep 'public class * extends android.app.Service'
keep 'public class * extends android.content.BroadcastReceiver'
keep 'public class * extends android.content.ContentProvider'
// Preserve all View implementations, their special context constructors, and
// their setters.
keep 'public class * extends android.view.View { \
public <init>(android.content.Context); \
public <init>(android.content.Context, android.util.AttributeSet); \
public <init>(android.content.Context, android.util.AttributeSet, int); \
public void set*(...); \
}'
// Preserve all classes that have special context constructors, and the
// constructors themselves.
keepclasseswithmembers 'class * { \
public <init>(android.content.Context, android.util.AttributeSet); \
}'
// Preserve all classes that have special context constructors, and the
// constructors themselves.
keepclasseswithmembers 'class * { \
public <init>(android.content.Context, android.util.AttributeSet, int); \
}'
// Preserve all possible onClick handlers.
keepclassmembers 'class * extends android.content.Context { \
public void *(android.view.View); \
public void *(android.view.MenuItem); \
}'
// Preserve the special fields of all Parcelable implementations.
keepclassmembers 'class * implements android.os.Parcelable { \
static android.os.Parcelable$Creator CREATOR; \
}'
// Preserve static fields of inner classes of R classes that might be accessed
// through introspection.
keepclassmembers 'class **.R$* { \
public static <fields>; \
}'
// Preserve annotated Javascript interface methods.
keepclassmembers 'class * { \
@android.webkit.JavascriptInterface <methods>; \
}'
// Preserve annotated and generated classes for Dagger.
keepclassmembers allowobfuscation: true, 'class * { \
@dagger.** *; \
}'
keep 'class **$$ModuleAdapter'
keep 'class **$$InjectAdapter'
keep 'class **$$StaticInjection'
keep if: 'class **$$ModuleAdapter', 'class <1>'
keep if: 'class **$$InjectAdapter', 'class <1>'
keep if: 'class **$$StaticInjection', 'class <1>'
keepnames 'class dagger.Lazy'
// Preserve annotated and generated classes for Butterknife.
keep 'class **$$ViewBinder { \
public static void bind(...); \
public static void unbind(...); \
}'
keep if: 'class **$$ViewBinder', 'class <1>'
keep 'class **_ViewBinding { \
<init>(<1>, android.view.View); \
}'
keep if: 'class **_ViewBinding', 'class <1>'
// Preserve fields that are serialized with GSON.
//keepclassmembers 'class com.example.SerializedClass1,'
// com.example.SerializedClass2 {
// <fields>;
//}'
keepclassmembers allowobfuscation: true, 'class * { \
@com.google.gson.annotations.SerializedName <fields>; \
}'
keep allowobfuscation: true, '@interface com.google.gson.annotations.**'
// Preserve the required interface from the License Verification Library
// (but don't nag the developer if the library is not used at all).
keep 'public interface com.android.vending.licensing.ILicensingService'
dontnote 'com.android.vending.licensing.ILicensingService'
// The Android Compatibility library references some classes that may not be
// present in all versions of the API, but we know that's ok.
dontwarn 'android.support.**'
// Preserve all native method names and the names of their classes.
keepclasseswithmembernames includedescriptorclasses: true, 'class * { \
native <methods>; \
}'
// Preserve the special static methods that are required in all enumeration
// classes.
keepclassmembers allowoptimization: true, 'enum * { \
public static **[] values(); \
public static ** valueOf(java.lang.String); \
}'
// Explicitly preserve all serialization members. The Serializable interface
// is only a marker interface, so it wouldn't save them.
// You can comment this out if your application doesn't use serialization.
// If your code contains serializable classes that have to be backward
// compatible, please refer to the manual.
keepclassmembers 'class * implements java.io.Serializable { \
static final long serialVersionUID; \
static final java.io.ObjectStreamField[] serialPersistentFields; \
private void writeObject(java.io.ObjectOutputStream); \
private void readObject(java.io.ObjectInputStream); \
java.lang.Object writeReplace(); \
java.lang.Object readResolve(); \
}'
// Your application may contain more items that need to be preserved;
// typically classes that are dynamically created using Class.forName:
// keep 'public class com.example.MyClass'
// keep 'public interface com.example.MyInterface'
// keep 'public class * implements com.example.MyInterface'
//##############################################################################
// Further optimizations.
//##############################################################################
// If you wish, you can let the optimization step remove Android logging calls.
assumenosideeffects 'class android.util.Log { \
public static boolean isLoggable(java.lang.String, int); \
public static int v(...); \
public static int i(...); \
public static int w(...); \
public static int d(...); \
public static int e(...); \
}'
}
+102
View File
@@ -0,0 +1,102 @@
//
// This Gradle build file illustrates how to process applets.
// Usage:
// gradle -b applets.gradle proguard
//
// Tell Gradle where to find the ProGuard task.
buildscript {
repositories {
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.0.1'
}
}
// Define a ProGuard task.
task ('proguard', type: proguard.gradle.ProGuardTask) {
// You should probably import a more compact ProGuard-style configuration
// file for all static settings, but we're specifying them all here, for
// the sake of the example.
//configuration 'configuration.pro'
verbose
// Specify the input jars, output jars, and library jars.
injars 'in.jar'
outjars 'out.jar'
// Automatically handle the Java version of this build.
if (System.getProperty('java.version').startsWith('1.')) {
// Before Java 9, the runtime classes were packaged in a single jar file.
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
} else {
// As of Java 9, the runtime classes are packaged in modular jmod files.
libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod ", jarfilter: '!**.jar', filter: '!module-info.class'
libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
}
// 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,includedescriptorclasses 'class * { \
native <methods>; \
}'
// Preserve the special static methods that are required in all enumeration
// classes.
keepclassmembers allowoptimization: true, 'enum * { \
public static **[] values(); \
public static ** valueOf(java.lang.String); \
}'
// Explicitly preserve all serialization members. The Serializable interface
// is only a marker interface, so it wouldn't save them.
// You can comment this out if your 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 com.example.MyClass'
// keep 'public interface com.example.MyInterface'
// keep 'public class * implements com.example.MyInterface'
}
@@ -0,0 +1,109 @@
//
// This Gradle build file illustrates how to process applications.
// Usage:
// gradle -b applications.gradle proguard
//
// Tell Gradle where to find the ProGuard task.
buildscript {
repositories {
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.0.1'
}
}
// Define a ProGuard task.
task ('proguard', type: proguard.gradle.ProGuardTask) {
// You should probably import a more compact ProGuard-style configuration
// file for all static settings, but we're specifying them all here, for
// the sake of the example.
//configuration 'configuration.pro'
verbose
// Specify the input jars, output jars, and library jars.
injars 'in.jar'
outjars 'out.jar'
// Automatically handle the Java version of this build.
if (System.getProperty('java.version').startsWith('1.')) {
// Before Java 9, the runtime classes were packaged in a single jar file.
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
} else {
// As of Java 9, the runtime classes are packaged in modular jmod files.
libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
//libraryjars "${System.getProperty('java.home')}/jmods/....."
}
//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 includedescriptorclasses: true, 'class * { \
native <methods>; \
}'
// Preserve the special static methods that are required in all enumeration
// classes.
keepclassmembers allowoptimization: true, 'enum * { \
public static **[] values(); \
public static ** valueOf(java.lang.String); \
}'
// Explicitly preserve all serialization members. The Serializable interface
// is only a marker interface, so it wouldn't save them.
// You can comment this out if your application doesn't use serialization.
// If your code contains serializable classes that have to be backward
// compatible, please refer to the manual.
keepclassmembers 'class * implements java.io.Serializable { \
static final long serialVersionUID; \
static final java.io.ObjectStreamField[] serialPersistentFields; \
private void writeObject(java.io.ObjectOutputStream); \
private void readObject(java.io.ObjectInputStream); \
java.lang.Object writeReplace(); \
java.lang.Object readResolve(); \
}'
// Your application may contain more items that need to be preserved;
// typically classes that are dynamically created using Class.forName:
// keep 'public class com.example.MyClass'
// keep 'public interface com.example.MyInterface'
// keep 'public class * implements com.example.MyInterface'
}
+111
View File
@@ -0,0 +1,111 @@
//
// This Gradle build file illustrates how to process a program
// library, such that it remains usable as a library.
// Usage:
// gradle -b library.gradle proguard
//
// Tell Gradle where to find the ProGuard task.
buildscript {
repositories {
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.0.1'
}
}
// Define a ProGuard task.
task ('proguard', type: proguard.gradle.ProGuardTask) {
// You should probably import a more compact ProGuard-style configuration
// file for all static settings, but we're specifying them all here, for
// the sake of the example.
//configuration 'configuration.pro'
verbose
// 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'
// Automatically handle the Java version of this build.
if (System.getProperty('java.version').startsWith('1.')) {
// Before Java 9, the runtime classes were packaged in a single jar file.
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
} else {
// As of Java 9, the runtime classes are packaged in modular jmod files.
libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
//libraryjars "${System.getProperty('java.home')}/jmods/....."
}
// 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 'Signature,Exceptions,InnerClasses,PermittedSubclasses,EnclosingMethod,Deprecated,SourceFile,LineNumberTable'
// 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 includedescriptorclasses: true, 'class * { \
native <methods>; \
}'
// Preserve the special static methods that are required in all enumeration
// classes.
keepclassmembers allowoptimization: true, 'enum * { \
public static **[] values(); \
public static ** valueOf(java.lang.String); \
}'
// Explicitly preserve all serialization members. The Serializable interface
// is only a marker interface, so it wouldn't save them.
// You can comment this out if your 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 com.example.MyClass'
// keep 'public interface com.example.MyInterface'
// keep 'public class * implements com.example.MyInterface'
}
+92
View File
@@ -0,0 +1,92 @@
//
// This Gradle build file illustrates how to process J2ME midlets.
// Usage:
// gradle -b midlets.gradle proguard
//
// Tell Gradle where to find the ProGuard task.
buildscript {
repositories {
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.0.1'
}
}
// Define a ProGuard task.
task ('proguard', type: proguard.gradle.ProGuardTask) {
// You should probably import a more compact ProGuard-style configuration
// file for all static settings, but we're specifying them all here, for
// the sake of the example.
//configuration 'configuration.pro'
verbose
// 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 includedescriptorclasses: true, '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 com.example.MyClass'
// keep 'public interface com.example.MyInterface'
// keep 'public class * implements com.example.MyInterface'
}
+121
View File
@@ -0,0 +1,121 @@
//
// This Gradle build file illustrates how to process ProGuard itself.
// Configuration files for typical applications will be very similar.
// Usage:
// gradle -b proguard.gradle proguard
//
// Tell Gradle where to find the ProGuard task.
buildscript {
repositories {
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.0.1'
}
}
// Define a ProGuard task.
task ('proguard', type: proguard.gradle.ProGuardTask) {
// You should probably import a more compact ProGuard-style configuration
// file for all static settings, but we're specifying them all here, for
// the sake of the example.
//configuration 'configuration.pro'
verbose
// Specify the input jars, output jars, and library jars.
injars '../../lib/proguard.jar'
outjars 'proguard_out.jar'
// Automatically handle the Java version of this build.
if (System.getProperty('java.version').startsWith('1.')) {
// Before Java 9, the runtime classes were packaged in a single jar file.
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
} else {
// As of Java 9, the runtime classes are packaged in modular jmod files.
libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
libraryjars "${System.getProperty('java.home')}/jmods/java.sql.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
//libraryjars "${System.getProperty('java.home')}/jmods/....."
}
// Write out an obfuscation mapping file, for de-obfuscating any stack traces
// later on, or for incremental obfuscation of extensions.
printmapping 'proguard.map'
// Don't print notes about reflection in GSON code, the Kotlin runtime, and
// our own optionally injected code.
dontnote 'kotlin.**'
dontnote 'kotlinx.**'
dontnote 'com.google.gson.**'
dontnote 'proguard.configuration.ConfigurationLogger'
// Preserve injected GSON utility classes and their members.
keep allowobfuscation: true, 'class proguard.optimize.gson._*'
keepclassmembers 'class proguard.optimize.gson._* { \
*; \
}'
// Obfuscate class strings of injected GSON utility classes.
adaptclassstrings 'proguard.optimize.gson.**'
// 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: true, '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 Gradle task, you'll have to specify the Gradle
// jars.
//libraryjars '/usr/local/java/gradle-4.2.1/lib/plugins/gradle-plugins-4.2.1.jar'
//libraryjars '/usr/local/java/gradle-4.2.1/lib/gradle-base-services-4.2.1.jar'
//libraryjars '/usr/local/java/gradle-4.2.1/lib/gradle-core-4.2.1.jar'
//libraryjars '/usr/local/java/gradle-4.2.1/lib/groovy-all-2.4.12.jar'
//keep 'public class proguard.gradle.* { \
// public *; \
//}'
// 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'
}
@@ -0,0 +1,95 @@
//
// This Gradle build file illustrates how to process the ProGuard GUI.
// Configuration files for typical applications will be very similar.
// Usage:
// gradle -b proguardgui.gradle proguard
//
// Tell Gradle where to find the ProGuard task.
buildscript {
repositories {
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.0.1'
}
}
// Define a ProGuard task.
task ('proguard', type: proguard.gradle.ProGuardTask) {
// You should probably import a more compact ProGuard-style configuration
// file for all static settings, but we're specifying them all here, for
// the sake of the example.
//configuration 'configuration.pro'
verbose
// Specify the input jars, output jars, and library jars.
// The input jars will be merged in a single output jar.
injars '../../lib/proguardgui.jar'
outjars 'proguardgui_out.jar'
// Automatically handle the Java version of this build.
if (System.getProperty('java.version').startsWith('1.')) {
// Before Java 9, the runtime classes were packaged in a single jar file.
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
} else {
// As of Java 9, the runtime classes are packaged in modular jmod files.
libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
libraryjars "${System.getProperty('java.home')}/jmods/java.sql.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
//libraryjars "${System.getProperty('java.home')}/jmods/....."
}
// Write out an obfuscation mapping file, for de-obfuscating any stack traces
// later on, or for incremental obfuscation of extensions.
printmapping 'proguardgui.map'
// 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', filter: '!proguard/ant/**,!proguard/wtk/**'
//libraryjars '../../lib/retrace.jar'
//libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
//libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
// Don't print notes about reflection in GSON code, the Kotlin runtime, and
// our own optionally injected code.
dontnote 'kotlin.**'
dontnote 'kotlinx.**'
dontnote 'com.google.gson.**'
dontnote 'proguard.configuration.ConfigurationLogger'
// 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[]); \
}'
}
+87
View File
@@ -0,0 +1,87 @@
//
// This Gradle build file illustrates how to process the ReTrace tool.
// Configuration files for typical applications will be very similar.
// Usage:
// gradle -b retrace.gradle proguard
//
// Tell Gradle where to find the ProGuard task.
buildscript {
repositories {
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.0.1'
}
}
// Define a ProGuard task.
task ('proguard', type: proguard.gradle.ProGuardTask) {
// You should probably import a more compact ProGuard-style configuration
// file for all static settings, but we're specifying them all here, for
// the sake of the example.
//configuration 'configuration.pro'
verbose
// Specify the input jars, output jars, and library jars.
// The input jars will be merged in a single output jar.
injars '../../lib/retrace.jar'
outjars 'retrace_out.jar'
// Automatically handle the Java version of this build.
if (System.getProperty('java.version').startsWith('1.')) {
// Before Java 9, the runtime classes were packaged in a single jar file.
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
} else {
// As of Java 9, the runtime classes are packaged in modular jmod files.
libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
libraryjars "${System.getProperty('java.home')}/jmods/java.sql.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
//libraryjars "${System.getProperty('java.home')}/jmods/....."
}
// Write out an obfuscation mapping file, for de-obfuscating any stack traces
// later on, or for incremental obfuscation of extensions.
printmapping 'retrace.map'
// 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', filter: 'proguard/retrace/**'
// Don't print notes about reflection in GSON code, the Kotlin runtime, and
// our own optionally injected code.
dontnote 'kotlin.**'
dontnote 'kotlinx.**'
dontnote 'com.google.gson.**'
dontnote 'proguard.configuration.ConfigurationLogger'
// 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[]); \
}'
}
+166
View File
@@ -0,0 +1,166 @@
//
// This Gradle build file illustrates how to process Scala
// applications, including the Scala runtime.
// Usage:
// gradle -b scala.gradle proguard
//
// Tell Gradle where to find the ProGuard task.
buildscript {
repositories {
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.0.1'
}
}
// Define a ProGuard task.
task ('proguard', type: proguard.gradle.ProGuardTask) {
// You should probably import a more compact ProGuard-style configuration
// file for all static settings, but we're specifying them all here, for
// the sake of the example.
//configuration 'configuration.pro'
verbose
// 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', filter: '!META-INF/MANIFEST.MF'
//injars '/usr/local/java/scala-2.9.1/lib/jline.jar', filter: '!META-INF/MANIFEST.MF'
outjars 'out.jar'
// Automatically handle the Java version of this build.
if (System.getProperty('java.version').startsWith('1.')) {
// Before Java 9, the runtime classes were packaged in a single jar file.
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
} else {
// As of Java 9, the runtime classes are packaged in modular jmod files.
libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
//libraryjars "${System.getProperty('java.home')}/jmods/....."
}
//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 includedescriptorclasses: true, 'class * { \
native <methods>; \
}'
// Preserve the special static methods that are required in all enumeration
// classes.
keepclassmembers allowoptimization: true, 'enum * { \
public static **[] values(); \
public static ** valueOf(java.lang.String); \
}'
// Explicitly preserve all serialization members. The Serializable interface
// is only a marker interface, so it wouldn't save them.
// You can comment this out if your application doesn't use serialization.
// If your code contains serializable classes that have to be backward
// compatible, please refer to the manual.
keepclassmembers 'class * implements java.io.Serializable { \
static final long serialVersionUID; \
static final java.io.ObjectStreamField[] serialPersistentFields; \
private void writeObject(java.io.ObjectOutputStream); \
private void readObject(java.io.ObjectInputStream); \
java.lang.Object writeReplace(); \
java.lang.Object readResolve(); \
}'
// Your application may contain more items that need to be preserved;
// typically classes that are dynamically created using Class.forName:
// keep 'public class com.example.MyClass'
// keep 'public interface com.example.MyInterface'
// keep 'public class * implements com.example.MyInterface'
}
+103
View File
@@ -0,0 +1,103 @@
//
// This Gradle build file illustrates how to process servlets.
// Usage:
// gradle -b servlets.gradle proguard
//
// Tell Gradle where to find the ProGuard task.
buildscript {
repositories {
mavenLocal()
mavenCentral()
google()
}
dependencies {
classpath 'com.guardsquare:proguard-gradle:7.0.1'
}
}
// Define a ProGuard task.
task ('proguard', type: proguard.gradle.ProGuardTask) {
// You should probably import a more compact ProGuard-style configuration
// file for all static settings, but we're specifying them all here, for
// the sake of the example.
//configuration 'configuration.pro'
verbose
// Specify the input jars, output jars, and library jars.
injars 'in.jar'
outjars 'out.jar'
// Automatically handle the Java version of this build.
if (System.getProperty('java.version').startsWith('1.')) {
// Before Java 9, the runtime classes were packaged in a single jar file.
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
} else {
// As of Java 9, the runtime classes are packaged in modular jmod files.
libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
}
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 includedescriptorclasses: true, 'class * { \
native <methods>; \
}'
// Preserve the special static methods that are required in all enumeration
// classes.
keepclassmembers allowoptimization: true, 'enum * { \
public static **[] values(); \
public static ** valueOf(java.lang.String); \
}'
// Explicitly preserve all serialization members. The Serializable interface
// is only a marker interface, so it wouldn't save them.
// You can comment this out if your 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 com.example.MyClass'
// keep 'public interface com.example.MyInterface'
// keep 'public class * implements com.example.MyInterface'
}
+6
View File
@@ -0,0 +1,6 @@
//
// Gradle Settings file, required to test any of the example gradle build files in this directory.
// Invoke Gradle with the `-b` argument to point at a particular build file
//
rootProject.name = "proguard-gradle-examples"