网友通过本文主要向大家介绍了项目优化方案,项目优化,项目优化设计方案,项目优化建议,工程项目优化等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
项目优化之热更新,项目优化
热更新方案:使用腾讯的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