1. 程式人生 > >Android sdk開發,程式碼的混淆

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位置提升了一定的難度,混淆後的程式碼都是字母,不好找錯誤位置。

所以下一節我們將講一講程式碼出錯時,怎麼還原始碼出錯的位置