uni-app打包app时getSystemInfo获取的appVersion不是应用版本号,appWgtVersion才是应用版本号

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

uni-app打包app时getSystemInfo获取的appVersion不是应用版本号,appWgtVersion才是应用版本号
打包app getSystemInfo 获取appVersion不是应用版本号,appWgtVersion才是应用版本号

这个13.5.3 是个啥?

{  
  "SDKVersion": "",  
  "appId": "__UNI__A1B7377",  
  "appLanguage": "zh-Hans",  
  "appName": "和信",  
  "appVersion": "13.5.3",  
  "appVersionCode": 130503,  
  "appWgtVersion": "1.0.1",  
  "brand": "oneplus",  
  "browserName": "chrome",  
  "browserVersion": "68.0.3440.70",  
  "deviceBrand": "oneplus",  
  "deviceId": "351542029996218,351542029996218",  
  "deviceModel": "GM1910",  
  "deviceOrientation": "portrait",  
  "devicePixelRatio": 3,  
  "deviceType": "phone",  
  "errMsg": "getSystemInfo:ok",  
  "language": "zh-CN",  
  "model": "GM1910",  
  "osAndroidAPILevel": 25,  
  "osLanguage": "zh-CN",  
  "osName": "android",  
  "osTheme": "light",  
  "osVersion": "7.1.2",  
  "pixelRatio": 3,  
  "platform": "android",  
  "romName": "HydrogenOS",  
  "romVersion": "",  
  "safeArea": {  
    "left": 0,  
    "right": 360,  
    "top": 24,  
    "bottom": 640,  
    "width": 360,  
    "height": 616  
  },  
  "safeAreaInsets": {  
    "top": 24,  
    "right": 0,  
    "bottom": 0,  
    "left": 0  
  },  
  "screenHeight": 640,  
  "screenWidth": 360,  
  "statusBarHeight": 24,  
  "system": "Android 7.1.2",  
  "ua": "Mozilla/5.0 (Linux; Android 7.1.2; GM1910 Build/N2G48B; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.70 Mobile Safari/537.36 uni-app (Immersed/24.0)",  
  "uniCompileVersion": "3.5.3",  
  "uniPlatform": "app",  
  "uniRuntimeVersion": "3.5.3",  
  "version": "1.9.9.81428",  
  "windowBottom": 50,  
  "windowHeight": 590,  
  "windowTop": 0,  
  "windowWidth": 360  
}
项目 信息
开发环境 Android
版本号 1.0.1
项目创建方式 uni-app

11 回复

uni.getSystemInfo 中返回的 appVersion 字段对应的是:具体平台标准下应用的版本名称。
以Android平台 为例:
如果是标准基座的调试模式,此时用户的资源是以wgt的形式 寄生在 标准基座上运行的,所以获取到的就是 标准基座的版本信息
如果是自定义基座或者云打包,此时用户在mainifest.json中的版本配置会写入apk,所以获取到的就是wgt中的应用版本信息。
文档已强化相关字段说明: https://uniapp.dcloud.net.cn/api/system/info.html#系统信息的概念


我也遇到了,在app端返回的版本号是错误的,h5上又是正确的。楼主解决了吗?

打包以后就是正确的了

回复 3***@qq.com: 这算不算是一种bug呢,应该开发和打包一致才对呀

appVersion 是 manifest 中应用版本名称 appWgtVersion 是应用资源(wgt)的版本名称。是 wgt 的版本名称

打包以后就正确了

appVersion 是 manifest 中应用版本名称 我填的是1.0.1 但是显示的是"13.5.3",

文档中说明下吧,调试的时候获取到的确实是错误的,得到的应该是基座版本号。而且,appVersionCode在app中获取的是数字,在h5中获取的又是字符串

可以使用自定义基座

制作自定义调试基座,不要用“标准基座运行”,不然 uni.getSystemInfoSync()获取的 appVersion 是标准基座的版本号,不是mainfest.json中配置的应用版本号。

在uni-app中打包应用时,确实会遇到getSystemInfo API 返回的 appVersionappWgtVersion 的区别。appVersion 通常指的是操作系统的版本号,而 appWgtVersion 指的是当前应用的版本号。为了确保在应用中正确获取和应用版本号,可以通过以下代码进行处理。

首先,确保你在应用的 manifest.json 文件中已经设置了正确的版本号:

{
  "mp-weixin": { // 或者其他平台配置
    "appid": "your-app-id",
    "setting": {
      "versionName": "1.0.0", // 应用版本号
      "versionCode": "100"   // 版本代码
    }
  }
}

然后,在你的代码中,可以通过 uni.getSystemInfoSyncuni.getSystemInfo 异步获取系统信息,并访问 appWgtVersion 来获取应用版本号。下面是一个示例代码,展示如何在页面加载时获取并显示应用版本号:

// 使用同步方法获取系统信息
Page({
  data: {
    appVersion: ''
  },
  onLoad: function () {
    const systemInfo = uni.getSystemInfoSync();
    this.setData({
      appVersion: systemInfo.appWgtVersion // 设置应用版本号
    });
    console.log('应用版本号:', systemInfo.appWgtVersion);
  }
});

// 或者使用异步方法获取系统信息
Page({
  data: {
    appVersion: ''
  },
  onLoad: function () {
    uni.getSystemInfo({
      success: (res) => {
        this.setData({
          appVersion: res.appWgtVersion // 设置应用版本号
        });
        console.log('应用版本号:', res.appWgtVersion);
      },
      fail: (err) => {
        console.error('获取系统信息失败:', err);
      }
    });
  }
});

在以上代码中,无论是使用同步方法 uni.getSystemInfoSync 还是异步方法 uni.getSystemInfo,都可以获取到 appWgtVersion,即应用版本号,并将其显示在页面上或用于其他逻辑处理。

请注意,uni-app 在不同平台(如微信小程序、App、H5等)上的行为可能略有不同,确保在目标平台上测试代码的正确性。另外,如果你的应用是原生App,并且使用了 manifest.json 中的版本号配置,上述方法应能正确获取到应用版本号。如果是其他平台,可能需要根据平台特性进行适当的调整。

回到顶部