uni-app热更新失败 安装wgt文件失败[-1205] WGT安装包中manifest.json文件的version版本不匹配
uni-app热更新失败 安装wgt文件失败[-1205] WGT安装包中manifest.json文件的version版本不匹配
增加节流,一般是因为触发连续多次安装导致的
1 回复
在uni-app开发中,遇到热更新失败且安装WGT文件时报错[-1205],通常意味着WGT安装包中的manifest.json
文件的version
字段与当前应用中的版本不匹配。为了确保热更新顺利进行,需要确保WGT包中的版本号正确无误,并且高于当前应用的版本号。
以下是一个检查和处理此问题的代码案例,包括如何生成WGT包以及如何在应用中处理版本更新。
1. 生成WGT包
在生成WGT包之前,确保manifest.json
中的version
字段已经更新为新的版本号。例如,如果当前版本是1.0.0
,则更新为1.0.1
。
// manifest.json
{
"mp-weixin": { // 或者其他平台配置
"appid": "your-app-id",
"setting": {
// 其他配置...
},
"version": {
"name": "1.0.1", // 更新版本号
"code": "101" // 可选,用于区分不同的小版本
}
}
}
使用HBuilderX打包生成WGT文件。在HBuilderX中,选择“发行”->“原生App-云打包”->“制作自定义更新wgt包”。
2. 应用端处理版本更新
在应用启动时,检查是否有新的WGT包可用,并尝试下载和安装。这里是一个简化的示例代码,用于检查版本并触发更新。
// 检查版本更新
function checkUpdate() {
uni.request({
url: 'https://your-server.com/update/check', // 你的版本检查接口
success: (res) => {
if (res.data.newVersion && res.data.newVersion > uni.getSystemInfoSync().version) {
// 下载并安装WGT包
uni.downloadFile({
url: res.data.wgtUrl, // 新WGT包的URL
success: (downloadRes) => {
const filePath = downloadRes.tempFilePath;
plus.runtime.install(filePath, {}, (e) => {
if (e.code === 0) {
console.log('更新成功');
// 可选择重启应用
plus.runtime.restart();
} else {
console.error('更新失败', e.message);
}
});
},
fail: (err) => {
console.error('下载失败', err);
}
});
} else {
console.log('已是最新版本');
}
},
fail: (err) => {
console.error('检查更新失败', err);
}
});
}
// 应用启动时调用
uni.onLaunch(() => {
checkUpdate();
});
注意事项
- 确保服务器上的
manifest.json
文件中的version
与WGT包一致。 - 在生产环境中,建议使用安全的方式存储和传输版本信息,避免被篡改。
- 处理更新失败的情况,比如提供用户友好的错误提示或回退机制。
通过上述步骤,可以有效避免因版本不匹配导致的热更新失败问题。