ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到最大优化.它使用无意义的名字来重命名类,字段和方法.?
ProGuard的使用是为了:?
1.创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用.?
2.创建的程序和程序库很难使用反向工程.?
3.所以它能删除来自源文件中的没有调用的代码?
4.充分利用java6的快速加载的优点来提前检测和返回java6中存在的类文件.?
参数:?
-include {filename}??? 从给定的文件中读取配置参数?
-basedirectory {directoryname}??? 指定基础目录为以后相对的档案名称?
-injars {class_path}??? 指定要处理的应用程序jar,war,ear和目录?
-outjars {class_path}??? 指定处理完后要输出的jar,war,ear和目录的名称?
-libraryjars {classpath}??? 指定要处理的应用程序jar,war,ear和目录所需要的程序库文件?
-dontskipnonpubliclibraryclasses??? 指定不去忽略非公共的库类。?
-dontskipnonpubliclibraryclassmembers??? 指定不去忽略包可见的库类的成员。?
保留选项?
-keep {Modifier} {class_specification}??? 保护指定的类文件和类的成员?
-keepclassmembers {modifier} {class_specification}??? 保护指定类的成员,如果此类受到保护他们会保护的更好?
-keepclasseswithmembers {class_specification}??? 保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。?
-keepnames {class_specification}??? 保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除)?
-keepclassmembernames {class_specification}??? 保护指定的类的成员的名称(如果他们不会压缩步骤中删除)?
-keepclasseswithmembernames {class_specification}??? 保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)?
-printseeds {filename}??? 列出类和类的成员-keep选项的清单,标准输出到给定的文件?
压缩?
-dontshrink??? 不压缩输入的类文件?
-printusage {filename}?
-whyareyoukeeping {class_specification}?????
优化?
-dontoptimize??? 不优化输入的类文件?
-assumenosideeffects {class_specification}??? 优化时假设指定的方法,没有任何副作用?
-allowaccessmodification??? 优化时允许访问并修改有修饰符的类和类的成员?
混淆?
-dontobfuscate??? 不混淆输入的类文件?
-printmapping {filename}?
-applymapping {filename}??? 重用映射增加混淆?
-obfuscationdictionary {filename}??? 使用给定文件中的关键字作为要混淆方法的名称?
-overloadaggressively??? 混淆时应用侵入式重载?
-useuniqueclassmembernames??? 确定统一的混淆类的成员名称来增加混淆?
-flattenpackagehierarchy {package_name}??? 重新包装所有重命名的包并放在给定的单一包中?
-repackageclass {package_name}??? 重新包装所有重命名的类文件中放在给定的单一包中?
-dontusemixedcaseclassnames??? 混淆时不会产生形形色色的类名?
-keepattributes {attribute_name,...}??? 保护给定的可选属性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses.?
-renamesourcefileattribute {string}??? 设置源文件中给定的字符串常量?
因为我们开发的是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 *;?
??? }?
详细解决方案
android 搅混
热度:306 发布时间:2016-05-01 14:40:46.0
相关解决方案
- android 读取byte[]中的元素解决方案
- android 标题栏兑现方式
- android 中Activity向BroadcastReceiver发送数据,该怎么解决
- Android 4.0 为什么模拟器老是提示小弟我谷歌拼音输入法已停止
- android:getSharedPreferences() 这是哪个类的方法解决思路
- android 怎么判断一个程序是否联网
- android 大量数据按周分组,该如何解决
- android RadioButton如何设置默认选中
- ksoap2-android-这个包,连接webService怎么设置超时
- android 怎么重新设置锚点
- android UI界面设计解决方案
- android 图片对象获取的有关问题
- android 怎么调用淘宝支付宝接口
- Android 沿袭InputMethodService自定义输入法
- android 关于服务连接的疑义
- android 两个activity如何通信
- android 怎么实现对view的放大和缩小
- android 教程解决方法
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- android(java)中的java.net能不能和c#的system.net.sockets进行tcp通信,该如何解决
- android ListView 中的onItemClick Intent 没法跳转
- android(java) 中文乱码的有关问题
- c#c++,android,ios(iphone),php,java视屏课程 散分
- android Post文件到ASP.NET的有关问题,能收到参数收不到文件
- RIM 替 Android 开发者提供免费的 PlayBook!2月13日前
- android 动态设立控件高度
- Android test project 编译方法
- android -相机使用教程(1)解决方法