微信熱更新方案實踐

2021-07-24 10:49:13 字數 1474 閱讀 6938

簡單的講: 增量更新

tinker_imitator 位址

電腦:mac  

編譯工具:as & intellj

gradle 版本 com.android.tools.build:gradle:2.1.2

android 版本:6.0

mac 端命令:

brew install bsdiff
linux 端命令:

brew install bsdiff
windows:

使用 cygwin 安裝

然後將 bsdiff 安裝的位置寫入 local.properties

mac 端不寫.預設為/usr/local/bin/bsdiff

linux 和 windows 要寫.

注意 我只測試了 mac 的使用.

tinker-plugin 位址

安裝方式:這篇文章第 2 種方式.

這裡暫時不支援使用 instant run 的情況. 所以你要關閉 instant run

關閉方式:自行 google|bing

第一次編譯:

編譯完成會產生幾個檔案:

然後修改**:

打補丁包:

會有下列產物:

patchclasses.dex 是生成的 patch dex. 如果你連線手機的話,ide 外掛程式會幫你 push 到手機的/sdcard/hot/中

classes 和 class2 分別對應 apk 中的 classes.dex 和 classes2.dex.

log 是執行日誌. 你可以直接使用日誌中的命令執行,而不使用我提供的外掛程式

熱修復. 需要重啟

只是**級別的熱修復. 不支援資源的替換.修改**的時候不能新增資源 id.

如果改變了兩個 dex 裡面的東西的話,那麼占得記憶體就有點大了

簽名驗證;

gradle 配置熱修復

支援 instant run

包裹 dex.而不是直接傳遞 dex;

patch 版本控制;

更智慧型的 dex 管理;

更好的差分演算法;

資源更新;

iOS 熱更新方案

由於蘋果在2017年3月左右更新了開發者協議,禁止需要線上審核的應用進行熱更新,所以請大家慎用 企業版不需要提交審核當然是可以使用的 一 jspatch 熱更新時,從伺服器拉去js指令碼。理論上可以修改和新建所有的模組,但是不建議這樣做。建議 用來做緊急的小需求和 修復嚴重的線上bug。二 lua指...

蘋果熱更新方案簡介

可以做demo用,真實使用的時候會被蘋果禁止。從目前來看,ios仍然不允許程序間共享動態庫,即ios上的動態庫只能是私有的,因為我們仍然不能將動態庫檔案放置在除了自身沙盒以外的其它任何地方。比如 wax。熱更新時,從伺服器拉去lua指令碼。遊戲開發經常用到。跨平台,一套 ios android都可以...

React Native拆包及熱更新方案

本文將和大家 react native 的拆包及熱更新方案,官方並沒有很好的支援這一企業十分看中的熱更新能力,因此也催生了第三方的熱更新方案,如 codepush react native pushy 由於公司內部有不同的業務線,所以在採用第三方的熱更新方案靈活度不夠,在調研的初期,我們參考了攜程的...