美文网首页
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