DCloud_App_Array
DCloud_App_Array
  • 发布:2015-04-24 21:55
  • 更新:2024-07-29 19:31
  • 阅读:91360

App资源在线差量升级更新

分类:HTML5+

官方已发布APP升级中心,支持原生APP整包升级和wgt资源包升级。详见

5+应用可使用以下方式进行升级

本文重点介绍5+应用资源差量升级,相对App资源独立升级,因为只需要下载更新的资源文件,所以升级包体积更小,升级速度会更快。
注意:需HBuilder5.7.0以上版本才有此功能

生成移动App资源差量升级包

顾名思义,差量升级包是针对某个历史版本到新版本的差量,所以对于升级服务器来讲需要保留所有历史版本,并且分别生成每个历史版本到新版本的差量升级包。
目前HBuilder IDE并未提供版本控制系统,所以需要按照以下规则手动生成差量升级包:

  • 差量升级包文件格式为wgtu
    在HTML5+移动App支持的差量升级包文件后缀名必须是wgtu,它是标准的zip压缩文件,可以使用任何zip工具对wgtu目录进行压缩,并修改文件后缀名称为wgtu。
  • wgtu目录结构
名称 类型 说明
www 目录 保存需要更新的数据文件,其下的目录结构与应用的目录结构一致,其下必须包含manifest.json文件,否则认为更新文件非法,不执行升级操作
update.xml 文件 保存应用升级操作的配置信息,参考update.xml文件格式
  • update.xml文件格式(注意:文件名必须全部小写)
    update.xml为标准的xml文件格式,定义wgtu文件升级配置信息,其文件格式如下:
元素名称 父元素 类型 描述 必须
wgtu 根节点
appid wgtu 属性 升级应用的appid
basis wgtu 节点 基础应用信息
version basis 属性 基础应用的版本信息(旧版本的版本号
remove wgtu 节点 升级需要删除的文件/目录列表
item remove 节点 需要删除的项
path item 属性 需要删除的项的路径,相对于应用根目录,如“image/a.png”表示image目录下的a.png文件。如果是目录则以‘/’结尾,如“res/img/”表示res目录下的img目录,删除时包括下的所有内容。
  • wgtu示例
    应用升级前的版本1.0,其应用目录结构为:

    应用升级后的版本1.1,其应用目录结构为:

    差量升级包wgtu文件的目录结构为(不包括最外层wgtu目录):

    应用升级更新文件manifest.json、index.html,新增detail.html、image/new.png,删除image/icon5.png。
    其中update.xml中的内容为:
    <?xml version="1.0" encoding="utf-8" standalone="no"?>  
    <wgtu appid="TEST" >  
    <basis version="1.0" />  
    <remove>  
    <item path="image/icon5.png" />  
    </remove>  
    </wgtu>

应用中差量更新资源

下载wgtu文件并更新:

    var url='http://demo.dcloud.net.cn/helloh5/update/HelloH5.wgtu';  
    plus.nativeUI.showWaiting("升级中...");  
    var dtask = plus.downloader.createDownload( url, {method:"GET"}, function(d,status){  
        if ( status == 200 ) {   
            console.log( "Download wgtu success: " + d.filename );  
            plus.runtime.install(d.filename,{},function(){  
                plus.nativeUI.closeWaiting();  
                plus.nativeUI.alert("Update wgtu success, restart now!",function(){  
                    plus.runtime.restart();  
                });  
            },function(e){  
                plus.nativeUI.closeWaiting();  
                alert("Update wgtu failed: "+e.message);  
            });  
        } else {  
            plus.nativeUI.closeWaiting();  
             alert( "Download wgtu failed: " + status );   
        }   
    } );  
    dtask.addEventListener('statechanged',function(d,status){  
        console.log("statechanged: "+d.state);  
    });  
    dtask.start();

注意

  1. wgtu包中的update.xml文件名称必须全部小写,并且和www在同一级目录中
  2. wgtu包中www目录下必须包含manifest.json文件,并且里面不能包含注释(HBuilder中默认带注释,需要手动删除所有注释)
  3. update.xml中的appid值是应用的AppID(如“H5F6AE111”),不是程序的包名(如“io.dcloud.H5F6AE1111”)
  4. wgtu包必须是使用zip格式压缩的文件(不能使用如rar等其它压缩格式)

App store应用更新说明
应用资源更新肯定是违反apple政策的,但目前看起来它也不管。你在官网案例那里下载Appstore版本的那些app,大多启动后都会提示更新,反正也都没下架。如果你不是很大的公司,apple不会理睬你。如果你是大公司,建议不要做整体更新,每次更新几个页面,也不要提示更新后需要重启,这样会安全点。

感谢 @大裤子 反馈建议更新补充文档,wgtu更新经验分享:http://ask.dcloud.net.cn/question/6353

44 关注 分享
蔡繁荣 杨羊羊 ztingjian 半杯可乐 小手真黑 古丶木风 飞羽 小小雨 gerry 布洛瓷 NyxFang BoredApe 埃文 不知道 天行 果汁 木子喵 望月孤魂 江南长 除膜慰道 妙妙 holy1004 yinzhq12 止水 夜汨 Trust _burt 2***@qq.com 赵 skysowe atongmu 启程588 1***@qq.com 3***@qq.com 6***@qq.com 银少 4***@qq.com 1***@qq.com studio jzq84229 1***@qq.com 7***@qq.com m***@gmail.com 理子

要回复文章请先登录注册

阿拉斌

阿拉斌

Android能升级成功,但是IOS升级就失败了,这是为什么啊。。。
2018-06-10 21:52
2***@qq.com

2***@qq.com

你们谁能告诉我怎么能让升级后manifest.json的版本号不变的么?看你们很多人说了这个情况为什么我碰不到,如果我能让他不变我就不用比较版本号升级了!
2018-01-21 22:37
1***@qq.com

1***@qq.com

回复 1***@qq.com :
大神 这个问题您解决了吗 能分享一下吗
2018-01-15 17:41
1***@qq.com

1***@qq.com

@1021738078@qq.com 跨版本升级这个问题您搞定了吗 能分享一下吗
2018-01-15 17:40
1***@qq.com

1***@qq.com

回复 小小菜鸟 :
请问是怎么解决的呢? 遇到同样的问题
2017-09-15 11:05
fredzhu

fredzhu

回复 fredzhu :
动态打包实现了。工作正常。不过在过程中发现要用7zip的命令行来打包,用了2个第三方的.net打包dll(最常用的两个, Ionic.Zip和另一个)结果windows认识这个zip文件,但是HBuilder的升级不认识。
2017-02-10 21:43
fredzhu

fredzhu

回复 1***@qq.com :
好像复杂了点。我想到的办法是:动态打包,比较版本后把客户端的版本写入update.xml文件里,打包,然后这个wgtu包就是这个用户可用的包了。比如叫update-1.0.0-1.0.3.wgtu,其他人的自动叫update-1.0.2-1.0.3.wgtu,有版本一样的直接用,没版本一样的动态打包一个给他用
2017-01-23 13:51
c***@163.com

c***@163.com

update.xml文件不存在是什么鬼,明明已经打进去了
2017-01-13 14:52
1***@qq.com

1***@qq.com

回复 f***@gmail.com :
差量升级方案可以参考下这篇文章,http://blog.csdn.net/qq_14859923/article/details/54178027
通过这样的方式,进行差量升级,可以不必对比版本,直接替换原有文件,而且原来的图片资源还保留。
2017-01-09 18:34
1***@qq.com

1***@qq.com

回复 1***@qq.com :
差量升级方案可以参考下这篇文章,http://blog.csdn.net/qq_14859923/article/details/54178027
通过这样的方式,进行差量升级,可以不必对比版本,直接替换原有文件,而且原来的图片资源还保留。
2017-01-09 18:33