剪不断理还乱
剪不断理还乱
  • 发布:2026-03-16 15:59
  • 更新:2026-04-03 15:43
  • 阅读:235

【报Bug】H5+APP IOS 更新5.01.2026021122-alpha 后, wgt 热更新包更新失败

分类:HTML5+

产品分类: HTML5+

HBuilderX版本号: 5.01

手机系统: iOS

手机系统版本号: iOS 18

手机厂商: 苹果

手机机型: Iphone 15

打包方式: 离线

操作步骤:

通过plus.runtime.install 安装包即可

预期结果:

安装成功

实际结果:

安装失败

bug描述:

使用xcode 26, 运行到真机. 安装wgt热更新包, H5端报错: The manifest.json in the WFT installation package is not a vaild JSON;
控制台提示: Manifest.JSON parsing failed, please make sure the format is correct and cannot contain comments

由于json格式正确,且没有更多的提示. 无法知道是否是缺少某个字段导致的错误. 如果是字段缺少,那么希望报出缺少的字段. 因为H5+APP的manifest文档已经不维护了.

实际上json 格式没有问题, 并且在同一个包在旧版SDK上工作正常.
此处json内容做了部分值隐藏

{  
    "@platforms": [  
        "android",  
        "iPhone",  
        "iPad"  
    ],  
    "id": "*****",  
    "name": "*****",  
    "version": {  
        "name": "5.2.85",  
        "code": 5285  
    },  
    "description": "",  
    "icons": {  
        "72": "icon.png"  
    },  
    "launch_path": "xiao.html",  
    "developer": {  
        "name": "*****",  
        "email": "",  
        "url": "*****"  
    },  
    "permissions": {  
        "Accelerometer": {  
            "description": "访问加速度感应器"  
        },  
        "Audio": {  
            "description": "访问麦克风"  
        },  
        "Cache": {  
            "description": "管理应用缓存"  
        },  
        "Camera": {  
            "description": "访问摄像头"  
        },  
        "Console": {  
            "description": "跟踪调试输出日志"  
        },  
        "Contacts": {  
            "description": "访问系统联系人信息"  
        },  
        "Device": {  
            "description": "访问设备信息"  
        },  
        "Downloader": {  
            "description": "文件下载管理"  
        },  
        "Events": {  
            "description": "应用扩展事件"  
        },  
        "File": {  
            "description": "访问本地文件系统"  
        },  
        "Gallery": {  
            "description": "访问系统相册"  
        },  
        "Geolocation": {  
            "description": "访问位置信息"  
        },  
        "Invocation": {  
            "description": "使用Native.js能力"  
        },  
        "Messaging": {  
            "description": "访问通讯能力"  
        },  
        "Orientation": {  
            "description": "访问方向感应器"  
        },  
        "Proximity": {  
            "description": "访问距离感应器"  
        },  
        "Storage": {  
            "description": "管理应用本地数据"  
        },  
        "Uploader": {  
            "description": "管理文件上传任务"  
        },  
        "Runtime": {  
            "description": "访问运行期环境"  
        },  
        "XMLHttpRequest": {  
            "description": "跨域网络访问"  
        },  
        "Zip": {  
            "description": "文件压缩与解压缩"  
        },  
        "Barcode": {  
            "description": "管理二维码扫描插件"  
        },  
        "Maps": {  
            "description": "管理地图插件"  
        },  
        "Speech": {  
            "description": "管理语音识别插件"  
        },  
        "Webview": {  
            "description": "窗口管理"  
        },  
        "NativeUI": {  
            "description": "原生UI控件"  
        },  
        "Navigator": {  
            "description": "浏览器信息"  
        },  
        "NativeObj": {  
            "description": "原生对象"  
        },  
        "Share": {  
            "description": "分享"  
        },  
        "plugintest": {  
            "description": "5+和uniapp 插件demo "  
        },  
        "payment": {  
            "description": "支付"  
        }  
    },  
    "plus": {  
        "safearea": {  
            "background": "#CCCCCC",  
            "backgroundDark": "#2f0508",  
            "bottom": {  
                "offset": "auto"  
            },  
            "left": {  
                "offset": "auto"  
            },  
            "right": {  
                "offset": "auto"  
            }  
        },  
        "splashscreen": {  
            "autoclose": true,  
            "waiting": false  
        },  
        "popGesture": "close",  
        "runmode": "liberate",  
        "signature": "*****",  
        "statusbar": {  
            "immersed": "none",  
            "style": "light",  
            "background": "#000"  
        },  
        "distribute": {  
            "plugins": {  
                "share": {  
                    "weixin": {  
                        "appid": "*****",  
                        "UniversalLinks": "*****"  
                    },  
                    "qq": {  
                        "appid": "*****"  
                    }  
                },  
                "maps": {  

                }  
            },  
            "apple": {  
                "urlschemewhitelist": [  
                    "iosamap",  
                    "baidumap"  
                ]  
            },  
            "ios": {  
                "dSYMs": false  
            }  
        }  
    }  
}
2026-03-16 15:59 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

需要补充 hbuilderx 版本信息及详细的报错日志。
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

作为DCloud官方人员,对该bug反馈的评审意见如下:

1. 反馈内容完整性分析

优点:

  • 基本信息完整:包含HBuilderX版本(5.01 Alpha)、平台(iOS)、设备信息(iPhone 15, iOS 18)等必要环境信息
  • 错误描述清晰:提供了具体的错误提示("The manifest.json in the WFT installation package is not a valid JSON" 和 "Manifest.JSON parsing failed")
  • 对比信息有价值:明确指出同一wgt包在旧版SDK工作正常,新版SDK(5.01.2026021122-alpha)出现异常,这是关键的回归测试线索
  • 提供了manifest.json源码:虽然做了部分脱敏处理,但展示了完整的JSON结构,便于初步排查格式问题

待补充建议:

  • 编码格式确认:建议确认manifest.json文件编码是否为UTF-8无BOM格式,某些情况下BOM头会导致JSON解析失败
  • wgt包结构:建议提供wgt包内部文件结构列表(是否包含__MACOSX等隐藏目录,或文件路径是否包含特殊字符)
  • 完整日志:建议提供从调用plus.runtime.install开始到报错结束的完整原生日志(base日志),而不仅是H5端报错信息

2. Bug是否成立分析

经检索知识库,暂未找到关于H5+APP在iOS平台5.01版本wgt热更新manifest解析失败的已知问题或相关依据。

但根据反馈描述的特征:

  • 旧版SDK正常,新版SDK异常
  • 错误提示表明是manifest.json解析阶段失败
  • 用户确认JSON格式正确且无注释

这符合版本回归bug的特征。由于H5+APP manifest.json解析逻辑在SDK升级后可能出现校验规则变更(如更严格的JSON校验、新增必填字段校验等),建议开发团队核查5.01版本iOS端wgt安装模块的manifest解析逻辑变更记录。

3. 基本概念与知识库依据

从知识库中未检索到与本次问题直接相关的技术依据。

初步排查建议(基于通用技术逻辑,非知识库依据):

  1. 检查manifest.json是否存在隐藏的BOM头(UTF-8 BOM)
  2. 检查wgt包压缩格式是否为标准zip格式,且未包含特殊文件(如.DS_Store等)
  3. 检查manifest.json中是否包含未转义的特殊字符(如换行符、制表符等)

结论:该反馈是一个完整度较高的有效bug反馈,提供了版本对比等关键线索。由于知识库中暂无相关依据,建议提交至官方issue系统并附上可复现的wgt测试包,以便开发团队核查新版SDK的manifest解析逻辑。

内容为 AI 生成,仅供参考
DCloud_App_Array

DCloud_App_Array

从信息看就是maniefst.json中的格式错误,新版本并没有调整过相关逻辑,请将wgt上传看下。

  • 剪不断理还乱 (作者)

    在楼下,上传了, 麻烦看下呢. 同一个wgt包在旧版SDK上能装.换成新的就不行了.

    2026-03-18 09:07

剪不断理还乱

剪不断理还乱 (作者)

@DCloud_App_Array

在附件, 同一个wgt包在旧版SDK上能装.换成新的就不行了.

  • DCloud_App_Array

    给出完整的wgt文件,我们复现排查下。

    2026-03-18 11:37

  • 剪不断理还乱 (作者)

    回复 DCloud_App_Array: 上传了, 刚刚以为是要manifest

    2026-03-18 14:03

  • DCloud_App_Array

    这个wgt本身没有问题,我这边验证是可以安装的。需要注意的是不能新增模块,确保"permissions"节点数据与升级前一致,否则会失败。如果提示Manifest.JSON parsing failed,说明你手动修改的文件格式不正确,或者修改后压缩包路径错误。

    2026-03-18 17:14

  • 剪不断理还乱 (作者)

    回复 DCloud_App_Array: 这个包没有改变模块. 也没有在这个基础上在手动修改. 是我升级SKD方法不对吗? 我是下载5.01的SDK, 然后将xcode离线打包项目中原本存在的SDK依赖使用下载到的替换, 然后build的时候有错误, 少了依赖, 应该是新sdk额外需要的.我也将需要的加入了离线打包项目. 未作其它修改. 直接替换www.打包可以运行, 原生选图, 拍照, 压缩 io操作都ok, 热更包只是使用hbuilderx修改了版本号. 就热更不行. 是我应该使用新SDK配套的项目来打离线包吗? 主要是目前的项目里有原生改的,增加了许多原生页面和自定义的功能.

    2026-03-18 17:40

  • DCloud_App_Array

    回复 剪不断理还乱: 5+项目新版本没有做调整,如果仅仅是更新离线SDK才出现问题,建议不要更新SDK。

    2026-03-18 20:02

  • 剪不断理还乱 (作者)

    回复 DCloud_App_Array: 更新原因是 xcode打包旧版本从相册选图 没有最近项目的相册, 不能选图片了

    2026-03-19 09:04

  • 剪不断理还乱 (作者)

    回复 DCloud_App_Array: 找到原因了 应为我们项目内引用了unzip.c 然后 新sdk在install时会解压, 调用到我们项目的unzip了, 然后没有成功解压. 导致报错json文件格式错误.

    2026-04-03 15:41

剪不断理还乱

剪不断理还乱 (作者)

解决了, 项目内使用了minizip, sdk 似乎也用了, 然后install热更包时, 调用到我们自己的unzip 导致解压应该是报错或者失败或者返回结果不是sdk要的, 然后sdk在对应路径拿不到解压后的文件,然后报错.

要回复问题请先登录注册