熱修復(fù)簡(jiǎn)介
熱修復(fù)(Hotpatch)用于在不發(fā)布新版本的情況下熱修復(fù)線上故障(Bug)。
使用場(chǎng)景
每一次熱修復(fù),都是一次 緊急發(fā)布。因此,mPaaS 限定了熱修復(fù)的使用范圍是:在來(lái)不及發(fā)布版本的情況下,需要立刻解決線上客戶端問(wèn)題。
根據(jù)最佳實(shí)踐,熱修復(fù)只用于修復(fù)嚴(yán)重的、影響面大的、具有高可復(fù)現(xiàn)性的問(wèn)題。包括但不僅限于以下情況:
高概率的閃退
嚴(yán)重的 UI 問(wèn)題
可能造成資損與用戶投訴的故障
客戶端某些功能不能使用
監(jiān)管審查導(dǎo)致的緊急修改
使用說(shuō)明
目前 iOS 熱修復(fù)功能僅支持專有云環(huán)境,公有云環(huán)境中無(wú)法使用 iOS 熱修復(fù)功能。
目前 Android 支持兩種熱修復(fù)方式,分別為 DexPatch 和 InstantRun。
使用熱修復(fù)涉及到調(diào)用 MDS 的更新發(fā)布接口,會(huì)產(chǎn)生相應(yīng)的接口調(diào)用費(fèi)用。有關(guān)接口調(diào)用的計(jì)費(fèi)說(shuō)明,參見(jiàn) 產(chǎn)品定價(jià) 中的實(shí)時(shí)發(fā)布計(jì)費(fèi)項(xiàng)說(shuō)明 。
DexPatch 和 InstantRun 對(duì)比
對(duì)比項(xiàng) | DexPatch | InstantRun |
包大小 | 無(wú)需插樁,沒(méi)有變化 | 需要插樁,體積變大 |
是否立即生效 | 否,需要重啟 | 特定條件下立即生效, 重啟必定生效 |
是否支持 so 文件修復(fù) | 不支持 | 支持 |
是否支持資源文件修復(fù) | 不支持 | 支持 |
額外依賴 | 無(wú) | 依賴 Gradle 插件插樁 |
兩種熱修復(fù)不能在同一個(gè)版本內(nèi)混合使用,可以跨版本更換方案。