本文来自网易云社区
作者:王贝
目前大多数APP已经应用hybrid进混合开发,这不,我们的gacha APP这个版本已经开始使用hybrid来开发了,hybrid的优势这里就不多说了,这里主要讲一下hybrid中模块包的升级流程。
服务器要维护一份zip包的版本列表,
apppid表示每个模块的id,唯一
version表示对应模块的版本号,递增的
url表示对应模块包最新版本号的下载地址
MD5表示该包的md5值
ps:每个模块对应一个appid,模块表示app混合html5的子元素,一个模块整合了一个app的一类页面功能,每个模块的目录结构如下:
这里h10001里的资源文件表示一个模块的资源文件,在GACHA APP里这个代表跟帖详情页这个页面功能。
首先要把前端的代码打包成zip包,写了一个自动化打包脚本(待完善),如下:
#切换到项目目录 cd erciyuan_h5 #更新最新代码 git pull cd src var=$1 var=${var//,/ } for element in $var do #切换到相应模块目录 cd $element #执行前端webpack打包命令,在css目录和js目录里分别生成template.css template.js webpack -p #向服务器获取当前模块的最新版本号 version=`curl "http://hostname/hybirdVersion?appid=$element"` echo $version #生成zip包名 module={element}_version rm -rf $module #将前端资源文件打包 mkdir $module cp -r image $module mkdir ${module}/js mkdir ${module}/css mv css/template.css ${module}/css mv js/template.js ${module}/js cp -r image $module cp template.html $module zip -r module.zip {module} #获取zip包的md5值 md5=`md5sum {module}.zip|awk -F ' ' '{print1}'` echo $md5 #上传zip包至nos curl -X POST -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 " stop succeed Download Url: http://acs.nos.netease.com/${module}.zip" done
zip包生成上传后,app就要去更新了,更新协议如下:
app 首先将本地维护的最新的模块及版本列表上传给服务器,服务器一一对比服务器的zip包版本号,检测到需要更新的zip包,reducer后返回给APP。
app拿到需要更新的zip包模块列表后,下载对应zip包,校验zip包的md5值,校验通过后,解压覆盖掉本地旧的模块,同时更新本地维护的模块版本列表。
大概流程如下:
网易云免费体验馆,0成本体验20+款云产品!
更多网易研发、产品、运营经验分享请访问网易云社区。
相关文章:
【推荐】 Docker容器的原理与实践(下)