【Android 安全】DEX 加密 ( Proguard 简介 | Proguard 相关网址 | Proguard 混淆配置 )
文章目錄
- 一、Proguard 簡介
- 二、Proguard 相關網址
- 三、Proguard 混淆配置
一、Proguard 簡介
Android 開發中 Proguard 主要作用是對 Java 代碼進行如下操作 :
- 壓縮 Shrink : 檢測并 刪除 沒有使用的類 , 字段 , 方法 , 屬性 ;
- 優化 Optimize : 優化字節碼 , 移除無用指令 ;
- 混淆 Obfuscate : 使用 a , b , c 無意義名稱 , 對開發者定義的 類 , 字段 , 方法 進行 重命名 , 增加閱讀難度 ;
- 預檢 Preveirfy : Java 平臺對 處理后的代碼 進行預檢 ;
最常用的是混淆操作 ;
上述執行順序 : 壓縮 Shrink -> 優化 Optimize -> 混淆 Obfuscate -> 預檢 Preveirfy ;
二、Proguard 相關網址
Proguard 官網 : https://www.guardsquare.com/en/products/proguard
Proguard 官方指導手冊 : https://www.guardsquare.com/en/products/proguard/manual
Proguard 用法 : https://www.guardsquare.com/en/products/proguard/manual/usage
Proguard 混淆相關文檔 : https://www.guardsquare.com/en/products/proguard/manual/usage#keepoptions
三、Proguard 混淆配置
Proguard 混淆相關文檔 : https://www.guardsquare.com/en/products/proguard/manual/usage#keepoptions
Proguard 混淆配置 :
-keep 指定 類 , 類成員 , 不被混淆 ; ( 類成員指的是類的成員方法 和 成員屬性 )
-keepclassmembers 指定 類成員 不被混淆 , 類 和 類 方法 可以混淆 ;
-keepclasseswithmembers 指定 類 和 類成員 , 不被混淆 , 前提是 指定的類成員存在 ;
開啟 Proguard : 在 Module 下的 build.gradle 中進行如下配置 , 其中 release 標簽是進行發布版本的混淆設置 , debug 標簽是測試版本的混淆設置 ;
android {buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}debug {minifyEnabled true// 打印 proguard-android-optimize.txt 路徑print("proguardPath = ${getDefaultProguardFile('proguard-android-optimize.txt')}")proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}} }上述 proguard-rules.pro 是開發者自己手動配置的 ,
上述 proguard-android-optimize.txt 混淆配置文件是系統自動生成的 ,
該 proguard-android-optimize.txt 文件生成的依據是根據開發者的 proguard-rules.pro 混淆配置生成的 ;
編譯時打印變量 : 上述使用了 print(“proguardPath = ${getDefaultProguardFile(‘proguard-android-optimize.txt’)}”) 語句 , 打印了混淆腳本 proguard-android-optimize.txt 的路徑 , 其打印結果如下 , 該混淆腳本在 應用的 \build\intermediates\proguard-files\ 目錄下 ;
proguardPath = Y:\002_WorkSpace\001_AS\Handler\app\build\intermediates\proguard-files\proguard-android-optimize.txt-3.6.1生成混淆配置腳本 proguard-android-optimize.txt : 如果沒有上述腳本 , 即刪除了 build 目錄 , 進入 Gradle 界面 , 執行 app -> Tasks -> other -> extractProguardFiles 任務 , 即可重新生成混淆配置腳本 ;
總結
以上是生活随笔為你收集整理的【Android 安全】DEX 加密 ( Proguard 简介 | Proguard 相关网址 | Proguard 混淆配置 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 安全】DEX 加密 (
- 下一篇: 【Android 安全】DEX 加密 (