安卓熱修復之 大蒐集

2021-07-24 21:36:53 字數 1432 閱讀 9095

android dex分包方案 開源中國

原理分析

android 熱補丁動態修復框架小結 鴻洋_

android熱更新實現原理 大頭鬼bruce

熱修復庫

dodola

寒江不釣

bunnyblue

from:

android 熱補丁和熱修復

參考:各大熱補丁方案分析和比較

xposed

專案描述:xposed框架使用起來很確實很好用。可是就是有乙個巨大的缺點,就是需要root許可權。

xposed原始碼剖析——概述

dexposed

阿里巴巴(**團隊),基於root社群著名開源專案xposed改造剝離了root部分,實現的乙個android平台上功能強大的無侵入式執行時aop框架。(基於xposed改造剝離了root部分)

專案描述: 無需root也能hook?——depoxsed框架演示

支援從android2.3到4.4(除了3.0)的所有dalvid執行時arm架構的裝置,暫不支援5.0系統,可以針對5.0以上版本進行修復。

andfix

專案描述:阿里巴巴(支付寶團隊)開源的 android 應用熱修復工具,幫助 anroid 開發者修復應用的線上問題。

andfix 支援 android 2.3 - 6.0,arm 和 x86 架構,完美支援dalvik 執行時和 art 執行時。andfix 的分支是 .apatch 檔案。

使用方法:

androidpatchupdate

hotfix

該框架完成了作者所描述的基本功能。

專案部分**從 dalvik_patch 專案中修改而來,這個專案本來是用來實現multidex載入的,修改後可以用來實現熱補丁的效果。

classloader

而實際上findclass的過程中,如果出現了重複的類,參照下面的類載入的實現,是會使用第乙個找到的類的。

該熱補丁方案就是從這一點出發,只要把有問題的類修復後,放到乙個單獨的dex,通過反射插入到dexelements陣列的最前面,不就可以讓虛擬機器載入到打完補丁的class了嗎。

說到此處,似乎已經是乙個完整的方案了。

但在實踐中,會發現執行載入類的時候報preverified錯。

原來在dexprepare.cpp,將dex轉化成odex的過程中,會在dexverify.cpp進行校驗,驗證如果直接引用到的類和clazz是否在同乙個dex,如果是,則會打上class_ispreverified標誌。

注意:classloader方案支援2.3-6.0,會對啟動速度略微有影響,只能在下一次應用啟動時生效,在空間中已經有了較長時間的線上應用,如果可以接受在下次啟動才應用補丁,是很好的選擇。

基於proxy/delegate 實現bug熱修復

android拆分與載入dex的多種方案對比

from:

安卓外掛程式化與熱修復的選型

參考文章 安卓外掛程式化的過去現在和未來 張濤 安卓外掛程式化從入門到放棄 包建強 安卓熱補丁動態框架小結 鴻洋 專訪羅迪 高二android大牛的成長之路 droidplugin的原理 安卓從三年前第乙個外掛程式化實現,到現在已經有很多種實現方法,主要目的為了減小模組耦合,方便在專案體量變大之後實...

安卓air應用熱更新法

如題 眾所周知蘋果是明令禁止熱更新的。安卓系統下air應用的熱更新可以採用類似頁遊的方式進行。需要做的 1 客戶端檔案結構採用 殼 主檔案 其他資源檔案的模式 2 伺服器端維護乙個主檔案版本號和乙個資源檔案版本號表 3 應用啟動後殼先連線伺服器獲取伺服器端的主檔案版本號,將之與客戶端主檔案版本號比較...

安卓熱修篇 Shadow SDK實戰篇

同時也針對理論做了個實戰demo鞏固相關知識 安卓熱修篇 插樁式外掛程式化方案 demo篇 現在我們結合前面所學的知識,怎麼把熱修技術應用在sdk,投入生產 1 業務提需求,修改sdk,以支援業務功能 2 技術接到需求,進行開發 測試 發版本等 從上面的流程可以看出,當下模式有幾個短板 這裡是乙個虛...