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 注解處理器