Android 熱更新(1) 背景調查 分析

2021-09-02 15:01:09 字數 1290 閱讀 7139

寫在最前面, 本篇參考文章:

android主要熱更新技術原理

android實戰——tinker的整合和使用

tinker官方說明 github:tinker 接入指南

–tinker

qzone

andfix

robust

**qq空間

阿里美團

類替換✔✔×

×so替換✔×

××資源替換✔✔

××全平台支援✔✔

✔✔即時生效××

✔✔效能損耗

較小較大

較小較小

補丁包大小

較小較大

一般一般

開發透明✔✔

××複雜度較低

較低複雜

複雜gradle支援✔×

××rom體積

較大較小

較小較小

成功率較高

較高一般

最高1)andfix

核心原理:在native層使用指標替換的方式替換bug方法

andfix採用native hook的方式,這套方案直接使用dalvik_replacemethod替換class中方法的實現。

由於它並沒有整體替換class, 而field在class中的相對位址在class載入時已確定,所以andfix無法支援新增或者刪除filed的情況(通過替換init與clinit只可以修改field的數值)。

andfix可以支援的補丁場景相對有限,僅僅可以使用它來修復特定問題

2)qzone

核心原理:基於android dex分包方案,當多個dex包中有重複的類時(正常的dex沒有重複的類),系統會優先選擇排在前面的dex檔案的類

3)tinker

2、tinker缺點

tinker不支援修改androidmanifest.xml,tinker不支援新增四大元件(1.9.0支援新增非export的activity);

由於google play的開發者條款限制,不建議在gp渠道動態更新**;

在android n上,補丁對應用啟動時間有輕微的影響;

不支援部分三星android-21機型,載入補丁時會主動丟擲」tinkerruntimeexception:checkdexinstall failed」;

對於資源替換,不支援修改remoteview。例如transition動畫,notification icon以及桌面圖示。

---------------------

原文:

Android熱更新框架NuWa

一 配置project的build.gradle 就是配置專案總的build.gradle buildscript dependencies allprojects task clean type delete 在dependencies塊中加入下行 compile cn.jiajixin.nuwa...

Android 熱更新(阿里andfix)

主要有三種途徑 一 qq空間超級補丁技術 優先載入補丁內的class檔案 超級補丁技術基於dex分包方案,使用了多dex載入的原理,大致的過程就是 把bug方法修復以後,放到乙個單獨的dex裡,插入到dexelements陣列的最前面,讓虛擬機器去載入修復完後的方法。目前,沒有試用過,以後再說。二 ...

熱門前沿知識 Android熱更新

android熱更新 一 熱更新流程 1.線上檢查到嚴重的 crash 2.拉出 bugfix 分支並在分支上修復問題 3.jenkins構建和補丁生成 5.將bugfix 合到 master 上二 主流熱更新框架介紹 1.dexposed 2.andfix 3.nuwa 三 熱更新原理 1 and...