uni-app打包app时getSystemInfo获取的appVersion不是应用版本号,appWgtVersion才是应用版本号
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 |
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 返回的 appVersion
和 appWgtVersion
的区别。appVersion
通常指的是操作系统的版本号,而 appWgtVersion
指的是当前应用的版本号。为了确保在应用中正确获取和应用版本号,可以通过以下代码进行处理。
首先,确保你在应用的 manifest.json
文件中已经设置了正确的版本号:
{
"mp-weixin": { // 或者其他平台配置
"appid": "your-app-id",
"setting": {
"versionName": "1.0.0", // 应用版本号
"versionCode": "100" // 版本代码
}
}
}
然后,在你的代码中,可以通过 uni.getSystemInfoSync
或 uni.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
中的版本号配置,上述方法应能正确获取到应用版本号。如果是其他平台,可能需要根据平台特性进行适当的调整。