關於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
