本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家發布
轉載請請注明出處:http://www.lxweimin.com/p/8ea4d653a53e
前言
上個月,阿里發布了旗下第三代的熱修復:Sophix,在你閱讀這篇文章之前,可以先看看這篇文章,相信你看完了會更加的有興趣,阿里推出業界首個非侵入式熱修復方案Sophix,顛覆移動端傳統更新流程!。
我也是在集成使用tinker的時候發現了Sophix,tinker的傻瓜式應用雖說簡單,但各種參數也麻煩,所以公司項目的客服端熱更新,我想試一下Sophix。
好了,閑話不多說,我們來折騰折騰!
集成
1 注冊帳號&申請內測資格
去阿里云注冊開發則帳號,注冊成功后進入控制臺,添加移動熱修復服務,如圖:
點擊熱修復服務后,會跳轉到內測資格申請,一般來說,也就個把小時就能通過申請,如圖:
具體的申請我就不做詳細的教程了,申請成功后“移動熱修復”就會如圖添加到控制臺里的導航欄里:
點擊進入就可以創建app進行開發了,此處提醒一句,創建app后你要回到“移動熱修復”的根界面,系統會自動根據你app同時創建andrioid和IOS兩個app,進入app后面的管理才能看到RSASECRET,如圖:
前期準備工作準備的差不多,就可以環境集成了
2 環境集成
如圖,在項目app下的bulid.gradle中添加maven倉庫地址和坐標版本依賴:
3 代碼配置
首先,在Manifest中配置參數:
然后,重構application初始化Sophix:
到此為止,所有的集成配置都完成了,可以開始測試了。
測試##
1 補丁生成
我們在主界面中寫個Textview,讓他顯示“我是首次運行的”,簽名打出第一包,命名first,安裝運行顯示:
然后我們對代碼進行改動,彈出一個Toast。
簽名打出第二個包,命名second,現在我們就需要用到阿里的補丁工具SophixPatchTool,
下載運行SophixPatchTool.exe,添加包:
點擊設置進行簽名配置,補丁輸出路徑:
高級設置是對比范圍,設置是否強制冷啟動,可忽略。
點擊Go開始打補丁,日志會詳細打印出補丁情況,也可導出日志。
補丁打完后,在輸出目錄里會有一個sophix-patch.jar,這個就是我們需要的補丁包。
上傳發布
先添加版本號,成功后在版本號后的“查看詳情中”上傳補丁:
上傳成功后,依然在“查看詳情”中發布。阿里建議我們在正式發布之前,使用測試工具hotfixdebug調試成功后再發布。
發布完成后,重新啟動App,運行如圖,
成功搞定!#
總結
Sophix和Tinker,專業對比我還不好評價,只說兩次不同集成給我的直觀感受,總結如下:
優點:
? 1· Sophix集成簡單,不需要配置繁瑣的各種參數。
? 2· Sophix支持即時生效(事實上我第一次運行first版本后,直接就彈出了toast,而此時后臺數據顯示設備加載成功數為1,設備推送成功數為0)。
? 3· Sophix支持run instant,而tinker不支持。編譯中不支持run instant,速度大大降低!
? 4· Sophix的補丁是基于阿里自身的SophixPatchTool打包生成,不是在AS中生成的,有種解耦的感覺,而且不需要備份太多的版本。
缺點:
? 處于內測階段,以后是否會免費未置可否(應該不會)
? PS:今天(2017-8-16),阿里自動電話服務,告知明天起,Sophix商業收費
相關鏈接
本文源碼地址:github源碼
阿里云平臺:阿里云
Sophix官方文檔:文檔
補丁工具:SophixPatchTool
測試工具:hotfixdebug
阿里熱修復技術全解析文檔:深入理解Android熱修復技術原理
Sophix技術交流群:584275290
碎碎念:
1 雖然說專業的事兒給專業的人去做,但是copy代碼的時候還是要仔細,我copy AppID到manifest中,結果前面多了個空格,導致值無效,調試了小半會兒才發現問題,諸兄亦是如此,如果諸兄喜歡,給個喜歡!
2 至于Sophix這個名字,阿里的解釋是來源于Sophic(明智的)+ FIX,一個更明智的熱修復方案。但是阿里很多工具或者鏈接都是用fix起名而不是用hix,所以,我更喜歡喊他Sopfix!