proguard使用





可以从这里下载到最新的Proguard源代码和API文档。下载的lib文件夹内包含3个jar包,
proguard.jar是proguard的主程序,proguardgui.jar为图形界面,用这个可以很方便的生成proguard的配置文件,Retrace为反追踪。
Proguard的具体功能和效果就不多 说,网上有很多介绍,主要说下图形界面的各项操作,通过图形界面生成Proguard混淆前的配置文件。
java -jar proguardgui.jar [-nosplash][configuration_file]
-nosplash参数:运行ProGuard时不显示开头动画。
configuration_file: ProGuard运行时加载的配置文件(如果你已经有一个通用的Proguard的配置文件,在这里调用,再针对项目做些修改)。
Input/Output标签:
这里选择需要混淆的代码目录和输出混淆后代码的目录以及项目所有需要的lib包。需混淆的代码可以已jar、war、ear、zip等格式打包,或者直接指定代码目录(此时注意要指定到代码的最上成package所在目录)。
“Add Input”添加需要混淆的代码。
“Add Output”指定输出路径和格式
“Edit”编辑设定
“Filter”过滤不需要的文件和包
“Remove”删除不需要的文件和包
“Move Up”“Move Down”将设定移动显示位置
“Move to libraries”移动到项目所需要的lib中
“Move to program”移动到项目中
下部的“Add”为添加项目所需要的lib包,如果是web项目把j2ee包也添加到lib中。
Shrinking、Optimization标签:
Proguard可以压缩和优化代码,将一些无用 类、字段和方法删除和优化代码。这里就不多说,
主要解释下Obfuscation标签。
“obfuscate”选上混淆机制才可用。
“Print mapping”输出映射文件,混淆前后的类名、方法名,属性名的对照。
“Apply mapping”应用映射文件,可以指定混淆后的类名、方法名,属性名。
“Obfuscation dictionary”混淆字典,指定混淆使用的字符。
“Overlord aggressively”优先重载
“Use unique class member names”使用唯一的类成员名称
“Default package”默认包名
“Use mixed-case class names”使用混合的类名,这样不同的类混淆后将使用同一类名。
“Keep attributes”指定需要保留属性的资源文件
“Rename SourceFile attribute”重命名资源文件属性
“Keep names”保留的名称
“Native method names”本地方法名称
“.class method names”指定需要保存方法名称的类
“Keep additional class names and class member names”保留(不需要混淆)的类名和成员名
点击“Add”或“Edit”编辑需要保留的类
“Comments”文本域可以对当前条目加上可选的注释。这个注释将标识列表中的这个条目并作为注释出现在配置文件中
“Keep classes and class members”保留类名和成员名
“Keep class members only”只保留成员名
“Keep classes and class members, if members are present”
“Access”访问修饰符,指定需要保留类的修饰符
“Class”指定类名,可以用“*”通配符进行指定比如“*Number*”
“Extends/implements class”继承和实现的类,此处需要指定类的完整路径,包括包名。
“Class members”要保留的成员
“Add field”添加需要保留的属性,通过指定修饰符,类型和名称来配置。
“Add method”添 加需要保留的属方法,通过指定修饰符,返回类型和名称来配置
Information(参数信息)标签:
“Consistency and correctness”连贯性和正确性
“Print seeds”打印日志
“verbose”详细信息
“Warn about missing libraries”缺少类库时发出警告
“Ignore warnings about missing libraries”忽略缺少类库的警告,有时缺少某些类库也可以混淆,Proguard提倡先消除所有的警告,然后混淆。
“Skip non-public library classes”跳过所有非公有类,加快加载lib速度。
“Skip non-public library class members”跳过所有非共有方法,加快解析lib速度
“Why are u keeping”
Process标签:
“View configuration”查看配置
“Save configuration”保存配置
Retrace(反追踪)标签
简单说下keep参数,这个是设定要保留不参与混淆的类和成员。
keepclass_specification保留指定的类和成员名称和内容
keepclassmembersclass_specification只保留指定的类成员名称和内容
keepclasseswithmembersclass_specification
keepnamesclass_specification保留类和成员名称,混淆内容
keepclassmembernamesclass_specification只保留成员名称,混淆内容
keepclasseswithmembernames class_specification
在使用过程中,我比较 喜欢建立几个抽象类,Keep,KeepClassMembers,
KeepClassesWithMembers,KeepNames,KeepClassMemberNames,
KeepClassesWithMemberNames,把需要混淆的核心代码单独打包,需要保留特定属性的类分别继承各个方法,这样设定混淆配置时就比较容易。
proguard使用的更多相关文章
- android studio/Intellij idea之proguard实践
默认情况下,build->Gene Signed APK 反编译后发现,没有混淆... 多次爬stackoverflow才搞定这个问题: 首先 build variants这里由debug设置为 ...
- Eclipse与Android源码中ProGuard工具的使用
由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的 ...
- Android proguard 详解
本文转载于:http://blog.csdn.net/banketree/article/details/41928175 简介 Java代码是非常容易反编译的.为了很好的保护Java源代码,我们往往 ...
- ProGuard代码混淆技术详解
前言 受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI ...
- [Android]proguard重新编译和如何不混淆第三方jar包
转载自:http://glblong.blog.51cto.com/3058613/1536516 一.ant安装.环境变量配置及验证 (一)安装ant 到官方主页http://ant.apache. ...
- android ProGuard 代码混淆实现
1 修改project.properties,添加ProGuard配置项 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt: ...
- 使用Proguard做Java代码混淆
下载Proguard, 我下的是最新的Proguad5.2 在windows下运行bin/proguardgui.bat, 可以看见图形界面, 载入配置, 然后process. 配置文件例子 -inj ...
- Android之Proguard语法
-include {filename} 从给定的文件中读取配置参数 -basedirectory {directoryname} 指定基础目录为以后相对的档案名称 -injars {class_pat ...
- 使用proguard混淆java web项目代码
1.首先下载proGuard.zip到本地: proguard4.5beta4.tar.zip解压开,2.新建文本文档,修改文件名为XXX.pro,然后复制下面内容到.pro -injars 'Y:\ ...
- How To Use Proguard in Android APP
在Android开发完成即将发布给用户使用时,还有最后重要的一步:代码混淆,这时候,Proguard就派上用场了,大家谁也不想辛辛苦苦写的代码太容易被别人反编译过来,而Proguard就是帮我们实现这 ...
随机推荐
- maven--私服的搭建(Nexus的使用)
Nexus常用功能就是:指定私服的中央地址.将自己的Maven项目指定到私服地址.从私服下载中央库的项目索引.从私服仓库下载依赖组件.将第三方项目jar上传到私服供其他项目组使用. 开启Nexus服务 ...
- SQL判断语句用法和多表查询
1.格式化时间sql语句 本例中本人随便做了两张表,和实际不是很相符,只是想说明sql语句的写法. 例1表格式如下: 需求:查询出本表,但需要使time字段的时间格式为yyyy-MM-dd,比如:20 ...
- HDU 1688 Sightseeing&HDU 3191 How Many Paths Are There(Dijkstra变形求次短路条数)
Sightseeing Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- iOS segue 跳转
场景描述: 要实现在tableViewController 的界面A里,点击一个cell ,跳转到第二个viewController的界面B .在第二个界面里做相应操作. 我的做法,利用sb,在A 里 ...
- MyBatis+springMVC+easyUI (dataGirl)实现分页
页面展示效果. 页面代码: <%@ page contentType="text/html;charset=UTF-8" language="java" ...
- Apache Storm技术实战之3 -- TridentWordCount
欢迎转载,转载请注明出处. 介绍TridentTopology的使用,重点分析newDRPCStream和stateQuery的实现机理. 使用TridentTopology进行数据处理的时候,经常会 ...
- 每天学点GDB 15
本节重点描述两个gdb集成测试环境 有没有办法在一边调试的时候,一边显示对应的源码呢?有没有一种工具能够将gdb集成到ide中呢,本文就试图回答这些问题. emacs gdb 在linux的世界里,e ...
- nginx 配置多个二级域名
server { server_name domain.com www.domain.com *.domain.com ; set $subdomain ''; if ($host ~* (\b(?! ...
- 泌尿系统 Excretory system
https://zh.wikipedia.org/wiki/泌尿系统 泌尿系統,有時也歸類於排泄系統(Excretory system)的一部分,負責尿液的產生.運送.儲存與排泄.人類的泌尿系統包括左 ...
- nginx生产配置
user www www; worker_processes 8; error_log /data/logs/nginx_error.log crit; pid /usr/local/webserve ...