標籤:
關於android Studio打包混淆以及上傳mapping檔案
轉載請註明出處:
http://blog.csdn.net/u014163726?viewmode=contents
本文出自Wrh的部落格
打包
android studio的打包很簡單
然後如果已經有keystore的一路next下去,如果沒有的可能需要先建立keystore,最後我們就會得到一個apk檔案
混淆
現在網上關於反編譯的部落格很多了,我在此就不多做介紹了,放上個傳送門傳送門
那麼我們已經知道了反編譯是如此的簡單,我們總不希望自己辛苦寫的代碼被如此輕易的反編譯走,而且這樣有可能對公司的伺服器留下被攻擊的隱患,那麼我們就可以使用混淆來保護我們所寫的代碼
Android studio混淆和Eclipse差不多是大同小異的。
| 名稱 |
作用 |
| minifyEnabled |
是否開啟混淆 |
| shrinkResources |
去除無用的resource檔案 |
| proguardFiles getDefaultProguardFile |
載入混淆設定檔 |
如果按照預設的混淆規則很有可能你的程式會報錯,因為混淆了一些方法所以程式運行期間無法找到該方法。所以我們應該自訂一些規則在proguard-rules.pro中
以下模板資訊來源於網上
指定代碼的壓縮層級
-optimizationpasses 5
包明不混合大小寫
-dontusemixedcaseclassnames
不去忽略非公用的庫類
-dontskipnonpubliclibraryclasses
最佳化 不最佳化輸入的類檔案
-dontoptimize
預校正
-dontpreverify
混淆時是否記錄日誌
-verbose
混淆時所採用的演算法
-optimizations !code/simplification/arithmetic,!field/,!class/merging/
保護註解
-keepattributes Annotation
保持哪些類不被混淆
-keep public class * extends android.app.Fragment
-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
如果有引用v4包可以添加下面這行
-keep public class * extends android.support.v4.app.Fragment
忽略警告
-ignorewarning
記錄產生的日誌資料,gradle build時在本項目根目錄輸出
apk 包內所有 class 的內部結構
-dump class_files.txt
未混淆的類和成員
-printseeds seeds.txt
列出從 apk 中刪除的代碼
-printusage unused.txt
混淆前後的映射
-printmapping mapping.txt
mapping檔案
mapping.txt
列出了原始的類,方法和欄位名與混淆後代碼間的映射。這個檔案很重要,當你從release版本中收到一個bug報告時,可以用它來翻譯被混淆的代碼。
mapping目錄在 \app\build\outputs\mapping\release
測試
OK,Bye
關於Android Studio打包混淆以及上傳mapping檔案