Android sdk開發,程式碼的混淆
我們在開發安卓sdk的時候,通常開發完之後是匯出jar包提供其他接入的開發者使用。這就涉及一個安全問題,如果赤裸裸把jar包發出去有可能會被反編譯和修改。所以我們需要
程式碼混淆。所以我們需要proguard工具。我們可以在adt裡面找到他,也可以自己去下載一個自己想要的版本。
點選啟動工具後會啟動操作介面
點選右下角的load configuration 載入混淆的配置檔案,配置檔案是一個txt格式的檔案
混淆程式碼如下
-injars 'E:\Lee\SDK\Output\sdk1.jar' //需要混淆的jar包
-outjars 'E:\Lee\SDK\Output\sdk.jar' //混淆之後生成jar包的路徑
-libraryjars 'E:\Lee\adt-bundle-windows-x86_64-20140624\adt-bundle-windows-x86_64-20140624\sdk\platforms\android-20\android.jar' //adt路徑
-libraryjars 'D:\Program Files\Java\jre1.8.0_73\lib\rt.jar' //java路徑
-libraryjars 'D:\workspace\SDKPatch\libs\android-support-v4.jar' //專案的引用jar包
-libraryjars 'D:\workspace\SDKBase\libs\alipaySdk-20160111.jar'
-libraryjars 'D:\workspace\SDKBase\libs\android-support-v4.jar'
-libraryjars 'D:\workspace\SDKBase\libs\libammsdk.jar'
-libraryjars 'D:\workspace\SDKBase\libs\unity.jar'
-libraryjars 'D:\workspace\SDKBase\libs\UPPayAssistEx.jar'
-keepattributes *Annotation*
-dontwarn
-printmapping 'E:\Lee\SDK\Output\mapping.txt' //生成mapping對映表
-keep public class * extends android.app.Activity //禁止混淆的類
-keep class com.sdk.patch.manager.PageManager {//禁止混淆的類
public <fields>;
public <methods>;
}
-keep class com.sdk.patch.callback.** {//禁止混淆的目錄
<fields>;
<methods>;
}
-keep class * extends android.text.Annotation {
<fields>;
<methods>;
}
# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * {
native <methods>;
}
選擇好混淆配置檔案之後一直點選右下角的next , 直到按鈕變成process ,點選process就開始混淆了。
混淆過的程式碼雖然比較安全,但是也給我們定位bug位置提升了一定的難度,混淆後的程式碼都是字母,不好找錯誤位置。
所以下一節我們將講一講程式碼出錯時,怎麼還原始碼出錯的位置