uniappwgt官方热更新如何使用
我在使用uniapp的wgt热更新功能时遇到了一些问题,不太清楚具体的操作流程。官方文档看得不是很明白,想请教下大家:1)如何正确生成wgt更新包?2)在客户端应该如何检测和下载更新?3)更新过程中需要注意哪些关键点?希望能结合具体案例说明下完整的实现步骤。
2 回复
使用HBuilderX打包wgt包,通过uni.downloadFile下载wgt文件,再调用uni.installWgt安装即可。注意版本号需大于当前版本,且需配置manifest.json中的更新地址。
UniApp 的 WGT 热更新允许用户在不重新安装应用的情况下更新资源或部分代码。以下是基本使用步骤:
-
生成 WGT 包
在 HBuilderX 中,选择「发行」→「制作 wgt 包」,生成.wgt文件。 -
上传 WGT 包
将.wgt文件上传到你的服务器,并记录下载地址。 -
客户端检测更新
在 App 启动时,检查服务器是否有新版本。示例代码:// 在 App.vue 的 onLaunch 中 plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => { const currentVersion = widgetInfo.version; // 当前版本 // 请求服务器,对比版本(需自行实现) uni.request({ url: 'https://your-server.com/check-update', data: { version: currentVersion }, success: (res) => { if (res.data.hasUpdate) { this.downloadWgt(res.data.wgtUrl); } } }); }); -
下载并安装 WGT
使用plus.downloader下载并安装:downloadWgt(wgtUrl) { const task = plus.downloader.createDownload(wgtUrl, {}, (d, status) => { if (status === 200) { plus.runtime.install(d.filename, {}, () => { uni.showToast({ title: '更新完成,重启生效', icon: 'none' }); // 可调用 plus.runtime.restart() 立即重启 }, (e) => { console.error('安装失败:', e); }); } else { console.error('下载失败:', status); } }); task.start(); }
注意事项:
- 范围限制:WGT 更新仅适用于非原生代码(如页面、样式、JS),无法更新原生插件或 manifest 配置。
- 版本管理:确保服务器返回正确的版本信息和 WGT 包地址。
- 权限:Android 需配置存储权限。
- 测试:更新前务必充分测试,避免资源错误导致白屏。
通过以上步骤,即可实现 UniApp 的 WGT 热更新功能。

