国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android-App增量更新的使用姿勢

2019-12-12 06:30:14
字體:
來源:轉載
供稿:網友

簡述

增量更新,根據字面理解,就是下載增加的那部分來達到更新的目的,實際就是這個意思。

原理

用一個舊的Apk安裝與一個新的Apk安裝包使用 bsdiff工具 ,執行命令生成一個差異文件,此差異文件就是我們修改需要更新下載的那部分。

引入代碼及so文件

首先,根據你的系統的架構選擇不同的so文件放到你的工程中

接著,需要把加載so文件的Java類引入到你的工程中,引入時,需注意,不能修改這個類的包名。

到此,增量更新引入完成。

使用

下載bsdiff工具,然后執行命令:bsdiff,會顯示出命令提示

然后,執行正確的命令,結果如下:

命令:bsdiff app_1.1.apk app_1.2.apk patch.patch
參數:
app_1.1:已發布的舊版本
app_1.2:未發布的新版本
patch.patch:生成的差異文件

這里寫圖片描述

此補丁文件可以放到服務器供版本為1.1的用戶下載并增量更新升級。

客戶端增量更新接口:

public native static int bspatch(String oldApkPath,          String newApkPath, String patchPath);          //oldApkPath:當前Apk的存放目錄          //newApkPath:生成新的Apk要存放目錄          //patchPath:差異文件所在目錄

溫馨提示:記得添加網絡及文件讀寫權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  <uses-permission android:name="android.permission.INTERNET" />

獲取當前應用的Apk的存放目錄代碼:

context.getApplicationInfo().sourceDir;

實際開發流程把新的Apk安裝包上傳到服務器,讓服務器生成對應不同版本的差異文件。服務器需要提供一個接口,把你當前app的版本信息通過接口傳遞到服務器,服務器解析判斷,完后響應數據告訴客戶端是否需要下載差異文件,因為不同的版本下載的差異文件不同,此處需大家多多注意。如果接口返回的數據告訴客戶端有差異文件下載,客戶端使用子線程下載,然后執行增量更新的合并接口,然后生成新的Apk安裝包,執行安裝命令即完成增量更新的整個過程。

效果

先把app_1.1.apk版本的安裝包安裝到手機,這個包相當于你已經發布的線上的版本1.1。
這里寫圖片描述

然后把差異文件放到sdcard中(方便測試才直接放入sdcard)
這里寫圖片描述

然后點擊PATCH按鈕,合并完成后會跳轉到安裝界面
這里寫圖片描述

確定安裝,安裝完成,點擊進入應用
這里寫圖片描述

到此,Android-增量更新的使用和效果展示已完畢,有疑問可以直接留言。

檢查合成的Apk是否完整

目前,我想到2種方式來校驗使用差異文件合并好的新的Apk文件是否完成的方法:

獲取舊的Apk安裝包的簽名和已合并成新的Apk安裝包的簽名,對比簽名是否一致當你下載差異文件時,可以讓服務器給你返回新的Apk合并成功后文件的md5,當你合并成功后,通過校驗文件的md5值,達到校驗文件完整性。

不足之處假設,當你的app已經發布了1.1、2.1、3.1等等版本的時候,現在你有要更新版本到4.1,當然增量更新可以幫你做到,但是存在不足之處。

你需要把新的4.1的app安裝包上傳到服務器,服務器需和已發布的所有版本比較,產生布同那個版本的差異文件,當然如果有的版本不再維護可以不生成。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沙田区| 陇南市| 井陉县| 宁陕县| 邢台县| 巴楚县| 平顶山市| 宝丰县| 恭城| 微山县| 巩留县| 长阳| 五莲县| 社会| 平利县| 黄大仙区| 合作市| 娱乐| 乌鲁木齐县| 澜沧| 三河市| 甘洛县| 静海县| 新绛县| 嵩明县| 宁津县| 邳州市| 晋州市| 田林县| 墨江| 临颍县| 汝南县| 辛集市| 香港 | 九龙县| 二连浩特市| 土默特左旗| 博湖县| 海兴县| 茌平县| 泰州市|