Proguard 程式碼混淆

踏入 Android 開發,雖然早已注意到 proguard 這阻止反編譯的混淆程式碼的作法,可是一點也不擔心有人將自己的 apk 反編譯,因為真的沒什麼好看的,看了還浪費時間。 XD

不過倒是擔心被看到寫那麼爛的 Code,所以還是稍作些了解 proguard 的用法。

Step 1: 打開 app.gradle  (專案目錄下 app 裡的 build.gradle)

預設
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'    }
}

將 minifyEnabled false 改成 true,表示啟用 proguard

proguard-android.txt 是預設的混淆文件,路徑在 ${sdk.dir}/tools/proguard/proguard-android.txt

proguard-rules.pro 是在專案目錄下 app 裡,用來設定那些檔案不要混淆的一些設定。

詳細語法可以參考下方連結或是問問 google 大神,這邊就不占版面了。


proguard-rules.pro 裡面常用的 class 就不要混淆了,以免因混淆後找不到相應的 class,造成編譯異常。

以下是常用的
-keep public class * extends Android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**


心得是 Build 時間變久了,安裝到手機感覺也變久了。

其餘請參考

Android 反編譯與防止被反編譯
Android代码混淆之ProGuard


留言

這個網誌中的熱門文章

[IIS] 自我簽署憑證來啟用SSL

相見恨晚的自動化測試開發工具 Sikuli

sqlplus 中文亂碼解決方案