2012-04-17 67 views
21

我下載了proguard封裝在一個zip文件中並將其解壓縮到我的硬盤上。我沒有以任何方式安裝(因爲我不知道如何)。然後我將proguard.config=proguard.cfg添加到我的project.properties文件中。然後我做了一個「導出android應用程序」,完全期待eclipse抱怨說它不知道我的proguard安裝位置在哪裏,但沒有任何投訴。實際上,我的密鑰庫中出現了一個新的apk文件,一組文件(dump.txt等)出現在我的應用程序的proguard子目錄中。 mapping.txt看起來像一個很好的從我的長變量名到一個和兩個字母變量的映射列表。這應該都是強有力的證據,表明proguard有某種程度的工作 - 我唯一擔心的是,apk幾乎比以前更小。有什麼方法可以檢查apk包含了proguard的混淆嗎?如何判斷Proguard是否已完成其工作

回答

43

通常規模將指示的ProGuard是否已經工作,但您可以: -

  1. 使用Dex2Jar的APK轉換成jar文件
  2. 公開賽Jd-Gui產生的Jar文件,查看它包含的代碼
+2

這工作出色 - 非常感謝! – Pete 2013-05-10 07:50:06

+1

如何使用dex2jar? – Roel 2015-10-30 13:19:16

+1

http://stackoverflow.com/questions/5257830/how-to-use-dextojar – Kuffs 2015-10-30 13:47:52

1

@Kuffs方法的替代方法是比較你的新APK和舊的。同時打開它們(使用7zip或您喜歡的工具),並比較每個類中的classes.dex文件的大小。

幾個簡單的原因,你可能不會看到太大的尺寸節省:本是非模糊的classes.dex能夠

  • 被壓縮比混淆一個多得多。這在某種程度上總是如此。
  • 你沒有做發佈版本。 Proguard只能在發佈版本上運行,因爲調試混淆代碼是一場噩夢。
  • 您正在使用的Proguard設置對於您的項目來說效果並不好(至少就代碼大小而言)。我已經看到過proguard的代碼內聯設置增加了之前的jar文件的大小!
+0

未混淆的classes.dex能夠被壓縮得比被混淆的類更多 - >這是否意味着未混淆的classes.dex比混淆的class.dex小? – Rendy 2012-07-06 07:14:18

+2

@Rendy我會一直期望混淆的.dex的大小比未混淆的小。不過,我也希望壓縮後的尺寸差異比壓縮前的尺寸差異小得多。這是因爲混淆處理與壓縮過程完成一些相同的工作 - 即用更短的替換長字符串(類/方法/字段名稱)。 – vaughandroid 2012-07-06 08:26:47

+0

明白了!謝謝! – Rendy 2012-07-06 08:28:21

相關問題