uni-app 添加模块后IOS热更新失败

uni-app 添加模块后IOS热更新失败

产品分类:

uniapp/App

PC开发环境操作系统:

Windows

PC开发环境操作系统版本号:

Windows 10 专业版

HBuilderX版本号:

3.7.1

手机系统:

iOS

手机系统版本号:

iOS 16

手机厂商:

苹果

手机机型:

iphone所有机型

页面类型:

vue

vue版本:

vue2

打包方式:

离线

项目创建方式:

CLI

CLI版本号:

4.5.13

示例代码:

uni.downloadFile({
url: updateData.apkUrl,
fail: (e) => {
spinner.unmount();
uni.showModal({
title: '下载失败',
content: '更新文件下载失败,请重新启动APP',
showCancel: false,
success: (res) => {
if (res.confirm) {
client.quit();
}
}
});
},
success: (downloadResult) => {
spinner.unmount();
if (downloadResult && downloadResult.statusCode === 200) {
plus.runtime.install(downloadResult.tempFilePath, {
force: true
}, () => {
client.restart();
}, (e) => {
uni.showModal({
title: '更新失败',
content: 'APP更新失败,请重新安装',
showCancel: false,
success: (res) => {
if (res.confirm) {
client.quit();
}
}
});
});
}
}
});

操作步骤:

添加模块,重新离线打包更新App Store,用户去App Store更新后,我们再发热更新,用户热更新不起了,但是卸载重装就能正常热更新

预期结果:

正常热更新

实际结果:

热更新失败

bug描述:

添加模块后IOS热更新失败,用的是离线打包方式,appstore也已经发布,用户去App Store更新后,就热更新不行了,但是卸载重装就能正常热更新,但不可能让用户全部卸载重装吧

Image 1 Image 2


更多关于uni-app 添加模块后IOS热更新失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

添加新的模块必须重新打包更新,不能热更新

更多关于uni-app 添加模块后IOS热更新失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我就是重新打包更新App Store了,用户去App Store更新后,我再发的热更新

回复 车轮滚滚: 那就不了解了

f"code":-1229"message":“HTML5+Runtime缺少升级包manifest.json中配置的模块:Camera.Geolocation,Barcode,https:/ask.dcloud.net.cn/article/282”}这是报错信息

报错信息 “code”:-1229"message":“HTML5+Runtime缺少升级包manifest.json中配置的模块:Camera.Geolocation,Barcode,https:/ask.dcloud.net.cn/article/282”} 说明当前资源和热更新资源中对应的模块是不匹配的,检查一下打包时内置的资源 manifest.json 文件中 permissions 节点和 wgt 资源中 manifest.json 文件中 permissions 节点包含的内容是否一致

是一致的,都包含了这几个模块

用的是离线打包方式,appstore也已经发布,用户去App Store更新后,就热更新不行了,但是卸载重装就能正常热更新

能帮忙看看吗

回复 车轮滚滚: 离线打包,那可能是你升级的时候没有将uni资源 manifest.json 中的版本号和原生工程中的版本号统一导致的,云打包会自动配置这个版本号所以不会有问题,可以测试一下看看是不是这个原因

在 uni-app 开发中,当你添加了新的模块后,如果 iOS 热更新失败,可能是由于以下几个原因导致的。以下是一些常见的排查步骤和解决方案:

1. 检查模块的兼容性

  • 确保你添加的模块是兼容 uni-app 的,并且支持 iOS 平台。
  • 有些模块可能需要额外的配置或依赖,建议查看模块的文档。

2. 重新生成 manifest.json

  • 在添加模块后,可能需要重新生成 manifest.json 文件。
  • 在 HBuilderX 中,右键点击项目 -> 选择 manifest.json -> 点击 重新生成

3. 检查 manifest.json 配置

  • 确保 manifest.json 中的 modules 配置正确添加了新模块。
  • 检查 app-plus 下的 modules 配置,确保模块已正确添加。

4. 重新编译项目

  • 在 HBuilderX 中,点击 运行 -> 运行到手机或模拟器 -> 运行到 iOS 设备,重新编译项目。
  • 如果仍然失败,尝试清理项目缓存:运行 -> 清除项目缓存,然后重新编译。

5. 检查热更新配置

  • 确保 manifest.json 中的 app-plus -> distribute -> ios 下的 urlversion 配置正确。
  • 确保热更新的 wgt 文件生成正确,并且上传到了正确的服务器路径。

6. 检查热更新服务器配置

  • 确保热更新服务器的 wgt 文件可以正常下载。
  • 检查服务器的 MIME 类型配置,确保 .wgt 文件的 MIME 类型为 application/zip

7. 检查 iOS 设备网络

  • 确保 iOS 设备可以正常访问热更新服务器。
  • 检查设备的网络设置,确保没有网络限制或代理问题。

8. 查看日志

  • 在 iOS 设备上查看控制台日志,检查是否有错误信息。
  • 使用 HBuilderX 的 调试 功能,查看热更新过程中的日志输出。

9. 更新 HBuilderX 和 uni-app 版本

  • 确保你使用的是最新版本的 HBuilderX 和 uni-app,旧版本可能存在已知的 bug 或兼容性问题。

10. 检查证书和描述文件

  • 确保 iOS 的证书和描述文件配置正确,特别是如果涉及到推送通知等功能的模块。

11. 手动触发热更新

  • 如果自动热更新失败,可以尝试在代码中手动触发热更新:
    plus.runtime.getProperty(plus.runtime.appid, function (widgetInfo) {
        plus.runtime.install('https://your-server.com/path/to/update.wgt', {}, function () {
            plus.runtime.restart();
        }, function (e) {
            console.error('热更新失败:', e.message);
        });
    });
回到顶部