大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

混合APP开发-hybrid 升级流程

本文来自网易云社区

作者:王贝


目前大多数APP已经应用hybrid进混合开发,这不,我们的gacha APP这个版本已经开始使用hybrid来开发了,hybrid的优势这里就不多说了,这里主要讲一下hybrid中模块包的升级流程。

服务器要维护一份zip包的版本列表,

apppid表示每个模块的id,唯一

version表示对应模块的版本号,递增的

url表示对应模块包最新版本号的下载地址

MD5表示该包的md5值

ps:每个模块对应一个appid,模块表示app混合html5的子元素,一个模块整合了一个app的一类页面功能,每个模块的目录结构如下:

这里h10001里的资源文件表示一个模块的资源文件,在GACHA APP里这个代表跟帖详情页这个页面功能。

首先要把前端的代码打包成zip包,写了一个自动化打包脚本(待完善),如下:


#切换到项目目录
cderciyuan_h5
#更新最新代码
gitpull
cdsrc
var=$1
var=${var//,/}
forelementin$var
do
#切换到相应模块目录
cd$element
#执行前端webpack打包命令,在css目录和js目录里分别生成template.csstemplate.js
webpack-p
#向服务器获取当前模块的最新版本号
version=`curl"http://hostname/hybirdVersion?appid=$element"`
echo$version
#生成zip包名
module={element}_version
rm-rf$module
#将前端资源文件打包
mkdir$module
cp-rimage$module
mkdir${module}/js
mkdir${module}/css
mvcss/template.css${module}/css
mvjs/template.js${module}/js
cp-rimage$module
cptemplate.html$module
zip-r
module.zip
{module}
#获取zip包的md5值
md5=`md5sum{module}.zip|awk-F'''{print1}'`
echo$md5
#上传zip包至nos
curl-XPOST-F"zip=@
module.zip""http://hostname/api/v1/upload/webpack/zip?zipId=
{module}.zip"
#更新服务器包管理列表
curl"http://hostname/hybirdStore?appid=1&module={module}.zip&MD5={md5}&v={version}"
#包备份
cp${module}.zip/home/hzwangbei/package
#删除本地zip包相关文件
rm-f${module}.zip
rm-rf${module}
echo-e"\nstopsucceed\nDownloadUrl:http://acs.nos.netease.com/${module}.zip"
done

zip包生成上传后,app就要去更新了,更新协议如下:


app 首先将本地维护的最新的模块及版本列表上传给服务器,服务器一一对比服务器的zip包版本号,检测到需要更新的zip包,reducer后返回给APP。

app拿到需要更新的zip包模块列表后,下载对应zip包,校验zip包的md5值,校验通过后,解压覆盖掉本地旧的模块,同时更新本地维护的模块版本列表。

大概流程如下:



网易云免费体验馆,0成本体验20+款云产品!

更多网易研发、产品、运营经验分享请访问网易云社区




相关文章:
【推荐】分布式存储系统可靠性系列一:如何估算
【推荐】一个小白的测试环境docker化之路