熱更新系列目錄
熱更新你都知道哪些?
熱更新sophix的爬坑之路
阿里熱更新sophix的故事
很早以前就有寫sophix的部落格,但是使用一段時間後有了新的感受和心得,重新整理出該篇部落格。
sophix熱修復技術是在andfix技術基礎上吸收了tinker的優點後,出現的一種目前為止最強大的熱修復技術框架。
關於tinker的介紹可以閱讀本人的另一篇部落格《熱更新tinker類載入原理》,該篇部落格會詳細介紹tinker熱修復的原理。
核心原理
sophix熱更新的實質有兩種更新方案:底層方法替換
+類載入替換
。它的補丁包是一種.jar格式。
。 兩種方案各有利弊,sophix基本相容了兩者的優點,功能更加強大,穩定而便捷。
底層方法替換:為了解決andfix存在的底層替換相容性問題,sophix做了一些額外的努力。sophix通過動態測試artmethod的size(通過c層的mempy(dest、src、size)方法),進行全量拷貝。只要對當前虛擬機器中的artmethod進行統一拷貝,完成替換就能消除不同虛擬機器的導致的artmethod結構差異。.
優點
sophix具有底層替換的修改及時性和類載入方案的相容性,sophix吸收了百川hotfix和tinker的優點於一生,會自動判斷在打補丁時選用哪種方案。
sophix採用非侵入式接入與打包,接入成本低,圖形化補丁生成,」傻瓜式接入」。
阿里提過了補丁管理平台,無需開發者自己在伺服器中開發管理功能。
andfix採用的方法替換的熱更新方案,其熱更新流程。
andfix優點:
bug修復的即時性,對應用無侵入,幾乎無效能損耗
補丁包同樣採用差量技術,生成的patch體積小
不足:
不支援新增字段,以及修改方法,也不支援對資源的替換。
由於廠商的自定義rom,對少數機型暫不支援。
andfix的artmethod方法結構是根據android開源**寫死的,面對國內廠商的定製,經常會導致兩者artmethod方法結構不一致,這也是相容問題產生的根本原因。
相關鏈結:
熱更新你都知道哪些?
熱更新sophix的爬坑之路
阿里熱更新sophix的故事
art與dalvik、jvm之間的關係你懂了嗎?
system.exit(0) 與 android.os.process.killprocess(android.os.process.mypid())
部落格書寫不易,您的點讚收藏是我前進的動力,千萬別忘記點讚、 收藏 ^ _ ^ !
阿里Sophix熱修復體驗
相關文件 阿里熱修復 快速接入 androidsdk穩健接入 repositories 新增依賴 compile com.aliyun.ams alicloud android hotfix 3.2.1 2.所需許可權 在androidmanifest.xml檔案中新增 3.在androidmani...
Android 熱更新(阿里andfix)
主要有三種途徑 一 qq空間超級補丁技術 優先載入補丁內的class檔案 超級補丁技術基於dex分包方案,使用了多dex載入的原理,大致的過程就是 把bug方法修復以後,放到乙個單獨的dex裡,插入到dexelements陣列的最前面,讓虛擬機器去載入修復完後的方法。目前,沒有試用過,以後再說。二 ...
Erlang的熱更新
熱更步驟 1.建立熱更模組介面 2.替換編譯檔案.beam 3.執行熱更 主要實現方法是使用code 服務函式 code purge mod 清除模組的 清除並標記為舊版本 code load file mod 載入乙個模組 由於模組載入之後存在虛擬機器 可直接替換bin資料夾中的mod.beam檔...