• 混合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性能调优记——业务技术两手抓

  • 相关阅读:
    (转)写好程序注释的十三条建议
    注册表添加NoDrives隐藏盘符(禁用U盘)参数说明
    AJAX实用教程——开篇
    浅谈函数求解与人生
    C#(服务器)与Java(客户端)通过Socket传递对象
    BI开发之——Mdx基础语法(2)
    UML——序列图
    UML——序列图案例总结
    ORM内核原理解析之:延迟加载
    应用程序系统基本设计原则——SOLID
  • 原文地址:https://www.cnblogs.com/zyfd/p/9722634.html
Copyright © 2020-2023  润新知