锁定老帖子 主题:Proguard 简述
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-21
前一段时间PM让我搞代码混淆,开始我一头雾水,不清楚是搞什么的。(代码混淆就是对编译的class文件中的一些处理,也就是防止class文件反编译后产生可读性很强的源文件)。
接到任务后到网上狂找这方面的东东,有以下工具(jocky,proguard,retroguard......)
我只使用了两种jocky和proguard,主要说一下proguad。下面是我翻译的proguard的帮助文档。本人E文不是很好,如果有不解的地方可以参考一下原帮助文档。
ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到最大优化.它使用无意义的名字来重命名类,字段和方法.
因为我们开发的是webwork+spring+hibernate的架构的项目,所有需要很详细的配置。(经过n次失败后总结)
Example: -injars <project>.jar -outjars <project>_out.jar
-libraryjars <java.home>/lib/rt.jar -libraryjars <project.home>/webroot/WEB-INF/lib/webwork.jar .......
# 保留实现Action接口类中的公有的,友好的,私有的属性 和 公有的,友好的方法。其它的全部压缩,优化,混淆。 # 因为配置文件中的类名是一个完整的类名,如果经过处理后就有可能找不到这个类。 # 属性是jsp页面所需要的,如果经过处理jsp页面就无法得到action中的数据。 -keep public class * implements com.opensymphony.xwork.Action{ public protected private <fields>; public protected <methods>; }
# 保留实现了Serializable接口类中的公有的,友好的,私有的成员(属性和方法) # 这个配置主要是对应实体类的配置。 -keep public class * implements java.io.Serializable{ public protected private *; }
......
# 关于配置的解释已说了很多了,下面的配置自已可以尝试。
然后在命行端输入:proguard @配置文件
(proguard是我自已写的批处理,你也可以自已写一下。)
总结: proguard在处理web application方面还行,但不是很完美。如果的框架设计的不是很好的话配置加多不说,处理效果也是很好。
在简单说一个jocky,它在处理桌面的程序应该时较完美的。如果处理应用了spring框架的程序我想是不可能的。
如果有错的方面还请各位指出。有好的想法也可以交流。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-08
你好,可以贴出配置文件的内容吗?
|
|
返回顶楼 | |
发表时间:2009-06-01
我也想看一下出配置文件的内容,搞了好几次都没搞好。
|
|
返回顶楼 | |
发表时间:2009-06-02
就是模糊处理啊,现在貌似没什么用处了。
|
|
返回顶楼 | |
发表时间:2009-08-14
还是有必要的!!! 不知道楼主 可否贴下配置文件 ????
|
|
返回顶楼 | |
发表时间:2009-08-14
我现在很郁闷
|
|
返回顶楼 | |
发表时间:2009-08-14
晕
-printmapping proguard.map -overloadaggressively -defaultpackage '' -allowaccessmodification -dontoptimize -keepattributes Signature,*Annotation* -keep public class * { public public *; } 就是不混淆我的方法体 只有混淆里面的变量。。。。。。。。。。。 |
|
返回顶楼 | |
浏览 14232 次