混淆Proguard Reference的使用(一)

本文参考文档位于Android SDK\tools\proguard目录下,如果想更深入的学习,可以查看docs或者examples目录下的内容!
本文先查看这个文档:file:///ANDROID_HOME/tools/proguard/docs/manual/refcard.html

参考文档:http://www.cnblogs.com/royi123/archive/2013/02/28/2937657.html

文档名:ProGuard Reference Card

用法:

java -jar proguard.jar options ...

示例:

java -jar proguard.jar @myconfig.pro

选项Options列表:

Options选项描述
Input/Output Options 输入输出选项
@filename缩写 ‘-include filename’.
-include filename读取指定的混淆配置文件.
-basedirectory directoryname指定基础目录为以后相对的档案名称
-injars class_path指定要处理的应用程序jar(或war,ear和目录.)
-outjars class_path指定处理完后要输出的jar(或war,ear和目录的名称)
-libraryjars class_path指定要处理的应用程序jar(war,ear和目录所需要的程序库文件)
-skipnonpubliclibraryclassesIgnore non-public library classes.忽略非public的库类。
-dontskipnonpubliclibraryclasses不忽略非public的库类。。(默认该属性).
-dontskipnonpubliclibraryclassmembers指定不去忽略包可见的库类的成员
-keepdirectories [directory_filter]保护指定目录中的输出文件jar(war,ear和目录所需要的程序库文件)
-target version指定版本号来设定处理类文件的版本. version的值必须是这些值中的一个 1.0, 1.1, 1.2, 1.3, 1.4, 1.5 (or just 5), 1.6 (or just 6), or 1.7 (or just 7).
-forceprocessing指定处理输入, 即使输出似乎是新的
Keep Options 保护选项
-keep [,modifier,…] class_specification保护指定的类文件和类的成员 For example, 为保护一个 application, 应该指定它的 main class 和它的 main method; 为了处理一个library,应该指出所有可获取的公共元素
-keepclassmembers [,modifier,…] class_specification保护指定类的成员,如果此类也受到保护会更好
-keepclasseswithmembers [,modifier,…] class_specification保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。
-keepnames class_specification保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除)! 也是-keep,allowshrinking class_specification的缩写!
-keepclassmembernames class_specification保护指定的类的成员的名称(如果他们不会压缩步骤中删除)!也是-keepclassmembers,allowshrinking class_specification的缩写。
-keepclasseswithmembernames class_specification保护指定的类和类的成员的名称,如果在压缩步骤之后所有指定的类成员还存在
-printseeds [filename]列出类和类的成员-keep选项的清单,标准输出到给定的文件
Shrinking Options 压缩选项
-dontshrink不压缩输入的类文件
-printusage [filename]输入程序中的无用代码到指定文件
-whyareyoukeeping class_specificationPrint details on why the given classes and class members are being kept in the shrinking step.
Optimization Options
-dontoptimize不优化输入的类文件.(默认是优化的,所有的方法都是在代码级优化)
-optimizations optimization_filter指定这个优化是能或者不能.这是一个导出选项,只有优化开启才能应用这个属性!
-optimizationpasses n指定要执行的优化的次数
-assumenosideeffects class_specification假设在优化时,所指定的方法并没有任何副作用或者影响.
-allowaccessmodification优化时允许访问并修改有修饰符的类和类的成员
-mergeinterfacesaggressively当优化时允许任何接口的合并
Obfuscation Options
-dontobfuscate不混淆类文件,(如果设置,就没有混淆了)
-printmapping [filename]对于已经重命名的类和类成员变量,打印出从旧名到新命令的映射集合,并将打印内容输出到所指定的文件中去
-applymapping filename重用映射增加混淆
-obfuscationdictionary filename使用给定文件中的关键字作为要混淆方法的名称。 注意这能极大改善混淆. 用法: java -jar proguard.jar ….. -obfuscationdictionary keywords.txt
-classobfuscationdictionary filename用给定文件中的关键字来混淆类名
-packageobfuscationdictionary filename用给定文件中的关键字来混淆包名
-overloadaggressively混淆时应用侵入式重载。这个可选操作能使代码更小,更难理解
-useuniqueclassmembernames使混淆的类成员的名一致来增加混淆
-dontusemixedcaseclassnames混淆时不会产生形形色色的类名.默认时产生的混淆类名会包含大小写字符。注意,使用这个能使混淆后的jar变大
-keeppackagenames [package_filter]使所指定的包名不进行混淆
-flattenpackagehierarchy [package_name]重新包装所有重命名的包并放在给定的单一包中.这个可选操作能使代码更小,更难理解
-repackageclasses [package_name]重新包装所有重命名的类文件中放在给定的单一包中
-keepattributes [attribute_filter]保护给定的可选属性,例如typically Exceptions, InnerClasses, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable,LocalVariableTypeTable, Synthetic, EnclosingMethod, and Annotation.
-keepparameternames保护参数名和方法类型不被混淆
-renamesourcefileattribute [string]设置源文件中给定的字符串常量
-adaptclassstrings [class_filter]看解释是让特定的字符串不被混淆,因为有些字符串可能作为关键字存在!.指定字符串所对应的类名也需要混淆
-adaptresourcefilenames [file_filter]对指定的文件或者资源文件进行重命名混淆(资源文件不是类文件,可能是图片jpg,html等文件,只能进行重命名)
-adaptresourcefilecontents [file_filter]对资源集文件里的文件名进行更新:例如-adaptresourcefilecontents **.properties,META-INF/MANIFEST.MF
Preverification Options
-dontpreverify不需要预先编译要处理的类文件.
-microedition指定编译类文件的Java版本是Java Micro Edition
General Options
-verbose在处理时打印信息.
-dontnote [class_filter]不打印潜在的错误日志或者在配置中忽略的日志
-dontwarn [class_filter]不打印警告信息
-ignorewarnings打印警告信息,但是继续执行
-printconfiguration [filename]把处理的类文件内部结构写到标准输出文件或者锁给定的文件中
-dump [filename]指定打印类结构.

混淆后的文件

文件名文件描述
dump.txt描述.apk文件中所有类文件间的内部结构
mapping.txt列出了原始的类,方法和字段名与混淆后代码间的映射。这个文件很重要,当你从release版本中收到一个bug报告时,可以用它来翻译被混淆的代码。
seeds.txt列出了未被混淆的类和成员
usage.txt列出了从.apk中删除的代码

以上内容,在翻译的时候可能有些部分有出入!如果您在阅读的过程中发现,希望能指正一下,在此提前谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值