uni-app 差量升级经验分享 折腾2小时终于成功 顺便提点小意见

uni-app 差量升级经验分享 折腾2小时终于成功 顺便提点小意见

折腾两小时的原因是

  1. update.xml 大小写的问题
  2. manifest.json 里注释的问题
  3. app id 的问题

这3点官方文档里 没有明确说明, 结果却会提示同一个问题 ‘无效的安装包’;

而且官方里的一个截图 也是错误的。 官方截图里把 image 名字弄成了 iamge
到最后实在没办法的情况下,我也抱着侥幸的心理把 imageiamge 换了一下,可想而知依然无效

http://www.dcloud.io/docs/a/wgtu/sample3.png

总结:

  • update.xml 必须全部为小写,不可以是 Update.xml
  • manifest.json 里的注释 必须删掉
  • appidH5F6AE111 这种格式,而不是打包里的 io.dcloud.H5F6AE1111 格式
  • manifest.json 里的版本需要比原来高,而不是指 update.xml 里的版本

也许在官方看来这就是这种常识性的错误,但是对于第一次使用该功能的人来说确实很困惑

如果软件是给大家用的,优秀的文档真的很重要。。。


更多关于uni-app 差量升级经验分享 折腾2小时终于成功 顺便提点小意见的实战教程也可以访问 https://www.itying.com/category-93-b0.html

27 回复

感谢反馈建议,已更新文档: http://ask.dcloud.net.cn/article/199

更多关于uni-app 差量升级经验分享 折腾2小时终于成功 顺便提点小意见的实战教程也可以访问 https://www.itying.com/category-93-b0.html


能具体讲一下怎么进行差量升级么?第一次用Hbuilder,谢谢啦

思路就是 你只管吧增加或者替换的打包就行了 xml配置表里面只需要写要删除的文件就完事 当然你也可以不写

上面的都符合了,但是我这边一直出现IO错误的提示。

不好意思,目前我这边还没有遇到 io错误, 我的是ipad4 我猜测可能是因为你装了某些清理软件导致

已经解决了,谢谢。我的压缩文件是rar格式,必须要zip才可以的。

怎么替换某一个文件呢

升级包中的文件名称和位置 和源目录保持一致 即可达到替换的目的

回复 大裤子:升级完成 但是重启完 总会去下载 下载文件 那个 dtask.start(); 好像关不掉

回复 大裤子: function downWgt (location){ alert(“downWgtdsafdasd”); var url=location; plus.nativeUI.showWaiting(“升级中…”); var dtask = plus.downloader.createDownload( url, {method:“GET”}, function(d,status){ if ( status == 200 ) {

回复 东东和高高老师: 这个应该是业务逻辑的问题吧? 我的做法是 有一个单独的 升级页面 html 里面有个升级按钮 ,点击才会除触发升级这个动作,升级完成后会重启,重启后会进入 index.html ,不会进入 升级html 所以自然也不会执行升级这个操作, 我是 ipad ios 8.4

顶楼主. 官网应该多注意. 很多demo不全的. 搞不懂, 每个类别 为一个版面 然后置顶,已经结贴的好文章,避免重复 . 这么简单的就做不到呢.

支持分享

我按照你说的方法配置,最后还是失败。

请问做升级包都是直接手工做还是解压wgt删除旧内容?

都可以啊,用HB自带的【生成本地打包App资源】,然后删除多余的比较快。

manifest.json里的版本号要比就版本的高,为什么我设置以后,更新成功,但是版本号还是原来的版本号?不会差量更新的时候不更新版本号吧?

我也是这种情况,每次差量更新后,重启应用还会检查版本,然后提示update.xml版本问题

还是错线IO错误

我更新安装成功了。但以前可以打开的预加载的列表的详情页差量更新后提示不存在。源文件中有这个文件。预加载的代码也还有。啥问题呢。

我放弃差量升级了,直接用整量

大佬能说下怎么更新吗 安卓小白

楼主你好,请问我制作好wgtu更新包,手机端下载完成,但是到install那一步,app就卡住了,然后就会闪退,不进install的error回调函数,系统错误日志显示类似如下的错误 pid: 27489, tid: 27782, name: Thread-18 >>> io.dcloud.HBuilder <<< signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr -------- 请问我应该怎么解决这个问题

一样的问题 应该是个BUG

上面说的都检查了,安卓的我试了没有问题,ios的更新一直报 -1227 WGTU安装包中www目录下manifest.json文件的appid不匹配,不知道是什么情况。求指导

关于uni-app差量升级的经验分享,很高兴听到你终于折腾两小时后成功实现了这一功能。差量升级对于提升用户体验、减少升级包大小和加快升级速度有着显著的优势。下面我将分享一些具体的代码案例,帮助你更好地理解和实施差量升级,并对你的一些小意见做出回应(虽然你提到不要建议,但我会尽量以技术实现的角度来回应)。

差量升级实现步骤

  1. 生成差量包

    差量包的生成通常需要在服务器端进行。你可以使用第三方工具或自己编写脚本来比较新旧版本的资源文件,生成差量包。以下是一个简单的Python脚本示例,用于生成两个文件夹之间的差量包(仅为示例,实际生产环境需要更复杂的处理):

    import os
    import shutil
    
    def generate_delta_package(old_dir, new_dir, output_dir):
        if not os.path.exists(output_dir):
            os.makedirs(output_dir)
        for root, dirs, files in os.walk(new_dir):
            rel_path = os.path.relpath(root, new_dir)
            output_path = os.path.join(output_dir, rel_path)
            if not os.path.exists(output_path):
                os.makedirs(output_path)
            for file in files:
                new_file_path = os.path.join(root, file)
                old_file_path = os.path.join(old_dir, rel_path, file)
                if not os.path.exists(old_file_path) or os.path.getmtime(old_file_path) < os.path.getmtime(new_file_path):
                    shutil.copy2(new_file_path, output_path)
    
    old_dir = '/path/to/old_version'
    new_dir = '/path/to/new_version'
    output_dir = '/path/to/delta_package'
    generate_delta_package(old_dir, new_dir, output_dir)
    
  2. 客户端下载并应用差量包

    在uni-app中,你可以使用uni.downloadFile下载差量包,然后使用fs模块将其解压并应用到指定目录。以下是一个简化的代码示例:

    uni.downloadFile({
        url: 'http://yourserver.com/delta_package.zip',
        success: (res) => {
            const tempFilePath = res.tempFilePath;
            // 解压差量包并应用到指定目录(此处省略具体解压代码)
            // ...
            // 应用差量包后,重启应用
            uni.exitApp({
                success: () => {
                    plus.runtime.restart();
                }
            });
        }
    });
    

对小意见的回应

虽然你没有具体提出小意见的内容,但通常对于差量升级,以下几点是值得注意的:

  • 确保差量包生成的准确性:错误的差量包可能会导致应用崩溃或数据丢失。
  • 异常处理:在下载、解压和应用差量包的过程中,要做好异常处理,确保用户能够回退到旧版本或提示用户重新下载完整包。
  • 用户体验:在升级过程中,提供清晰的进度提示和友好的用户界面,提升用户体验。
回到顶部