項目優化之熱更新


方案

使用騰訊的tinker,對於加固的apk360和應用寶2個渠道)不支持

不加固的apk:

1、支持熱更新的手機

使用熱更新方案自動下載加載補丁包,無需安裝,共用一個補丁包

2、不支持熱更新的手機

檢測到加載補丁失敗,提醒用戶下載對應渠道新的完整apk,重新安裝

加固的apk:

提醒用戶下載對應渠道新的完整apk,重新安裝

 

Web

為了保證不支持熱更新的手機,也能升級修復bug,並保證版本號不變,所以每次熱更新,后台都必選管理所有渠道的apk,也即每次熱更新都必須提供所有渠道的apk

 

每次更新后台補丁時,都需要提供的文件:

1、通用補丁文件

2、不加固的渠道,所有渠道的apk文件(為了保證不支持熱更新的手機,也能通過下載完整apk的方式升級)

3、加固的渠道,所有渠道的apk文件(加固的apk不支持熱更新)

 

重點

所有渠道的apk文件,都要有!!!

通訊

新增checkPatchVersion接口(新增,檢測並獲取最新版本補丁信息)

URL

http://helper.2bulu.com/product/checkPatchVersion

參數

String  channel  渠道(必須)

Integer   version  當前軟件版本號(必須)

Integer   patchVersion   當前補丁版本號(必須)

String    deviceName   設備型號

String    sdkLevel      系統版本

返回值

Integer  flag:1-是最新補丁,0-不是最新補丁

PatchInfo  info:最新版本補丁信息(當flag=0時有值,flag1時為空)

描述

通訊

根據版本號、補丁號、渠道名,確定是否有熱更新

1、如果是加固的渠道,只返回apk信息

2、如果是非加固渠道,返回補丁和apk信息

終端

if(info.patchFileId > 0){

    //有補丁文件返回,下載補丁文件,彈窗提醒用戶,已經下載完成補丁,需要重啟加載

    //加載拋異常就是不支持熱更新,然后彈窗提醒用戶下載apk安裝更新補丁

}else{

    //沒有補丁文件

    if(info.apkFileId > 0){

        //彈窗提醒用戶下載apk安裝更新補丁

    }

}

 

PatchInfo 補丁信息

patchVersion

Integer

補丁版本號

version

Integer

版本號

versionName

String

版本名稱(如V5.0.2

channel

String

渠道

description

String

補丁描述

releaseTime

Long

發布時間

 

 

 

patchFileId

Long

補丁文件下載id,如果沒有返回0

patchFileSize

Long

補丁文件大小(單位:Byte),如果沒有返回0

patchMd5Code

String

補丁文件MD5文件校驗碼

apkFileId

Long

apk補丁文件下載id,如果沒有返回0

apkFileSize

Long

apk補丁文件大小(單位:Byte),如果沒有返回0

apkMd5Code

String

apk補丁文件MD5文件校驗碼

 

 

 

終端

代碼邏輯

完整流程

手機重新運行

讀取緩存的PatchInfo ,檢測是否有對應當前版本的補丁文件(文件名稱需要包含版本號-補丁號,補丁文件的補丁號需要>程序讀取到的補丁號,不要已經通過apk的方式安裝補丁了還走加載補丁的流程)

1、有補丁文件,加載補丁文件(需要捕獲異常)

1.1 加載成功

進入“檢測市場版本流程

1.2 加載失敗

根據PatchInfo里面的apk信息,進入“下載apk安裝流程

 

2、沒有補丁文件

進入“檢測市場版本流程

 

檢測市場版本流程

此流程是程序啟動都必須走一遍的

先通過checkApkVersion,獲取是否有市場版本升級

1.1 如果有市場版本升級

    通過getUpgradeApkInfo獲取具體升級信息,提醒下載升級市場版本

    1.1.1 選擇下載更新,進入“下載apk安裝流程

    1.1.2 選擇忽略當前版本,進入“檢測補丁文件流程

1.2 如果沒有市場版本升級

    進入“檢測補丁文件流程

 

檢測補丁文件流程

通過checkPatchVersion獲取是否有熱更新,如果flag==0不是最新補丁),

if(info.patchFileId > 0){

    //有補丁文件返回,下載補丁文件,彈窗提醒用戶,補丁已經下載完成,修復了哪些問題,需要重啟加載

}else{

    //沒有補丁文件

    if(info.apkFileId > 0){

        //進入“下載apk安裝流程

    }

}

 

下載apk安裝流程

彈窗提醒用戶下載apk安裝更新補丁

......

 

 

 

測試

熱更新必要驗證流程:

 

至少要驗證的版本:

5.1.5-520-0(市場版本)

准備文件:

5.1.5-520-0-baidu7.apk(不加固)、5.1.5-520-0-36012.apk(加固)

 

5.1.5-520-1(熱更新版本)

准備文件:

通用補丁包、5.1.5-520-1-baidu7.apk(不加固)、5.1.5-520-1-36012.apk(加固)

 

5.1.5-520-2(熱更新版本)

准備文件:

通用補丁包、5.1.5-520-2-baidu7.apk(不加固)、5.1.5-520-2-36012.apk(加固)

 

5.1.6-530-2(市場版本)

准備文件:

5.1.6-530-2-baidu7.apk(不加固)、5.1.6-530-2-36012.apk(加固)

 

 

准備手機:

三星android-215.0)機型或其他不支持補丁的手機A、手機B、手機C、手機D

 

 

保證驗證的流程:

1、市場版本,升級下一個補丁包是否正常(例如5.1.5-520-0升級到5.1.5-520-1

2、某些不支持補丁的手機(手機A),加載補丁包失敗后,是否會提醒下載安裝apk(例如手機A5.1.5-520-0升級到5.1.5-520-1,加載插件失敗,應該提醒下載apk並安裝)

3、補丁版本,升級下一個補丁版本是否正常(例如5.1.5-520-1升級到5.1.5-520-2

4、某些不支持補丁的手機(手機A),apk升級到補丁版本之后,再升級下一個補丁版本是否正常(例如手機A通過apk升級到5.1.5-520-1后,是否能正常升級到5.1.5-520-2

5、熱更新版本,是否能正常升級到下一個市場版本(例如5.1.5-520-2,是否能正常升級到5.1.6-530-2

6、對於加固的版本,是否能如不支持補丁的手機一樣,提醒下載apk並安裝

 

 

手機保證修改:

1、關於戶外助手與幫助里面,顯示版本名-版本號-補丁版本

2、每次發布補丁,至少修改下代碼、布局(這個也不算太重要,要是不支持的也沒辦法了)

 

 

測試流程

1、發布5.1.5-520-0(市場版本)

測試:

手機A安裝baidu7渠道,驗證5.1.5-520-0版本特征及是否是baidu7渠道

手機B安裝baidu7渠道,驗證5.1.5-520-0版本特征及是否是baidu7渠道

手機C安裝baidu7渠道,驗證5.1.5-520-0版本特征及是否是baidu7渠道

手機D安裝36012渠道,驗證5.1.5-520-0版本特征及是否是36012渠道

 

2、發布5.1.5-520-1(熱更新版本)

測試:

手機A是否能檢測到有更新,並提醒下載補丁apk並安裝,並安裝流程升級到5.1.5-520-1,驗證5.1.5-520-1版本特征及是否是baidu7渠道;

手機B是否能自動加載補丁包然后完成升級,驗證5.1.5-520-1版本特征及是否是baidu7渠道;

手機C是否能自動加載補丁包然后完成升級,驗證5.1.5-520-1版本特征及是否是baidu7渠道(驗證完全手機設置里面殺死進程,不要運行升級到5.1.5-520-2,為了驗證5.1.5-520-1跳過5.1.5-520-2升級到5.1.6-530-2);

手機D是否能檢測到有更新,並提醒下載補丁apk並安裝,並安裝流程升級到5.1.5-520-1,驗證5.1.5-520-1版本特征及是否是36012渠道;

 

3、發布5.1.5-520-2(熱更新版本)

測試:

手機A是否能檢測到有更新,並提醒下載補丁apk並安裝,並安裝流程升級到5.1.5-520-2,驗證5.1.5-520-2版本特征及是否是baidu7渠道;

手機B是否能自動加載補丁包然后完成升級,驗證5.1.5-520-2版本特征及是否是baidu7渠道;

手機D是否能檢測到有更新,並提醒下載補丁apk並安裝,並安裝流程升級到5.1.5-520-2,驗證5.1.5-520-2版本特征及是否是36012渠道;

 

4、發布5.1.6-530-2(市場版本)

測試:

手機A是否能檢測到有更新,並提醒下載apk並安裝,並安裝流程升級到5.1.6-530-2,驗證5.1.6-530-2版本特征及是否是baidu7渠道;

手機B是否能檢測到有更新,並提醒下載apk並安裝,並安裝流程升級到5.1.6-530-2,驗證5.1.6-530-2版本特征及是否是baidu7渠道;

手機C是否能檢測到有更新,並提醒下載apk並安裝,並安裝流程升級到5.1.6-530-2,驗證5.1.6-530-2版本特征及是否是baidu7渠道;

手機D是否能檢測到有更新,並提醒下載apk並安裝,並安裝流程升級到5.1.6-530-2,驗證5.1.6-530-2版本特征及是否是36012渠道;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM