1. 程式人生 > >Android外掛化和熱修復的區別和聯絡

Android外掛化和熱修復的區別和聯絡

【原文地址 點選開啟連結】(文章最後一部分內容

外掛化框架:


此處輸入圖片的描述

外掛化發展歷史:部落格一部落格二

說到未來,也不得不提去年出來的ReactNative,RN比外掛化更輕量級,越來越多人選擇了RN,或許會代替外掛化,雖然還有很多缺點,比如說沒網的時候

熱修復與外掛化的對比

共同原理:
都使用ClassLoader來實現的載入的新的功能類,都可以使用PathClassLoader與DexClassLoader
不同的是:
  熱修復因為是為了修復Bug的,所以要將新的同名類替代同名的Bug類,要搶先載入新的類而不是Bug類,所以多做兩件事:在原先的app打包的時候,阻止相關類去打上CLASS_ISPREVERIFIED標誌,還有在熱修復時動態改變BaseDexClassLoader物件間接引用的dexElements,這樣才能搶先代替Bug類,完成系統不載入舊的Bug類
  而外掛化只是增肌新的功能類或者是資原始檔,所以不涉及搶先載入舊的類這樣的使命,就避過了阻止相關類去打上CLASS_ISPREVERIFIED標誌和還有在熱修復時動態改變BaseDexClassLoader物件間接引用的dexElements


  所以外掛化比熱修復簡單,熱修復是在外掛化的基礎上在進行替舊的Bug類