服务器热修复,热修复探究,hotfix,patch
常見場景App打包發(fā)出后
1.忘了關(guān)掉Log輸出了
2.存在一個(gè)業(yè)務(wù)邏輯觸發(fā)必崩潰
3.某個(gè)本地圖標(biāo)忘了替換成新的
遇到這些問題,若是Web站點(diǎn),Mobile站點(diǎn)問題都不大,因?yàn)檫@些具有“持續(xù)發(fā)布”的特長,但是App的特點(diǎn)是“版本發(fā)布”,每個(gè)版本需要打包,上傳到應(yīng)用市場,經(jīng)過審核后,發(fā)布。這一些過程,3-7天不等。另外更新頻率過快,用戶體驗(yàn)也不好。另外若沒有實(shí)現(xiàn)增量更新,App的包又比較大,還有一點(diǎn),需要緊急修復(fù)的一般也沒有多少功能,所以用戶會(huì)比較反感。
那么如何有效解決這些問題呢?熱修復(fù)
熱修復(fù)幾個(gè)屬性如下
價(jià)值:線上問題第一時(shí)間能夠被修復(fù)
特點(diǎn):App無需發(fā)版,用戶無感知,體積小,靈活
本質(zhì):打補(bǔ)丁
可以看到兩個(gè)痛點(diǎn)都被解決了1.無需發(fā)版2.用戶無感知
看到后有點(diǎn)小激動(dòng)了,來看熱修復(fù)示意圖:
從示意圖可以看到,重點(diǎn)有三個(gè)問題
1.服務(wù)器端需要下發(fā)和管理補(bǔ)丁,并提供安全傳輸部署工作
2.客戶端App下載補(bǔ)丁,并處理
3.補(bǔ)丁的編寫
后面說如何針對這三個(gè)問題解決
熱修復(fù)目前iOS與Android平臺(tái)均支持
iOS主流推薦:
JPatch官方提供支持后臺(tái),但要嵌入SDK
若使用GitHub上開源實(shí)現(xiàn),需要自己處理及維護(hù)后臺(tái)
補(bǔ)丁主要技術(shù):使用JavaScript調(diào)用任何Objective-C的原生接口,替換任意Objective-C原生方法
2.阿里百川
http://baichuan.taobao.com/?spm=a3c0d.7629140.1998907816.1.G9itXC官方文檔
官方提供支持后臺(tái),同樣需要嵌入SDK
補(bǔ)丁主要技術(shù):1.JavaScript
3.lua腳本支持多目錄多文件
Android主流推薦
Native,代表有阿里的Dexposed、HotFix、AndFix與騰訊的內(nèi)部方案KKFix;
Java,代表有Qzone的超級補(bǔ)丁、大眾點(diǎn)評的nuwa、百度金融的rocooFix,餓了么的amigo以及美團(tuán)的robust,微信Tinker
1.支付寶AndFixhttps://github.com/alibaba/AndFixGithub
不提供支持后臺(tái),需要嵌入SDK
技術(shù)核心:底層采用native hook的方式,這套方案直接使用dalvik_replaceMethod替換class中方法的實(shí)現(xiàn)
特點(diǎn):無需重啟應(yīng)用,直接生效
缺點(diǎn):只支持原有方法上修改,不能增加方法,成員變量等等
2.QZone超級補(bǔ)丁
核心技術(shù):通過classLoader替換項(xiàng)目中的類
缺點(diǎn):補(bǔ)丁包很大,運(yùn)行性能受到影響,啟動(dòng)變慢
不提供支持后臺(tái)
3.微信Tinker
方案來源gradle編譯的instant run與buck編譯的exopackage
核心技術(shù):dex替換
優(yōu)點(diǎn):解決幾乎所有場景
需要考慮的缺點(diǎn):
1.7.6內(nèi)核之后Tinker不再支持加固的動(dòng)態(tài)更新? 。另外 小問題? 2. 補(bǔ)丁通過輪詢方式獲取,需要自己集成Push 達(dá)到下發(fā)補(bǔ)丁功能 :通知客戶端,客戶端調(diào)用Tinker主動(dòng)獲取補(bǔ)丁方法? 3. 無法達(dá)到,不重啟APP的情況下的熱修復(fù)
提供后臺(tái)? tinkerpatch.com
4.美團(tuán)Robust
原理:Robust是為每個(gè)函數(shù)都插入了一段邏輯,為每個(gè)class插入了ChangeQuickRedirect的字段
缺點(diǎn):復(fù)雜,增加包體積
不提供支持后臺(tái)
5阿里百川HotFix
官方文檔
http://baichuan.taobao.com/?spm=a3c0d.7629140.1998907816.1.G9itXC特點(diǎn):目前1.4最新版,預(yù)計(jì)17年2月之前發(fā)版2.0
1.4采用Java方式替換方法,解決業(yè)務(wù)場景較少。2.0會(huì)解決幾乎所有場景
有官方支持后臺(tái)
下面我們對比一下這些熱修復(fù)方案
琳瑯滿目,方案眾多
選擇建議:
優(yōu)先選擇提供補(bǔ)丁管理,維護(hù),下發(fā)的友好后臺(tái),會(huì)幫助開發(fā)者解決諸多小問題
優(yōu)先選擇該項(xiàng)目持續(xù)維護(hù),保證出現(xiàn)問題第一時(shí)間能夠解決
總結(jié)
以上是生活随笔為你收集整理的服务器热修复,热修复探究,hotfix,patch的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java integer 包_java之
- 下一篇: 虎贲计算机二级视频解析百度云,详解虎贲T