zoukankan      html  css  js  c++  java
  • 混合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包,写了一个自动化打包脚本(待完善),如下:


    #切换到项目目录
    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+款云产品! 

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




    相关文章:
    【推荐】 一“脚”到位-淋漓尽致的自动化部署
    【推荐】 Kylin性能调优记——业务技术两手抓

  • 相关阅读:
    用 Python 带你看各国 GDP 变迁
    Fluent Interface(流式接口)
    probing privatePath如何作用于ASP.NET MVC View
    Word插入htm文件导致文本域动态增加的一个问题
    Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
    Ubuntu下Chrome运行Silverlight程序
    Windows Phone Bing lock screen doesn't change解决方法
    SPClaimsUtility.AuthenticateFormsUser的证书验证问题
    Web Service Client使用Microsoft WSE 2.0
    Visual Studio 2013安装Update 3启动crash的解决方法
  • 原文地址:https://www.cnblogs.com/zyfd/p/9722634.html
Copyright © 2011-2022 走看看