熱修復(fù)筆記

1、熱修復(fù)

AndFix -> HotFix -> SoFix

AndFix

在native動態(tài)替換java層的方法,通過native層hook java層的代碼。
補(bǔ)丁包:dex
補(bǔ)丁包(Test)-類加載->Test.class-反射->Method-反射-?MethodReplace
獲取到補(bǔ)丁包中的Test類
ClassLoader#loadClass(指定加載的類)
DexFile

AndFix 為什么會被淘汰掉?
兼容問題,每個都要去兼容,類的屬性會有變化。

SopFix(收費的)
實際上是AndFix升級版本,

Robust:Instant Run 熱部署

自定義gradle插件 字節(jié)碼插裝
路由 martrix(卡頓監(jiān)控) 無侵入埋點 都用到插裝技術(shù)

Tinker

需要重新啟動才能生效
bsdiff 1.txt 2.txt patch
差分
bspatch 1.txt new2.txt patch
合成

抖音:libbspatch.so
微信:libbspatch_utils.so
增量更新

bsdiff:so 資源等其他文件的差分
dexdiff:dex文件
1、下載補(bǔ)丁包
2、得到安裝在手機(jī)中的有bug的apk中的dex PMS
3、合成 bsdiff 、bspatch(手機(jī)里面要做的)
4、使用合成的dex
類加載

反射 類加載 注解

ActivityThread#main Looper -> new H(Handler)

雙親委托機(jī)制
1、避免重復(fù)加載。
2、安全性考慮,防止核心API庫被隨意篡改。

注解處理方式三種
andFix RUNTIME 反射
robust CLASS 字節(jié)碼插樁
Tinker SOURCE 注解處理器

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容