現在的APP安裝包體積越來越大,幾百兆甚至上G的,當APP更新時不再是消耗大量的流量下載一個完整安裝包,而是消耗相對很少的流量下載一個增量包(差分包),採用谷歌Smart App Updates更新機制,就能實現APP的更新了。
使用者手機上已經安裝著某個APP,然後只需下載一個增量包,手機上的APP和增量包合併生成完整的新APP,並引導使用者安裝,這個過程就是增量更新。
很多APP都採用了谷歌Smart App Updates更新機制,例如 :微信,支付寶,Play商店,豌豆莢等等。谷歌官方稱採用Smart App Updates更新機制,可以使使用者下載的apk是完整apk的三分之一,也就是說可以幫使用者節省三分之二的下載流量。
據上圖所示,更新一個APP,傳統方式下載apk需要30M流量,而採用增量更新機制,只需下載10M的patch檔案(增量包)就可以了。
1.下載bsdiff_win_exe.zip並解壓到本地。
2.打一箇舊版本安裝包(例如:v6.3.8.apk),再打一個新版本的安裝包(例如:v6.3.9.apk),並一同放在剛才解壓的目錄下。
3.開啟Windows命令列工具,進入到解壓目錄,輸入 bsdiff.exe v6.3.8.apk v6.3.9.apk.apk v6patch.patch,然後回車可以看到下圖:
bsdiff.exe 是用來生成增量包的,還有一個bspacth.exe是用來生成新的安裝包的,v6patch.patch檔案就是我們剛剛生成的增量包。
現在我們有了patch檔案,和舊的安裝包,就可以生成新的安裝包了,下面介紹兩種方式生成新的安裝包。
方式一:
用工具生成的方法。開啟Windows命令列工具,進入到解壓目錄,輸入 bspacth.exe v6.3.8.apk new.apk v6patch.patch ,然後回車可以看到下圖:
這個new.apk就是我們生成的新的安裝包了。
方式二:
用行動端程式碼生成,也就是Android程式碼實現增量更新。增量檔案伺服器端生成好後,當APP執行啟動時,我們開始檢查版本更新,如果有更新就開個子執行緒去下載增量檔案,下載完成再與當前執行的APP進行合併生成新的APP,並安裝.
1.在project的build.gradle新增如下程式碼(如下圖)
3.新增許可權
4.整合程式碼(如下圖)
以上就是android實現增量更新的程式碼,通過程式碼的方式就能像方式一那樣生成新的APP安裝包了。
最後記得將增量包上傳至伺服器,然後供行動端下載此包。就可以測試增量更新的功能了!
今天的分享結束了,再見~