我下載了proguard封裝在一個zip文件中並將其解壓縮到我的硬盤上。我沒有以任何方式安裝(因爲我不知道如何)。然後我將proguard.config=proguard.cfg
添加到我的project.properties文件中。然後我做了一個「導出android應用程序」,完全期待eclipse抱怨說它不知道我的proguard安裝位置在哪裏,但沒有任何投訴。實際上,我的密鑰庫中出現了一個新的apk文件,一組文件(dump.txt等)出現在我的應用程序的proguard子目錄中。 mapping.txt看起來像一個很好的從我的長變量名到一個和兩個字母變量的映射列表。這應該都是強有力的證據,表明proguard有某種程度的工作 - 我唯一擔心的是,apk幾乎比以前更小。有什麼方法可以檢查apk包含了proguard的混淆嗎?如何判斷Proguard是否已完成其工作
回答
@Kuffs方法的替代方法是比較你的新APK和舊的。同時打開它們(使用7zip或您喜歡的工具),並比較每個類中的classes.dex文件的大小。
幾個簡單的原因,你可能不會看到太大的尺寸節省:本是非模糊的classes.dex能夠
- 被壓縮比混淆一個多得多。這在某種程度上總是如此。
- 你沒有做發佈版本。 Proguard只能在發佈版本上運行,因爲調試混淆代碼是一場噩夢。
- 您正在使用的Proguard設置對於您的項目來說效果並不好(至少就代碼大小而言)。我已經看到過proguard的代碼內聯設置增加了之前的jar文件的大小!
未混淆的classes.dex能夠被壓縮得比被混淆的類更多 - >這是否意味着未混淆的classes.dex比混淆的class.dex小? – Rendy 2012-07-06 07:14:18
@Rendy我會一直期望混淆的.dex的大小比未混淆的小。不過,我也希望壓縮後的尺寸差異比壓縮前的尺寸差異小得多。這是因爲混淆處理與壓縮過程完成一些相同的工作 - 即用更短的替換長字符串(類/方法/字段名稱)。 – vaughandroid 2012-07-06 08:26:47
明白了!謝謝! – Rendy 2012-07-06 08:28:21
- 1. 如何判斷用戶控件是否已完成加載vb6
- 2. 如何判斷「內聯」是否工作?
- 3. 我如何判斷ajax是否工作?
- 4. 如何判斷svn工作區是否已被「切換」?
- 5. 如何判斷細化是否在斷點處完成?
- 6. 如何判斷Image.FromStream完成
- 7. 如何判斷Xcode中的內部版本是否已成功完成?
- 8. Proguard Android如何判斷?
- 9. 如何判斷NSUserDefaults是否已保存?
- 10. 如何判斷HttpResponse是否已關閉?
- 11. 如何判斷tcplistener是否已關閉?
- 12. 如何判斷Streamwriter是否已關閉?
- 13. 如何判斷NSManagedObject是否已保存?
- 14. 如何判斷Spark工作是否成功?
- 15. 如何判斷彈出窗口是否已完全加載
- 16. 如何判斷JEditorPane/TextPane文檔或頁面是否已完成加載?
- 17. 如何判斷我的PHP S3類putObjectFile()過程是否已完成?
- 18. jquery ui自動完成 - 如何判斷該字段是否已被清除
- 19. 如何判斷文件是否已經在PHP中上傳完成?
- 20. 如何判斷spark-submit是否已成功運行?
- 21. 如何判斷程序是否已成功並行化?
- 22. 如何判斷用戶是否按下或完成?
- 23. 如何判斷dofile在lua中是否正確完成
- 24. 如何判斷方法或循環是否完成?
- 25. 如何判斷一組Web服務調用是否完成?
- 26. 如何判斷animateLayoutChanges何時完成?
- 27. iOS如何判斷webViewDidFinishLoad何時完成?
- 28. 如何判斷OpenShift上的cron作業是否正常工作?
- 29. 我應該如何判斷flash已經加載完成
- 30. Naudio,如何判斷播放完成
這工作出色 - 非常感謝! – Pete 2013-05-10 07:50:06
如何使用dex2jar? – Roel 2015-10-30 13:19:16
http://stackoverflow.com/questions/5257830/how-to-use-dextojar – Kuffs 2015-10-30 13:47:52