美文网首页
ProGuard速记

ProGuard速记

作者: 梦浩然 | 来源:发表于2019-01-16 23:11 被阅读15次
速记一张图

Java ProGuard

ProGuard就是为Java代码提供优化和保护的工具类程序。

下图是ProGuard官网对其作用的描述:

ProGuard执行过程
这里有三个重要的阶段:
  1. shrink: 代码瘦身阶段,检测删除无用的代码(类,成员变量,方法,属性);
  2. optimize:分析和优化方法的字节码;
  3. obfuscation: 用无意义的短名混淆代码(修改类名,成员变量名,方法名),因为难以被反编译。

Android中的ProGuard

Android的build系统中自动集成了ProGuard,我们只需要声明即可,需要注意:

  1. 在编译发布的release版本apk的时候会默认使用ProGuard功能,这意味着代码会被混淆,但也更加安全。
  2. 在编译debug版本的时候默认未开启此功能,因为我们需要更方便的调试。当然你也可以手动的进行配置。

同样Android中的ProGuard使我们能够获得一个更小的,被优化的,且被混淆过Java代码的apk。这对于App的安全性有很大的帮助,也使得难以被反编译(Android中使用更高级的DexGuard效果更好)。

Retrace工具

但是同时也引入了一个问题,如果发布的程序在运行期间出现了bug,如何定位问题呢,ProGuard提供了retrace工具来解决这一问题。

ProGuard在对代码进行三个阶段的流程之后,会输出四个文件
dump.txt,mappings.txt,seeds.txt,usage.txt
其中mappings.txt文件作用很大,因为它存储了混淆的字符串和源代码的对应关系。我们结合Retrace工具和此文件对异常栈进行反向翻译,从而找到对应的代码位置。 Debugging considerations for published applications.

相关文章

网友评论

      本文标题:ProGuard速记

      本文链接:https://www.haomeiwen.com/subject/kiwvdqtx.html