熱更新方案:使用騰訊的tinker,對於加固的apk(360和應用寶2個渠道)不支持 不加固的apk:使用熱更新方案,無需安裝,所有不加固的文件共用一個更新包 加固的apk:使用下載新的完整apk的方案,重新安裝,後臺管理補丁時先上傳加固的補丁apk再上傳不加固共用的補丁文件 增加補丁配置文件(每次 ...
熱更新方案:使用騰訊的tinker,對於加固的apk(360和應用寶2個渠道)不支持 不加固的apk:使用熱更新方案,無需安裝,所有不加固的文件共用一個更新包 加固的apk:使用下載新的完整apk的方案,重新安裝,後臺管理補丁時先上傳加固的補丁apk再上傳不加固共用的補丁文件 增加補丁配置文件(每次發佈補丁時,此配置文件一定要修改): package com.lolaage.tbulu; /** * description : 補丁相關配置 */ public class PatchConfiger { /** * 補丁版本號,每發佈一個補丁包,+1 */ public static final int PatchVersion = 0; /** * 加固的版本,不能用於熱更新,需要下載完整的apk,然後安裝升級修複 */ public static final HashSet<String> StrengthChannels = new HashSet<>(); static { StrengthChannels.add("36012"); StrengthChannels.add("yyb13"); } } 操作流程:(版本信息:VersionName-VersionCode-PatchVersion,例如5.1.5-520-0) 例如(至少保證下麵流程能走通): 1、我們應用市場發佈版本5.1.5-520-0 2、發現5.1.5-520-0有嚴重bug,更新補丁版本5.1.5-520-1(更新補丁,PatchVersion+1) 客戶端工作: 修複bug之後(並修改PatchConfiger.PatchVersion+1),生成一個5.1.5-520版本的補丁包patch1.zip, 以及加固的渠道(36012、yyb13)的完整補丁apk:5.1.5-520-1-36012.apk, 5.1.5-520-1-yyb13.apk 上傳補丁包和補丁apk 3、發現5.1.5-520-1還有問題,更新補丁版本5.1.5-520-2(更新補丁,PatchVersion+1) 客戶端工作: 修複bug之後(並修改PatchConfiger.PatchVersion+1),生成一個5.1.5-520版本的補丁包patch2.zip, 以及加固的渠道(36012、yyb13)的完整補丁apk:5.1.5-520-2-36012.apk, 5.1.5-520-2-yyb13.apk 上傳補丁包和補丁apk 4、增加很多需求,應用市場發佈新版本5.1.6-530-2 5、發現5.1.6-530-2有嚴重bug,更新補丁版本5.1.6-530-3(更新補丁,PatchVersion+1) 客戶端工作: 修複bug之後(並修改PatchConfiger.PatchVersion+1),生成一個5.1.6-530版本的補丁包patch3.zip, 以及加固的渠道(36012、yyb13)的完整補丁apk:5.1.6-530-3-36012.apk, 5.1.6-530-3-yyb13.apk 上傳補丁包和補丁apk 6、發現5.1.6-530-3還有問題,更新補丁版本5.1.6-530-4(更新補丁,PatchVersion+1) 客戶端工作: 修複bug之後(並修改PatchConfiger.PatchVersion+1),生成一個5.1.6-530版本的補丁包patch4.zip, 以及加固的渠道(36012、yyb13)的完整補丁apk:5.1.6-530-4-36012.apk, 5.1.6-530-4-yyb13.apk 上傳補丁包和補丁apk 服務端需要維護所有補丁文件的管理,至少包含信息: PatchVersion(補丁版本) VersionCode(版本號) Channel(渠道號) Description(補丁描述) PatchFileId(補丁文件下載id) FileSize(文件大小) PatchType(補丁類型,apk=0,patch=1) ReleaseTime(發佈時間) 可以通過VersionCode、Channel查詢出PatchVersion最大的記錄 補丁都是基於某一個版本號,例如:5.1.6-530-4補丁只能用於5.1.6-530版本,不能用於5.1.5-520版本! 修改介面: 1、新增checkPatchVersion介面(新增,獲取某個版本的補丁信息) 傳參:channel、version、patchVersion(本地當前補丁版本號) 返回:haveNewPatch(是否有新的補丁),如果有新的補丁版本,還需要返回patchVersion(最新的補丁版本號)、Description、PatchFileId、FileSize、PatchType、ReleaseTime 使用情況:1、checkApkVersion檢測到沒市場更新後調用;2、checkApkVersion檢測到有市場更新,但是用戶取消更新後,調用 測試流程(每次補丁升級都必須至少修改.java代碼、佈局文件、圖片資源文件): 1、發佈5.1.5-520-0、5.1.5-520-1,驗證: 5.1.5-520-0版本是否能升級到5.1.5-520-1 2、發佈5.1.5-520-2,驗證: 5.1.5-520-0版本是否能升級到5.1.5-520-2 5.1.5-520-1版本是否能升級到5.1.5-520-2 3、發佈5.1.6-530-2、5.1.6-530-3,驗證: 5.1.5-520-0版本是否能升級到5.1.6-530-3 5.1.5-520-1版本是否能升級到5.1.6-530-3