uni-app热更新失败 安装wgt文件失败[-1205] WGT安装包中manifest.json文件的version版本不匹配

发布于 1周前 作者 phonegap100 来自 Uni-App

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包一致。
  • 在生产环境中,建议使用安全的方式存储和传输版本信息,避免被篡改。
  • 处理更新失败的情况,比如提供用户友好的错误提示或回退机制。

通过上述步骤,可以有效避免因版本不匹配导致的热更新失败问题。

回到顶部