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