1、經過多重的類載入器dexclassloader的分析後,從當中獲取element陣列對應的類之後在載入,然後採用陣列遍歷,遍歷出乙個個的dex檔案。
2、執行for迴圈,對dex檔案處理,獲取class檔案。
3、我們將打包修復好的補丁dex檔案放入element陣列的第乙個元素中,這樣就能保證獲取到的class是最新修復好的class了。
(而有bug的class也存在的,不過放到了element陣列的最後乙個元素中了,沒機會被拿到)
我其實很想對那些面試官說一句:
Android熱修復原理
修復主要是兩種方案,一種是底層替換方案,一種是類載入方案.這兩種方案各有優劣 底層替換方案是在已經載入了的類中直接替換原有方法,實在原來類的基礎上修改.因此無法實現對原有類的方法和字段的增減,因為這樣將破壞原有的類結構 一旦補丁類中出現了方法的增減,會破壞這個類以及整個dex的方法數的變化.方法數的...
Android 熱修復原理
andfix的原理就是方法的替換,把有bug的方法替換成補丁檔案中的方法。注 在native層使用指標替換的方式替換bug方法,已達到修復bug的目的。andfix採用native hook的方式,這套方案直接使用dalvik replacemethod替換class中方法的實現。由於它並沒有整體替...
Android熱修復原理(二)
阿里系底層熱修復方案特點 修復時,立即生效。但同時帶來各種rom相容問題,也不能做新增field的修復。如sophix andfix阿里系的修復方案 底層替換所操作的指標,實際上是artmethod,在類被載入,類中的每個方法都會有對應的artmethod,它記錄了方法包括所屬類和記憶體位址資訊,a...