Android Proguard syntax, androidproguard
-Include {filename}: Read the configuration parameters from the specified file.
-Basedirectory {directoryname}: Specify the base directory as the file name.
-Injars {class_path} specifies the application jar, war, ear, and directory to be processed.
-Outjars {class_path} specifies the name of the jar, war, ear, and directory to be output after processing.
-Libraryjars {classpath} specifies the application jar, war, ear, and library files required by the Directory to be processed.
-Dontskipnonpubliclibraryclasses specifies that non-public library classes are not ignored.
-Dontskipnonpubliclibraryclassmembers specifies that the visible Library Class Members of the package are not ignored.
Retain option
-Keep {Modifier} {class_specification} protects specified class files and Class Members
-Keepclassmembers {modifier} {class_specification} protects the members of the specified class. If this class is protected, it will be better protected.
-Keepclasseswithmembers {class_specification} protects the specified class and class members, but the condition is that all specified classes and Class Members must exist.
-Keepnames {class_specification} protects the names of members of the specified class and class (if they are not compressed and deleted in the step)
-Keepclassmembernames {class_specification} protects the names of members of the specified class (if they are not removed from the compression step)
-Keepclasseswithmembernames {class_specification} protects the names of specified classes and Class Members. If all specified class members are present (after the compression step)
-Printseeds {filename} lists the Member-keep options of classes and classes, and outputs them to the specified files.
Compression
-Dontshrink does not compress input class files
-Printusage {filename}
-Whyareyoukeeping {class_specification}
Optimization
-Dontoptimize: the input class file is not optimized.
-Assumenosideeffects {class_specification}: the specified method is assumed during optimization without any side effects.
-Allowaccessmodification: allows access to and modification of modifier classes and class members during optimization.
Obfuscation
-Dontobfuscate does not confuse input class files
-Printmapping {filename}
-Added obfuscation when applymapping {filename} is reused.
-Obfuscationdictionary {filename} uses the keyword in the given file as the name of the method to be confused
-Overloadaggressively: Application intrusive overload during Obfuscation
-Useuniqueclassmembernames: Determine the names of members of a unified obfuscation class to add obfuscation.
-Flattenpackagehierarchy {package_name} repacks all renamed packages and stores them in a given single package.
-Repackageclass {package_name} repacks all renamed class files and stores them in a given single package.
-Dontusemixedcaseclassnames does not produce a variety of class names when obfuscation is performed.
-Keepattributes {attribute_name,...} protects the specified optional attributes, such as LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and
InnerClasses.
-Renamesourcefileattribute {string}: Set the given string constant in the source file.
-Ignorewarnings # ignore warnings to avoid some warnings during packaging
-Optimizationpasses 5 # specify the code compression level
-Dontusemixedcaseclassnames # Use case-insensitive Mixture
-Dontskipnonpubliclibraryclasses # Whether to confuse third-party jar
-Dontpreverify # Whether to perform pre-check during Obfuscation
-Verbose # Whether to log during Obfuscation
-Optimizations! Code/simplification/arithmetic ,! Field /*,! Class/merging/* # obfuscation algorithm
-Libraryjars libs/treecore. jar
-Dontwarn android. support. v4. ** # by default, proguard checks whether each reference is correct. However, third-party libraries often have classes that are not used and are not correctly referenced. If not configured, the system reports an error.
-Dontwarn android. OS .**
-Keep class android. support. v4. ** {*;} # keep classes that are not obfuscated
-Keep class com. baidu .**{*;}
-Keep class vi.com. gdi. bgl. android .**{*;}
-Keep class android. OS .**{*;}
-Keep interface android. support. v4.app .**{*;}
-Keep public class * extends android. support. v4 .**
-Keep public class * extends android. app. Fragment
-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. support. v4.widget
-Keep public class * extends com. sqlcrypt. database
-Keep public class * extends com. sqlcrypt. database. sqlite
-Keep public class * extends com. treecore .**
-Keep public class * extends de. greenrobot. dao .**
-Keepclasseswithmembernames class * {# Keep the native method not obfuscated
Native <methods>;
}
-Keepclasseswithmembers class * {# Keep the custom control class unchanged
Public <init> (android. content. Context, android. util. AttributeSet );
}
-Keepclasseswithmembers class * {# Keep the custom control class unchanged
Public <init> (android. content. Context, android. util. AttributeSet, int );
}
-Keepclassmembers class * extends android. app. Activity {// persistence class member
Public void * (android. view. View );
}
-Keepclassmembers enum * {# Keep The enum class of the enumeration unobfuscated
Public static ** [] values ();
Public static ** valueOf (java. lang. String );
}
-Keep class * implements android. OS. Parcelable {# keep Parcelable unchanged
Public static final android. OS. Parcelable $ Creator *;
}
-Keep class MyClass; # keep the classes defined by you from being confused </init> </methods>
#-------------------------------------
# Original android obfuscation Template
#-------------------------------------
#----------------------------------
# Execution can be performed through a specified number of Optimizations
#-Optimizationpasses n
#----------------------------------
-Optimizationpasses 5
#----------------------------------
# Classes with different names are not generated during obfuscation.
#-Dontusemixedcaseclassnames
#----------------------------------
#-Dontusemixedcaseclassnames
#----------------------------------
# Specify not to ignore non-public library classes
#-Dontskipnonpubliclibraryclasses
#----------------------------------
#-Dontskipnonpubliclibraryclasses
#----------------------------------
# No pre-check
#-Dontpreverify
#----------------------------------
#-Dontpreverify
#----------------------------------
# Output generation information
#-Verbose
#----------------------------------
-Verbose
#----------------------------------
# Optimization Options
# Optimizations {optimization_filter}
#----------------------------------
-Optimizations! Code/simplification/arithmetic ,! Field /*,! Class/merging /*
-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. app. backup. BackupAgentHelper
-Keep public class * extends android. preference. Preference
-Keep public class com. android. vending. licensing. ILicensingService
-Keepclasseswithmembernames class *{
Native <methods>;
}
#-----------------
# Modify and merge
#-----------------
-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 *(...);
}
-Keepclassmembers enum *{
Public static ** [] values ();
Public static ** valueOf (java. lang. String );
}
-Keep class * implements android. OS. Parcelable {
Public static final android. OS. Parcelable $ Creator *;
}
#--------------------------
# Protection Type-Description of keepattributes
# Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable,
# LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations,
# RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, and AnnotationDefault
#--------------------
-Keepattributes **
-Libraryjars <java. home>/lib/rt. jar
#----------------------
# Do not compress the specified file
#-Dontshrink
#----------------------
-Dontshrink
#----------------------
# Do not optimize the specified file
#-Dontoptimize
#-----------------------
-Dontoptimize
#-----------------------
# Do not confuse the specified file
#-Dontobfuscate
#-----------------------
# ----- Confusion package path -------
-Repackageclasses''
-Flattenpackagehierarchy''
-Target 1.6
# -------- The following is the use of roboguice-1.1.2.jar and guice-2.0-no_app.jar functions need to protect the field and class related --------
-Keep class com. google. inject. Binder
-Keepclassmembers class *{
@ Com. google. inject. Inject <init> (...);
}
-Keepclassmembers class *{
Void * (** On * Event );
}
-Keepclassmembers class **. R$ *{
Public static <fields>;
}
# ------ Jar package used during compilation
-Libraryjars D:/dev_rc/android-sdk-windows/add-ons/addon_google_apis_google_inc_11/libs/maps. jar
# ------ Protect Google third-party jar packages and interface special effects ----------
-Keep class android. support. v4 .**
-Dontwarn android. support. v4 .**
# ------ Protect Baidu address jar package --------
-Keep class com. baidu. mapapi .**{*;}
-Dontwarn com. baidu. mapapi .**
# --- Ignore the warning of the following classes during packaging --
-Dontwarn com. classpackage. AA
#-Keepnames class * implements java. io. Serializable
# --------- Protect the field names in all entities ----------
-Keepclassmembers class * implements java. io. Serializable {
<Fields>;
}
# --------- Name of all methods in the protection class ------------
-Keepclassmembers class *{
Public <methods>;
}