項目優化之熱更新,項目優化
熱更新方案:使用騰訊的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