Android 增量更新

2021-09-25 02:52:33 字數 1253 閱讀 6271

現在國內的主流應用市場都支援應用的增量更新.

增量更新的原理: 就是將手機上已安裝apk 與伺服器最新的apk進行二進位制對比,得到差分包,使用者在更新程式時,只需要已安裝,合成新版apk.

apk 檔案差分,合成,可以通過開源二進位制比較工具bsdiff 來實現,又因為bsdiff 依賴bzip2, 所以還需要用到bzip. bsdiff 中,bsdiff.c 用於生成差分包, bspatch.c 用於合成檔案。

實現增量更新步驟:

1)在服務端,生成兩個版本apk的差分包

2)在手機客戶端,使用已安裝的apk 與這個差分包進行合成, 得到新版的apk

3) 校驗新合成的apk檔案是否完整,md5或sha1是否正確,如正確,則引導使用者安裝。

/**

* native方法 使用路徑為oldapkpath的apk與路徑為patchpath的補丁包,合成新的apk,並儲存於newapkpath

* * 返回:0,說明操作成功

* * @param oldapkpath 示例:/sdcard/old.apk

* @param newapkpath 示例:/sdcard/new.apk

* @param patchpath 示例:/sdcard/xx.patch

* @return

*/public static native int patch(string oldapkpath, string newapkpath,

string patchpath);

在mainactivity類中,使用patchutils類進行檔案合併。

1) 在mainactivity類中, 增加乙個靜態函式,初始化apkpatchlibrary

static
2)  進行pathch.zip 的解壓縮,以及合併

string downloadfile = download();

//2. unzip

utils.unzip(downloadfile, environment.getexternalstoragedirectory() + "/myunzip/");

//合併patch

int patchresult = patchutils.patch(oldapkpath, newfilepath, patchfilepath);

if(patchresult == 0)

kettle 增量更新

後面的乙個問號就是表示它需要接受乙個引數,你在這個table input 下面需要指定replace variable in script 選項和execute for each row 為選中狀態,這樣,kettle就會迴圈執行這個sql 執行的次數為前面引數步驟傳入的資料集的大小。kettle執...

hive增量更新

很多資料需要進行更新,如使用者資訊修改。hive0.11之後開始支援update和delete。但是hive頻繁更新與hive的設計原則相反,並且hive增量更新很緩慢。為實現增量更新,我們可以採用union all進行關聯或在乙個分割槽表中求最新的日期的資料。select b.id,b.conte...

React Native 熱更新以及增量更新

如果檔案被情況,預設載入assets下的原始的bundle 注意點資源的增量更新,需要修改內部的image載入的方式 資源的增量更新 需要看到的載入方法 這樣載入一張 內部的 imgs test.png 在 中render function function resolveassetsource s...