uni-app离线打包,wgt热更新,不开启强制更新时报错
uni-app离线打包,wgt热更新,不开启强制更新时报错
产品分类
uniapp/App
开发环境信息
项目 | 信息 |
---|---|
PC开发环境操作系统 | Mac |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.29 |
手机系统 | Android |
手机系统版本号 | Android 10 |
手机机型 | 话机 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 离线 |
项目创建方式 | HBuilderX |
操作步骤
如上
预期结果
如上
实际结果
如上
bug描述
uniapp 采用离线打包,wgt更新, 不开启 【强制更新】会报错。开启【强制更新】【静默更新】 正常
SDK 用的最新的 24-10月 8号的那个
报错信息如下:
I [ERROR][Vue warn]: Error in event handler for “api.onDownloadTaskStateChange”: “Error: error: uts-progressNotification not found.”
(found <Root>)
2024-10-23 15:41:34.701 9766-9813 console com.weyon.yuncall I [ERROR]Error: error: uts-progressNotification not found.
2024-10-23 15:41:34.704 9766-9813 console com.weyon.yuncall I [ERROR][Vue warn]: Error in event handler for “api.onDownloadTaskStateChange”: “Error: error: uts-progressNotification not found.”
我也出现同样问题,有没有解决呢?普通模式报错,静默、强制不报错
在处理uni-app离线打包及wgt热更新时,如果不开启强制更新但遇到报错问题,通常涉及到资源文件的正确加载与版本校验。以下是一个简要的代码案例和流程,帮助你排查和解决这些问题。
1. 确认离线包(wgt)生成与上传
首先,确保你的离线包(wgt文件)是通过uni-app的官方工具正确生成的。使用HBuilderX工具,可以通过以下步骤生成wgt包:
- 打开HBuilderX,选择你的uni-app项目。
- 点击“发行”->“网站-H5手机版”或“App-原生App-云端打包”。
- 在弹出的窗口中,选择“制作离线包(wgt)”。
- 完成打包后,wgt文件将生成在项目的
unpackage/dist/build/packages/
目录下。
2. 上传wgt包到服务器
将生成的wgt文件上传到你的服务器,确保路径正确,并且可以通过HTTP或HTTPS访问。
3. 客户端配置热更新
在客户端代码中,配置manifest.json文件以支持热更新:
{
"mp-weixin": { // 或其他平台配置
"appid": "your-appid",
"setting": {
"urlCheck": false
},
"usingComponents": true,
"permission": {
"scope.userInfo": {
"desc": "你的用户信息将用于小程序的登录"
}
}
},
"app-plus": {
"distribute": {
"wgt": {
"check": true, // 开启热更新检查
"url": "https://yourserver.com/path/to/your.wgt" // 离线包下载地址
}
}
}
}
4. 处理版本校验逻辑
在App启动时,通过代码手动检查版本并进行更新,而非强制更新:
// main.js 或 app.js
if (window.plus) {
plus.runtime.getProperty(function(info) {
const currentVersion = info.version;
const serverVersion = 'your-server-version'; // 从服务器获取最新版本号
if (currentVersion !== serverVersion) {
plus.runtime.install({
name: 'update',
url: 'https://yourserver.com/path/to/your.wgt',
success: function() {
console.log('更新成功');
},
fail: function(e) {
console.error('更新失败:', e);
}
});
} else {
console.log('已是最新版本');
}
});
}
5. 错误处理
在更新过程中,可能会遇到各种错误,如网络问题、文件损坏等。务必在fail
回调中处理这些错误,提供用户友好的提示信息。
总结
确保离线包生成正确、上传路径正确、客户端配置正确,并通过代码逻辑合理处理版本校验与更新过程。上述代码提供了一个基本的框架,你可以根据实际情况进行调整和扩展。