混淆器通過(guò)刪除從未用過(guò)的代碼和使用晦澀名字重命名類、字段和方法,對(duì)代碼進(jìn)行壓縮,優(yōu)化和混淆。結(jié)果是一個(gè)比較小的.apk文件,該文件比較難進(jìn)行逆向project。因此,當(dāng)你的應(yīng)用程序?qū)Π踩舾校ㄒ蟾撸?,比如?dāng)你授權(quán)應(yīng)用程序的時(shí)候,混淆器是一種重要的保護(hù)手段。
proguard 基本語(yǔ)法
// 保留native方法的方法的方法名和包含native方法的類的類名不變 -keepclasseswithmembernames class { native; } // 保留繼承與View的類中的set*和get*方法 -keepclassmembers public class * extends android.view.View { void set*(***); *** get*(); } // 保留繼承與Activity的類中以View為參數(shù)的方法 -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } // 保留實(shí)現(xiàn)了Parcelable 接口的類的類名以及實(shí)現(xiàn)了 Parcelanle$Creator 的內(nèi)部類 -keep class * implemenets android.os.Parcelable { public static final android.os.Parcelanle$Creator *; } // 保留 R$*類中靜態(tài)字段的字段名 -keep class **.R$* { public static ; }