您好,登錄后才能下訂單哦!
混淆器通過刪除從未用過的代碼和使用晦澀名字重命名類、字段和方法,對代碼進行壓縮,優化和混淆。結果是一個比較小的.apk文件,該文件比較難進行逆向project。因此,當你的應用程序對安全敏感(要求高),比如當你授權應用程序的時候,混淆器是一種重要的保護手段。
proguard 基本語法
// 保留native方法的方法的方法名和包含native方法的類的類名不變 -keepclasseswithmembernames class { native<methods>; } // 保留繼承與View的類中的set*和get*方法 -keepclassmembers public class * extends android.view.View { void set*(***); *** get*(); } // 保留繼承與Activity的類中以View為參數的方法 -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } // 保留實現了Parcelable 接口的類的類名以及實現了 Parcelanle$Creator 的內部類 -keep class * implemenets android.os.Parcelable { public static final android.os.Parcelanle$Creator *; } // 保留 R$*類中靜態字段的字段名 -keep class **.R$* { public static <fields>; }
也就是
類名不混淆 用keep
方法名不混淆 用keepclassmembers 或者 keepclasseswithmembernames(后者用于native不混淆)
不混淆的情況:
1 jni 調用java方法
2 四大組件
3 R文件
4 某些通過反射調用的類或方法
5 第三jar包(一般情況下不要混淆)
混淆去掉log
-assumenosideeffects class android.util.Log { public static boolean isLoggable(java.lang.String,int); public static int v(...); public static int i(...); public static int w(...); public static int d(...); public static int e(...); }
assumenosideeffects,proguard 配置文件里的參數。assume no side effects;假定無效;該屬性也就是標識無效代碼。我們就是通過這個參數來讓proguard刪除日志代碼。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。