1. 程式人生 > >關於tinker 熱修復的多渠道打包方式

關於tinker 熱修復的多渠道打包方式

上篇部落格介紹了tinker 熱修復的接入的問題[http://blog.csdn.net/qq1221jyj/article/details/73743612]
當接入成功後,專案又做了多渠道的東西。難道要一個渠道對應一個補丁包嗎?那哪哪哪 ~~簡直開玩笑。絕對不行。這麼做不符合一個程式設計師的身份啊。

tinker官方文件推薦用walle或者packer-ng-plugin來輔助打渠道包
因為walle 只支援v2 的簽名方式打包。專案要相容低版本,只能捨棄。最後只能用packer來做。最近packer最新版本2.0.0 也開始只支援v2 簽名
。還好有1.0.9可以用
接下來開始一步步講解。怎麼用packer來打渠道包。(用這種方式打包,不但可以熱修復只打一個補丁包以外,打渠道包速度還大幅度提升,打渠道包時間過長的兄弟,也要看過來啊)

準備工作:
1 使用packer 的環境 Mac 安裝2.x版本的python(windows兄弟就要自己在配置其他環境了)
2 專案中需要在gradle中配置多渠道資訊的邏輯, 都要放到java檔案中設定。比如友盟的 設定渠道資訊
MobclickAgent.startWithConfigure(newMobclickAgent.UMAnalyticsConfig(mContext, Config.UMENG_KEY, CHANNEL));
等之類的操作。

3 先到官網下載samlpe。找到資料夾下的tools資料夾。將裡面的python檔案放到一個方便操作的目錄下。我是放到桌面,新建資料夾fastmakeapp
方便操作。

4 將渠道資訊提前寫到txt檔案裡面。在這要注意下,渠道資訊

5 打出一個不到任何渠道資訊的基礎包 base.apk
接下來就可以愉快的使用packer給base.apk新增渠道資訊了。

一 開啟mac終端 將工作路徑切換到packer的打包工具目錄下,我是放到fastmakeapp資料夾下的。儘量把 base.apk 和打包工具PackerNg-1.0.9.py 放到同級目錄,方便下面的操作。

二 在終端輸入python PackerNg-1.0.9.py base.apk channel.txt okapp 命令。 切記 開頭一定要有python 否則無法識別該命令。當初就因為這個,卡住我好幾天。尷尬尷尬。 PackerNg-1.0.9.py 是打包工具的核心檔案。 base.apk是基礎包。 channel.txt 渠道資訊檔案。okapp 是存放打出來渠道包的資料夾。

經過上面的幾步操作。渠道包基本就可以打出來了。

後記遇到的問題:
1這裡寫圖片描述

上圖左右兩邊看上去是不是一毛一樣。但是打包時候用左邊的就會報錯,包名過長。用右邊就沒問題。為啥呢!!!!!原因(右邊是我手打進去的,打一個渠道資訊敲一下回車。左邊是我從excel直接複製進去的。檔案轉成16進位制就會發現問題了 回車是\r 換行是\n 打包工具只能識別 \r ) 這點要注意了。 要是有python基礎的同學或許更容易發現這個問題。在此要感謝後臺同事提醒啦

使用該工具目前只遇到了這兩個問題(字型加粗)。
老規矩,以後使用過程中遇到問題 ,部落格繼續更新。有問題的同學評論留言,我看到會及時幫大家解決問題