任務遇到的難點linux
1.SDK項目多模塊,編譯後每一個模塊本身生成了1個jar包。可是需求是隻對外發佈一個jar包,須要進行合併多個jar包。android
2.生成的jar包中由於模塊引入了百度地圖定位致使jar包內有不須要的asset文件雜項git
3.多模塊的混淆問題bash
解決方案:工具
每一個模塊在編譯以後都會在XXX/build/intermediates/bundles/release/classes.jar 路徑下生成jar包ui
使用以下腳本可協助你合併多個jar包 (路徑問題本身解決哈)spa
#!/bin/sh #進入輸出目錄 cd output #清空輸出目錄 rm -rf * #建立輸出子目錄 mkdir temp mkdir release #定義sdk版本號 version="1.0.0" #定義模塊是否打包標識 is_include_wifidao=true is_include_location=true is_include_interactive=true is_include_wificonnect=true #省略其餘... #解壓全部release版本的jar包到temp目錄中 cd temp if $is_include_wifidao; then jar -xvf ../../wifidao/build/intermediates/bundles/release/classes.jar fi if $is_include_location; then jar -xvf ../../location/build/intermediates/bundles/release/classes.jar fi if $is_include_interactive; then jar -xvf ../../interactive/build/intermediates/bundles/release/classes.jar fi if $is_include_wificonnect; then jar -xvf ../../wificonnect/build/intermediates/bundles/release/classes.jar fi #壓縮全部release版本的class文件到一個獨立的jar包中 jar -cvfM SDK_${version}_release.jar . #拷貝文件 mv SDK_${version}_release.jar ../release #清空temp目錄 rm -rf * #刪除temp目錄 cd .. rm -rf temp
第二個問題解決方案,將第三方庫 單獨新建一個模塊來存放,而後在引入隔絕須要打包的模塊中直接引入第三方庫。 (由於發現AS中不會將其餘模塊的東西編譯進另一個模塊獲得的啓發)code
第三個問題,解決方案在合併爲一個jar包以後,利用Android SDK自帶的混淆工具將混淆配置導入,進行混淆。orm
須要注意:混淆時候記得導入依賴的第三方庫/V4包/ Android SDK/文檔
例如:
Android SDK /usr/local/coding/env/android_sdk_linux/platforms/android-23/android.jar
V4包 /home/lin/文檔/git_repo/zhonglianSDK/output/support-v4-23.2.0-sources.jar
volley
百度地圖定位
gson
點底下Load configuration就能夠導入 proguard-rules.pro文件 而後根據狀況修改下便可,還能夠保存配置~具體用法本身能夠再查哈