28 ProGuard混淆介紹
Java源代碼(.java文件)通常被編譯為字節(jié)碼(.class文件)。通常情況下,編譯后的字節(jié)碼仍然包含了大量的調(diào)試信息:源文件名、行號(hào)、字段名、方法名、參數(shù)名和變量名等,這些信息使得APP很容易被反編譯和通過(guò)逆向工程獲得完整的程序代碼。
ProGuard是一個(gè)壓縮、優(yōu)化和混淆Java字節(jié)碼文件的免費(fèi)的工具:
可以刪除無(wú)用的類、字段、方法和屬性。
可以刪除沒用的注釋,最大限度地優(yōu)化字節(jié)碼文件。
還可以使用簡(jiǎn)短的無(wú)意義的名稱來(lái)重命名已經(jīng)存在的類、字段、方法和屬性。
常常用于Android開發(fā)用于混淆最終的項(xiàng)目,增加項(xiàng)目被反編譯的難度。
ProGuard對(duì)Java類中的代碼進(jìn)行以下四步的處理:
1壓縮(Shrink):用于檢測(cè)和刪除沒有使用的類,字段,方法和屬性。
2優(yōu)化(Optimize):對(duì)字節(jié)碼進(jìn)行優(yōu)化,并且移除無(wú)用指令。
3混淆(Obfuscate):使用a,b,c等無(wú)意義的名稱,對(duì)類,字段和方法進(jìn)行重命名。
4預(yù)檢(Preveirfy):是在Java平臺(tái)上對(duì)處理后的代碼進(jìn)行預(yù)檢。