分类
大小:2.9M更新:2017-09-20
类别:编程辅助系统:WinAll,Win7,win8
Android开发的应用程序主要使用Java代码编写,但是Java代码很容易被反编译,为了很好的保护Java源代码,我们需要对编译好后的class文件进行混淆。Proguard是一个Java类文件压缩器、优化器、混淆器、预校验器。ProGuard是一个命令行工具,并提供了图形化用户界面,它也可以结合Ant或J2ME Wireless Toolkit使用。通过ProGuard得到的更精简的jar文件意味着只需要更小的存储空间混淆环节会用无意义的短变量去重命名类、变量、方法。这些步骤让代码更精简,更高效,也更难被逆向(破解)。
压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute)。
优化(Optimize):对字节码进行优化,移除无用的指令。
混淆(Obfuscate):使用a,b,c,d这样简短而无意义的名称,对类、字段和方法进行重命名。
预检(Preveirfy):在Java平台上对处理后的代码进行预检,确保加载的class文件是可执行的。
ProGuar由shrink、optimize、obfuscate和preveirfy四个步骤组成,每个步骤都是可选的,我们可以通过配置脚本来决定执行其中的哪几个步骤。
混淆就是移除没有用到的代码,然后对代码里面的类、变量、方法重命名为人可读性很差的简短名字。
那么有一个问题,ProGuard怎么知道这个代码没有被用到呢?
这里引入一个Entry Point(入口点)概念,Entry Point是在ProGuard过程中不会被处理的类或方法。在压缩的步骤中,ProGuard会从上述的Entry Point开始递归遍历,搜索哪些类和类的成员在使用,对于没有被使用的类和类的成员,就会在压缩段丢弃,在接下来的优化过程中,那些非Entry Point的类、方法都会被设置为private、static或final,不使用的参数会被移除,此外,有些方法会被标记为内联的,在混淆的步骤中,ProGuard会对非Entry Point的类和方法进行重命名。
那么这个入口点怎么来呢?就是从ProGuard的配置文件来,只要这个配置了,那么就不会被移除。
有个三步走的过程:
基本混淆
针对APP的量身定制
针对第三方jar包的解决方案
除了在压缩操作删除的无用类,字段和方法外,ProGuard也能在字节码级提供性能优化,内部方法有:
常量表达式求值
删除不必要的字段存取
删除不必要的方法调用
删除不必要的分支
删除不必要的比较和instanceof验证
删除未使用的代码
删除只写字段
删除未使用的方法参数
像push/pop简化一样的各种各样的peephole优化
在可能的情况下为类添加static和final修饰符
在可能的情况下为方法添加private, static和final修饰符
在可能的情况下使get/set方法成为内联的
当接口只有一个实现类的时候,就取代它
选择性的删除日志代码
实际的优化效果是依赖于你的代码和执行代码的虚拟机的。简单的虚拟机比有复杂JIT编译器的高级虚拟机更有效。无论如何,你的字节码会变得更小。
仍有一些明显需要优化的技术不被支持:
使非final的常量字段成为内联
像get/set方法一样使其他方法成为内联
将常量表达式移到循环之外
Optimizations that require escape analysis
DELTA IA-HMI DOPSelector编程辅助MV2.00.02官方版
查看易语言辅助通杀器编程辅助M2018绿色版
查看串口监听工具AccessPort编程辅助.45MV1.36 绿色中文免费版
查看8086汇编模拟工具(Emu8086)编程辅助Mv3.08 绿色汉化版
查看STM32库函数助手编程辅助.08Mv1.0 绿色免费版
查看Mysql for Visual Studio编程辅助Mv1.2.8 官方版
查看github离线安装包编程辅助MV1.0.6 官方最新版(github desktop)
查看uCode连接助手(uCodeLink)编程辅助M3.0.0 官方版
查看键代码查看器(Alternate KeyEvent)编程辅助.48Mv1.180官方版
查看JovisionClientSDK编程辅助Mv1.2.0.3客户端
查看macode g代码编辑器编程辅助Mv1.0.2.19官方版
查看多浏览器测试分析软件BrowseEmAll编程辅助Mv9.5.3 官方版
查看FxMarkDown编辑器java环境版编程辅助MV1.0绿色版
查看idea jindent特别版编程辅助Mv5.0.1最新版
查看TTHexEdit编程辅助.49Mv1.0 绿色免费版
查看凌哥E编程模块编程辅助Mv1.1.7.20180620 最新版
查看开心签名神器编程辅助M20191112 官方绿色版
查看360加固助手编程辅助MV3.2.2.1 官方最新版
查看Urlencode在线转换器编程辅助Mv1.0.0 官方版
查看开源二维码生成解析工具编程辅助MC#版带源码
查看POST_JS正则API调试助手编程辅助MV1.0绿色免费版
查看静态代码分析仪(PVS-Studio)编程辅助Mv7.03.32748
查看.NET Framework程序开发运行环境64位版编程辅助Mv4.6.2 最新版
查看geckodriver 64位编程辅助M官方版
查看点击查看更多