1.dynamic-load-apk
作者 百度任玉剛 插件化框架 途牛已上線使用
支持代碼 資源文件以插件形式加入到host。
缺陷:
- 不支持Service和BroadcastReceiver剥哑。
- 遷移成本闪唆,需要修改插件,插件app需要繼承自proxyActivity
優(yōu)點:
- 插件無需安裝host即可吊起
- 支持R訪問插件資源
- 插件支持Activity和FragmentActivity
- 基本無反射調用
- 插件安裝后任可獨立運行
2.Droid Plugin
作者 奇虎360張勇 360手機助手已上線使用
可實現(xiàn)幾近無規(guī)則吊起
缺陷:
- 無法使用自定義資源的通知
- 無法注冊一些特殊Intent Filter的組件(四大組件)
- 對Native支持不好
優(yōu)點:
- 插件無需任何修改砸喻,可獨立安裝運行,也可以做插件運行
- 四大組件無需在Host程序注冊
- 超強隔離性,不同插件運行在不同的進程中
- 資源完全隔離 5.實現(xiàn)進程管理吃挑,插件的空進程會被及時回收,占用內存低
- 插件的靜態(tài)廣播會被當作動態(tài)處理街立,如果插件沒有運行舶衬,靜態(tài)廣播永遠不會觸發(fā)
- API侵入性低
3.DynamicAPK
作者 攜程移動團隊 攜程旅行已上線使用
基于多dex/apk加載的解決方案
優(yōu)點:
- 遷移成本低(無需做任何activity/fragment/resource的proxy實現(xiàn))不使用代理來管理插件的activity/fragment的生命周期。修改后aapt會處理插件種的資源赎离,R.java中的資源引用和普通Android工程沒有區(qū)別逛犹,開發(fā)者可以保持原有的開發(fā)規(guī)范
- 更加有利于并發(fā)開發(fā)
- 提升編譯速度
- 提升啟動速度。dex解壓梁剔、dexopt虽画、加載耗時較長,使用按需加載啟動時間過長
- 適合HotFix(代碼和資源)
- 按需下載和加載任意功能模塊(包含代碼和資源)
4.Nuwa
修改ClassLoader加載順序并修改CLASS_ISPREVERIFIED達到熱修復效果
優(yōu)點:
- 自動化熱修復
- 熱修復所有優(yōu)點
5.AndFix
作者 阿里巴巴移動團隊 阿里旗下多款app已上線使用
原理 在Native層使用指針替換的方式替換bug方法荣病,已達到修復bug的目的
對該框架了解不多码撰,建議參考Coolspan Alibaba-AndFix Bug熱修復框架原理及源碼解析和 Air bolg的三篇AndFix解析進行深入了解。
這方面的框架還有很多个盆,列舉了幾個比較優(yōu)秀的供小伙伴們參考脖岛;由于作者水平有限,深入理解請根據(jù)源碼和作者文檔了解學習砾省。