熱更新

Android熱更新

修改線上版本的bug完残,用技術(shù)去實(shí)現(xiàn)不更新整個(gè)apk的條件下,修改掉bug横漏。

在開發(fā)過程中谨设,沒有一個(gè)app發(fā)布到市場(chǎng)之后,在用戶的使用過程中百分百會(huì)發(fā)生崩潰缎浇,一般情況下不是B線的crash扎拣,只要控制app在crash一定的比例,常用的比例在千分之一以下就可以。但是在某些情況下二蓝,由于測(cè)試的不充分尊蚁,比如開發(fā)人員開發(fā)的不嚴(yán)謹(jǐn)導(dǎo)致app經(jīng)常性的崩潰,而這個(gè)崩潰的比率超過正常的話侣夷,比如說超過了千分之一横朋,甚至超過了千分之二分貝以后,在這些情況下我們只能緊急的修復(fù)出現(xiàn)線上的問題百拓,然后我們通過常用的方式琴锭,代碼修改然后進(jìn)行重新打包然后發(fā)布等等。同時(shí)在發(fā)布完要通過推送衙传,消息的形式告訴用戶要更新了要自動(dòng)安裝决帖。安卓熱修復(fù)技術(shù)出現(xiàn),讓我們能夠更快速的解決一些問題蓖捶,而不需要重新發(fā)布版本可以修復(fù)線上的BUG地回。

一,熱更新流程

1.線上檢測(cè)到嚴(yán)重的crash俊鱼。因?yàn)槊恳粋€(gè)app都會(huì)集成一些線上的crash的sdk刻像,這樣會(huì)通過線上的sdk檢查到app的運(yùn)作狀況,這其實(shí)就是一個(gè)熱修復(fù)的基礎(chǔ)并闲。在線上的crash統(tǒng)計(jì)中细睡,可以得知app是否存在需要快速在線熱修復(fù)的問題,如果存在帝火,會(huì)根據(jù)crash日志定位到代碼所存在的問題所在溜徙。

2.拉出bugfix分支并在分支上修復(fù)問題。開發(fā)都是在debug分支上開發(fā)的犀填,如果有單獨(dú)的業(yè)務(wù)邏輯蠢壹,可以從debug開啟另外一個(gè)分支來進(jìn)行開發(fā),在bugfix分支上修復(fù)一些線上的問題

3.Jenkins構(gòu)建和補(bǔ)丁生成

4.app通過推送或主動(dòng)拉取布丁文件九巡,并在合適時(shí)機(jī)推送給主用戶图贸。

5.將bugfix代碼合到master上,這樣會(huì)保證以后的代碼不會(huì)出項(xiàng)這樣的問題比庄。

二求妹,主流熱更新框架介紹

1.Dexposed Dexposed是一個(gè)阿里巴巴無(wú)線事業(yè)部推出的Android平臺(tái)的無(wú)侵入運(yùn)行期AOP開源框架乏盐,基于 Xposed 開源項(xiàng)目佳窑,旨在解決像性能監(jiān)控、在線熱補(bǔ)丁等移動(dòng)開發(fā)常見難題父能。

2.AndFix AndFix神凑,全稱是Android hot-fix。是阿里開源的一個(gè)熱補(bǔ)丁框架,允許APP在不重新發(fā)布版本的情況下修復(fù)線上的bug溉委。支持Android 2.3 到 6.0鹃唯,并且支持arm 與 X86系統(tǒng)架構(gòu)的設(shè)備。完美支持Dalvik與ART的Runtime瓣喊,補(bǔ)丁文件是以 .apatch 結(jié)尾的文件坡慌。

3.Nuwa 基于類加載器ClassLoder加載desk,它的基礎(chǔ)是desk分包的基礎(chǔ)上藻三。

三洪橘,熱更新原理

1.Android類加載機(jī)制

*1 PathClassLoader 用于加載系統(tǒng)的類和應(yīng)用類

*2 DexClassLoader 用于加載dex文件,jar文件jar包等等棵帽。用DexClassLoader加載文件的

2.熱修復(fù)機(jī)制

*1 dexElements數(shù)組熄求。

*2 ClassLoader會(huì)遍歷這個(gè)數(shù)組。

然后根據(jù)crash定位逗概,導(dǎo)到對(duì)應(yīng)的類文件弟晚,然后把這個(gè)類文件打包成dex文件,修改這個(gè)類以后把這個(gè)dex文件打包放到dexElements數(shù)組最前面逾苫,然后再通過類加載器去加載的時(shí)候卿城,他就不會(huì)加載到處于后面的dex文件,這樣就完成了整個(gè)熱修復(fù)的過程铅搓。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藻雪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子狸吞,更是在濱河造成了極大的恐慌勉耀,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹋偏,死亡現(xiàn)場(chǎng)離奇詭異便斥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)威始,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門枢纠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黎棠,你說我怎么就攤上這事晋渺。” “怎么了脓斩?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵木西,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我随静,道長(zhǎng)八千,這世上最難降的妖魔是什么吗讶? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮恋捆,結(jié)果婚禮上照皆,老公的妹妹穿的比我還像新娘。我一直安慰自己沸停,他們只是感情好膜毁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著愤钾,像睡著了一般爽茴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绰垂,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天室奏,我揣著相機(jī)與錄音,去河邊找鬼劲装。 笑死胧沫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的占业。 我是一名探鬼主播绒怨,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼谦疾!你這毒婦竟也來了南蹂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤念恍,失蹤者是張志新(化名)和其女友劉穎六剥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體峰伙,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疗疟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞳氓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片策彤。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖匣摘,靈堂內(nèi)的尸體忽然破棺而出店诗,到底是詐尸還是另有隱情,我是刑警寧澤音榜,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布庞瘸,位于F島的核電站,受9級(jí)特大地震影響囊咏,放射性物質(zhì)發(fā)生泄漏恕洲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一梅割、第九天 我趴在偏房一處隱蔽的房頂上張望霜第。 院中可真熱鬧,春花似錦户辞、人聲如沸泌类。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)刃榨。三九已至,卻和暖如春双仍,著一層夾襖步出監(jiān)牢的瞬間枢希,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工朱沃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苞轿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓逗物,卻偏偏與公主長(zhǎng)得像搬卒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翎卓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自http://dev.qq.com/topic/57a31921ac3a1fb613dd40f3 Andro...
    goolong閱讀 6,019評(píng)論 0 8
  • 一契邀、熱更新流程 1.線上檢測(cè)到嚴(yán)重的crash。 2.拉出bugfix分支并在分支上修復(fù)問題失暴。 3.jenkins...
    lkmc2閱讀 868評(píng)論 0 0
  • 搞懂a(chǎn)ndroid如何加載程序 android使用的是Dalvik(4.4之前包括4.4)和ART虛擬機(jī)(4.4之...
    sarlmoclen閱讀 4,479評(píng)論 0 5
  • 為什么要做熱更新 當(dāng)一個(gè)App發(fā)布之后坯门,突然發(fā)現(xiàn)了一個(gè)嚴(yán)重bug需要進(jìn)行緊急修復(fù),這時(shí)候公司各方就會(huì)忙得焦頭爛額:...
    君臨天下夜未央閱讀 23,702評(píng)論 2 9
  • 前言 做程序開發(fā)逗扒,基礎(chǔ)很重要田盈。同樣是擰螺絲人家擰出來的可以經(jīng)久不壞,你擰出來的遇到點(diǎn)風(fēng)浪就開始顫抖缴阎,可見基本功的重...
    波瀾步驚閱讀 1,840評(píng)論 0 16