本文已同步發表到我的微信公眾號,掃一掃文章底部的二維碼或在微信搜索 “程序員驛站”即可關注,每天都會更新優質技術文章。
通過之前的介紹,我們已經完成了整個sdk開發,包括環境搭建——>sdk功能代碼編寫——>通過gradle實現sdk的打包。下面將介紹如何通過ProGuard工具實現我們sdk代碼的混淆。
1.下載ProGuard工具包,這里我選擇從ProGuard官網:http://proguard.sourceforge.NET 下載。
ps:有的道友喜歡使用sdk路徑下的proguard工具,路徑為:..\Sdk\tools\proguard,其實也是可以的,只是可能會出現“Can’t read [/Users/wanny/Library/Android/sdk/platforms/android-25/android.jar] (Can’t process class [java/text/CollationElementIterator.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7)))”錯誤,而且把系統的jdk版本安裝為1.7的,問題依然存在。所以個人建議去官網下載最新版Proguard工具包,就不會出現jdk版本的問題了。Proguard官網下載的工具包解壓目錄如下圖:
2.在bin目錄下雙擊proguardgui.bat或者在lib目錄下雙擊proguardgui.jar(mac系統下雙擊proguardgui.jar)打開后如圖:
3.點擊Next進入下一步(注:Load configuration 為導入已經配置好的混淆文件,因為我們這里是全新的,本地還存有這個文件,只需點擊Next進入下一步即可)。
3.為了方便操作,我把sdk中用到的所有依賴庫拷貝到lib目錄中,sdk也拷貝到“ProGuard混淆打包”目錄下,out目錄為我混淆后sdk存放目錄。
4.點擊Add input和Add output分別添加要混淆的jar包以及混淆后jar的輸出路徑和名字。點擊Library jars右邊的add添加項目中依賴的jar。添加好之后如下圖:
5.配置Shrinking(按個人需求配置即可)
6.配置Obfuscation:
7.配置Optimization:
8.配置Infomation:
9.配置Process。這里說明一下,我們可以把之前的配置以文件形式保存到本地,以便以后可以直接在第二步中提到的“Load configuration”導入配置即可使用。
10.點擊第九步中的Process!按鈕,然后即可開始混淆,直至出現"Processing completed successfully",代表混淆成功。
注:在以后我們需要增加sdk功能之后,只需要打開配置文件“mylibrary.pro”進行編輯配置該混淆的類和不該混淆的類(和 app 混淆編寫規則類似),編輯好了之后,保存,然后在首頁““Load configuration”導入配置,即可開始混淆了。
",下圖為以文件形式打開“mylibrary.pro”配置文件的截圖,以后混淆規則都可以直接在文檔中修改即可。
關注我的技術公眾號"程序員驛站",每天都有優質技術文章推送,微信掃一掃下方二維碼即可關注: