本文来自网易云社区

作者:王贝

目前大多数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 "\nstop succeed\nDownload Url: http://acs.nos.netease.com/${module}.zip"
done

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

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

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

大概流程如下:

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

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

相关文章:
【推荐】 Docker容器的原理与实践(下)

混合APP开发-hybrid 升级流程的更多相关文章

  1. APP开发的基本流程

    一个独立App开发人的自白:做APP就是一场赌局,你要会押注 下面我们就直接来看下APP从业者必知的整个APP开发标准流程. 一般的APP开发及上线流程 步骤如下: 首先,制作一款APP,必须要有相关 ...

  2. 混合app开发,h5页面调用ios原生APP的接口

    混合APP开发中,前端开发H5页面,不免会把兼容性拉进来,在做页面的兼容性同事,会与原生app产生一些数据交互: 混合APP开发,安卓的兼容性倒是好说,安卓使用是chrome浏览器核心,已经很好兼容H ...

  3. 什么是混合app开发

    webApp 移动app 就是在浏览器中运行的web应用 (网页应用)开发成本低 体验差 不需要安装 NativeApp :用Android和object-C原生语言开发的应用 开发成本高 需要安装( ...

  4. 国内混合APP开发技术选型

    http://www.sunzhongwei.com/weex-react-native-ionic-technology-selection 选谁? 企业级应用是要考虑性能和流畅度的, 如果只是做个 ...

  5. Cordova+vue 混合app开发(一)创建Cordova项目

    简介: Cordova包装你的HTML/JavaScript app到原生app容器中,可以让你访问每个平台设备的功能.这些功能通过统一的JavaScript API提供,让你轻松的编写一组代码运行在 ...

  6. 混合app开发--js和webview之间的交互总结

    使用场景:原生APP内嵌套H5页面,app使用的是webview框架进行嵌套 这样就存在两种情况 1.原生app调用H5的方法 2.H5调用app的方法 分别讲解下,其实app与H5之间的交互式非常简 ...

  7. phoneGap+cordova+ionic混合app开发环境搭建

    参考链接:http://www.w2  bc.com/article/177257 待补充

  8. 记录混合APP开发遇到的坑!!

    1.在IOS中给body绑定click事件会失效 2.在IOS中<div contenteditable="true"></div>中点击时可以弹出键盘但是 ...

  9. 原生app,WEBAPP,混合app

    什么叫做原生App? 原生App是专门针对某一类移动设备而生的,它们都是被直接安装到设备里,而用户一般也是通过网络商店或者卖场来获取例如    The App Store  与  Android Ap ...

随机推荐

  1. bzoj 3027 [Ceoi2004]Sweet——生成函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3027 化式子到 ( \mul_{i=1}^{n}(1-x^(m[i]+1)) ) / (1- ...

  2. Mac上制作Centos7系统U盘安装盘

    Centos7 下载地址: http://101.110.118.47/isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD- ...

  3. php 字符串的分割

    http://blog.sina.com.cn/s/blog_71ed1b870102uysa.html

  4. JSON-lib框架,转换JSON、XML

    json-lib工具包 下载地址: http://sourceforge.net/projects/json-lib/json-lib还需要以下依赖包: jakarta commons-lang 2. ...

  5. hihoCoder#1068(RMQ-ST算法)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在美国旅行了相当长的一段时间之后,终于准备要回国啦!而在回国之前,他们准备去超市采购一些当地特产——比如汉堡 ...

  6. HDU2579(bfs迷宫)

    Dating with girls(2) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. [转] Linux 查找文件内容

    Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件g ...

  8. [转]浅谈javascript函数劫持

    转自:Ph4nt0m Security Team 这么多年了,现在学习依然还是有很多收货,向前辈致敬.转载一方面是自己存档一份,另一方面是让更多喜欢安全的人一同学习. ================ ...

  9. JSP+Servlet 无数据库模拟登录过程

    程序目录结构: index.jsp: <%@ page language="java" contentType="text/html; charset=utf-8& ...

  10. 《Android应用性能优化》 第4章 高效使用内存

      本地类型 大小 字节 boolean jboolean 8位(取决于VM) 1 byte jbyte 8位 1 char jchar 16位 2 short jshort 16位 2 int ji ...