寫在最前面, 本篇參考文章:
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...