Proguard 程式碼混淆
踏入 Android 開發,雖然早已注意到 proguard 這阻止反編譯的混淆程式碼的作法,可是一點也不擔心有人將自己的 apk 反編譯,因為真的沒什麼好看的,看了還浪費時間。 XD
不過倒是擔心被看到寫那麼爛的 Code,所以還是稍作些了解 proguard 的用法。
Step 1: 打開 app.gradle (專案目錄下 app 裡的 build.gradle)
預設
將 minifyEnabled false 改成 true,表示啟用 proguard
proguard-android.txt 是預設的混淆文件,路徑在 ${sdk.dir}/tools/proguard/proguard-android.txt
proguard-rules.pro 是在專案目錄下 app 裡,用來設定那些檔案不要混淆的一些設定。
詳細語法可以參考下方連結或是問問 google 大神,這邊就不占版面了。
proguard-rules.pro 裡面常用的 class 就不要混淆了,以免因混淆後找不到相應的 class,造成編譯異常。
以下是常用的
心得是 Build 時間變久了,安裝到手機感覺也變久了。
其餘請參考
Android 反編譯與防止被反編譯
Android代码混淆之ProGuard
不過倒是擔心被看到寫那麼爛的 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
留言
張貼留言