首页 > 代码库 > 关于proguard.flags的一些知识

关于proguard.flags的一些知识

一、什么是proguard?

       proguard是一个免费的JAVA类文件压缩,优化,混淆器。

       它探测并删除没有使用的类,字段,方法和属性,它删除没有用的说明并使用字节码得到最大优化,它使用无意义的名字重命名类,字段和方法。

二、为啥要使用proguard?

      1、优化应用:创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用;

      2、防止反向:创建的程序和程序库很难使用反向工程;

      3、预处理应用:充分利用JAVA6的快捷加载的优点来提前检测和返回JAVA6中存在的类文件。

三、有些什么参数可用?

      1、-include  {filename} 从指定的文件中读取配置参数

      2、-basedirectory {directoryname} 指定基础目录为以后相对的档案文件

      3、-injars {class_path} 指定要处理的应用程序jar,war,ear的目录

      4、-outjars {class_path} 指定处理完后要输出的jar,war,ear目录的名称

      5、-libraryjars {class_path} 指定要处理的应用程序jar,war,ear和目录所需要的程序库文件

      6、dontskipnonpubliclibraryclasses 指定不去忽略非公共的库类

      7、dontskipnonpubliclibraryclassmebmbers 指定不去忽略可见的库类的成员

四、有哪些保留选项?

      1、-keep {Modifier} {class_specification} 保护指定的类文件和类的成员

      2、-keepclassmembers {Modifier} {class_specification} 保护指定类的成员,如果此类受到保护他们会保护得更好

      3、-keepclasseswithmembers {class_specification} 保护指定的类和类的成员,但条件是所有指定的类和类的成员是要存在的

      4、-keepnams {class_specification} 保护指定的类的成员和名称(如果他们不会在压缩的过程中被删除)

      5、-keepclassmembernames {class_specification} 保护指定类的成员的名称(如果他们不会在压缩的过程中被删除)

      6、-keepclasseswithmembersnams {class_specification} 保护指定的类和类成员的名称,如果所有指定的类成员出席(在压缩之后)

      7、-printseeds {filename} 列出类和类成员-keep选项的清单,标准输出到给定的文件

五、压缩 

     1、dontshrink    不压缩输入的类文件 

     2、printusage {filename}

     3、whyareyoukeeping {class_specification}     

六、优化 

     1、-dontoptimize    不优化输入的类文件 

     2、-assumenosideeffects {class_specification}    优化时假设指定的方法,没有任何副作用 

     3、-allowaccessmodification    优化时允许访问并修改有修饰符的类和类的成员 

七、混淆

     1、-dontobfuscate    不混淆输入的类文件 

     2、-printmapping {filename} 

     3、-applymapping {filename}    重用映射增加混淆 

     4、-obfuscationdictionary {filename}    使用给定文件中的关键字作为要混淆方法的名称 

     5、-overloadaggressively    混淆时应用侵入式重载 

     6、-useuniqueclassmembernames    确定统一的混淆类的成员名称来增加混淆 

     7、-flattenpackagehierarchy {package_name}    重新包装所有重命名的包并放在给定的单一包中 

     8、-repackageclass {package_name}    重新包装所有重命名的类文件中放在给定的单一包中 

     9、-dontusemixedcaseclassnames    混淆时不会产生形形色色的类名

     10、-keepattributes {attribute_name,...}    保护给定的可选属性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses. 

     11、-renamesourcefileattribute {string}    设置源文件中给定的字符串常量 

关于proguard.flags的一些知识