如何判断Proguard是否已完成其工作

时间:2012-04-17 12:06:06

标签: java android eclipse

我下载了封装在zip文件中的proguard并将其解压缩到我的硬盘上。我没有以任何方式安装它(因为我不知道如何)。然后我将proguard.config=proguard.cfg添加到我的project.properties文件中。然后我做了一个“导出android应用程序”完全期望eclipse抱怨它不知道我的proguard安装在哪里,但没有抱怨。确实,我的密钥库中出现了一个新的apk文件,并且我的应用程序的proguard子目录中出现了一组文件(dump.txt等)。 mapping.txt看起来像是一个很好的从长变量名到一个和两个字母变量的映射列表。这应该都是proguard以某种方式工作的有力证据 - 我唯一关心的是apk几乎没有以前那么小。有没有办法检查apk是否包含proguard的混淆?

2 个答案:

答案 0 :(得分:45)

通常大小将指示ProGuard是否有效但您可以: -

  1. 使用Dex2Jar将apk转换为jar文件
  2. 使用Jd-Gui打开生成的Jar文件,以查看其中包含的代码

答案 1 :(得分:1)

@Kuffs方法的替代方法是将您的新APK与旧版APK进行比较。打开它们(使用7zip或您首选的工具)并比较每个文件中classes.dex文件的大小。

一些直截了当的理由,你可能看不到大小的节省:

  • 未混淆的classes.dex能够比混淆的类压缩得更多。这在某种程度上总是如此。
  • 您没有进行发布版本。 Proguard只能在发布版本上运行,因为调试混淆代码是一场噩梦。
  • 您正在使用的Proguard设置对您的项目来说效果不佳(至少在代码大小方面)。我实际上已经看到proguard的代码内联设置增加了jar文件的大小!