本文更新于2017年11月21日。
注意事項(xiàng):
- 支持多渠道包僅選用某個(gè)渠道包的補(bǔ)丁,只需要保證變化相同即可,不過(guò)對(duì)于不同的apk包最好進(jìn)行全面的測(cè)試。
- 發(fā)布前請(qǐng)嚴(yán)格按照:掃碼內(nèi)測(cè) => 灰度發(fā)布 => 全量發(fā)布的流程進(jìn)行,以保證補(bǔ)丁包能夠正常在所有Android版本的機(jī)型上生效。

- 補(bǔ)丁狀態(tài):
- 等待中:補(bǔ)丁上傳成功,等待操作。
- 已灰度:補(bǔ)丁正在進(jìn)行灰度發(fā)布。
- 已發(fā)布:補(bǔ)丁已全量發(fā)布至所有設(shè)備。
- 已停止:補(bǔ)丁發(fā)布行為已暫停。
灰度發(fā)布
在應(yīng)用版本詳情頁(yè),點(diǎn)擊補(bǔ)丁版本列表里的【查看詳情】,進(jìn)入 補(bǔ)丁詳情頁(yè)。

在剛剛上傳完補(bǔ)丁后,補(bǔ)丁處于 等待中 的狀態(tài),勾選 灰度發(fā)布。
設(shè)置完設(shè)備數(shù),客戶端拉取補(bǔ)丁會(huì)消耗該設(shè)備數(shù),達(dá)到灰度設(shè)備數(shù)后,灰度補(bǔ)丁自動(dòng)置為停止?fàn)顟B(tài)。
設(shè)備數(shù):指設(shè)備請(qǐng)求更新該補(bǔ)丁的次數(shù),并不等于絕對(duì)設(shè)備數(shù)。
例如:1個(gè)設(shè)備請(qǐng)求了2次更新該補(bǔ)丁,則會(huì)消耗掉2的設(shè)備數(shù)。
-
確認(rèn)發(fā)布
點(diǎn)擊【確認(rèn)發(fā)布】,補(bǔ)丁狀態(tài)為 已灰度 ,進(jìn)入灰度發(fā)布狀態(tài)。
灰度發(fā)布狀態(tài)
這時(shí),當(dāng)用戶打開客戶端,就會(huì)拉取線上的補(bǔ)丁,修復(fù)程序。
還記得代碼中的queryAndLoadNewPatch()方法嗎,它的作用去看系列第二篇末尾的sample。
- 成功推送設(shè)備數(shù):每當(dāng)有設(shè)備發(fā)起一次更新請(qǐng)求,且補(bǔ)丁下載成功,則記為一次成功推送。
- 累計(jì)加載設(shè)備數(shù):每當(dāng)有設(shè)備成功加載該補(bǔ)丁,則記為一次累計(jì)加載。
注:
· 只會(huì)下載補(bǔ)丁版本號(hào)比當(dāng)前應(yīng)用存在的補(bǔ)丁版本號(hào)高的補(bǔ)丁, 比如當(dāng)前應(yīng)用已經(jīng)下載了補(bǔ)丁版本號(hào)為5的補(bǔ)丁, 那么只有后臺(tái)發(fā)布的補(bǔ)丁版本號(hào)>5才會(huì)重新下載.
· 在上傳新的補(bǔ)丁之后,要調(diào)試時(shí),如果以往的補(bǔ)丁有處于 已灰度 或已發(fā)布狀態(tài),要停止發(fā)布。 如果不停止,最新的補(bǔ)丁處于等待中,也就是未發(fā)布。那么當(dāng)你打開客戶端,它會(huì)拉取以往發(fā)布的補(bǔ)丁修復(fù)程序,這樣會(huì)影響你觀測(cè)調(diào)試結(jié)果。
· 后臺(tái)數(shù)據(jù)可能有少許延遲。
-
停止發(fā)布
點(diǎn)擊【停止發(fā)布】后,用戶選擇停止發(fā)布后,系統(tǒng)將停止該補(bǔ)丁的繼續(xù)發(fā)布,但已加載該補(bǔ)丁的設(shè)備會(huì)依然保持安裝該補(bǔ)丁的狀態(tài)。
界面變成:
停止發(fā)布 后 繼續(xù)發(fā)布
用戶點(diǎn)擊【繼續(xù)發(fā)布】后,將可以重新設(shè)置發(fā)布規(guī)則。
如果當(dāng)前版本在停止前處于灰度中,繼續(xù)發(fā)布可以:
· 重設(shè)灰度發(fā)布規(guī)則,新的規(guī)則中設(shè)備數(shù)必須大于之前的值。
· 改為全量發(fā)布。

所以,從灰度發(fā)布到全量發(fā)布的步驟是
· 先在補(bǔ)丁詳情頁(yè)勾選灰度發(fā)布,點(diǎn)擊確認(rèn)發(fā)布
· 推送完所有灰度設(shè)備后,點(diǎn)擊停止發(fā)布
· 再點(diǎn)擊繼續(xù)發(fā)布,彈出框,選擇全量發(fā)布
如果當(dāng)前版本在停止前處于全量發(fā)布,繼續(xù)發(fā)布可以:
繼續(xù)全量發(fā)布。
- 選擇回滾
用戶選擇回滾的目標(biāo)補(bǔ)丁后,所有該應(yīng)用版本下的設(shè)備都會(huì)回滾到目標(biāo)補(bǔ)丁的版本。
使用回滾功能必需要具備一下幾個(gè)條件:
· 當(dāng)前的版本已停止發(fā)布。
· 該版本之前存在至少一個(gè)全量發(fā)布的歷史版本。
全量發(fā)布
選擇全量發(fā)布后,將對(duì)所有安裝了當(dāng)前應(yīng)用版本(即之前創(chuàng)建應(yīng)用時(shí)所填寫的應(yīng)用版本號(hào))的設(shè)備推送該補(bǔ)丁。
與灰度發(fā)布類似,在全量發(fā)布會(huì)可以根據(jù)自身需要停止本次全量發(fā)布,停止發(fā)布后可以選擇:
· 繼續(xù)全量發(fā)布。
· 回滾版本(如果存在歷史版本)
添加過(guò)濾機(jī)型
全量發(fā)布后,我們可以添加過(guò)濾機(jī)型。
不全量發(fā)布是不可以添加機(jī)型過(guò)濾的

在App版本詳情頁(yè),點(diǎn)擊【添加過(guò)濾機(jī)型】

這里對(duì)過(guò)濾機(jī)型的彈出框參數(shù)進(jìn)行說(shuō)明:
- 系統(tǒng)版本
系統(tǒng)版本是指手機(jī)所使用的OS的版本。
在控制臺(tái)中,有相應(yīng)的系統(tǒng)版本列表可供選擇。如果列表中沒(méi)有需要自定義,請(qǐng)按如下標(biāo)準(zhǔn)獲取系統(tǒng)版本。
android.os.Build.VERSION.RELEASE
例如系統(tǒng)版本結(jié)果是:7.1
- 手機(jī)品牌
手機(jī)品牌是指手機(jī)貼牌商標(biāo)代表的品牌,需要區(qū)別手機(jī)制造商,手機(jī)制造商可能會(huì)生產(chǎn)多個(gè)品牌,一個(gè)品牌也可能是多個(gè)制造商生產(chǎn)。
在控制臺(tái)中,我們有相應(yīng)的品牌列表供選擇使用。如果需要自定義,請(qǐng)按如下標(biāo)準(zhǔn)獲取手機(jī)品牌,注意實(shí)際過(guò)濾時(shí)不區(qū)分大小寫。
android.os.Build.BRAND
例如手機(jī)品牌是:Xiaomi
- 手機(jī)機(jī)型
手機(jī)機(jī)型是指某個(gè)手機(jī)品牌下手機(jī)具體的型號(hào)。
目前由于手機(jī)機(jī)型龐雜,沒(méi)有提供選擇列表供選擇,后續(xù)會(huì)支持。填寫手機(jī)機(jī)型時(shí)請(qǐng)按如下標(biāo)準(zhǔn),不區(qū)分大小寫。
android.os.Build.MODEL
例如手機(jī)型號(hào)是:OPPO R11
【注意】如果想設(shè)置全部機(jī)型,請(qǐng)?jiān)谧远x機(jī)型里面,輸入 :all
到這里,sophix集成的全部?jī)?nèi)容就結(jié)束了。阿里熱修復(fù)官方的文檔有點(diǎn)瑣碎,我把重點(diǎn)和注意點(diǎn)都挑出來(lái)了。讀完這四篇,相信你會(huì)迅速集成sophix到自己的應(yīng)用里。
這再給出官方接入文檔地址,給還想看官方文檔的朋友。官方接入文檔

