uniapp系列-uni.getAppBaseInfo() versionCode appVersion 值不对应该怎么解决?


今天看到一个BUG

问题描述

问题分析

  • 首先我们需要搞清楚我们是使用什么方式打的包,是uniapp云打包,安心打包,还是自定义壳子打包
  • 不同方式打包的原理不一样,所以会得到不一样的结果
  • 不同打包方式获取app info 的代码也可以有不同的写法
  • 我们的代码会运行在各种不同的情况下,所以要用不同的代码来处理

应用代码调试所处的各种情况讲解

  • 安心打包:App云端打包时需要将应用代码、打包证书等提交到DCloud云端打包机,在云端打包机的原生开发环境中生成安装包apk/ipa。 DCloud云端服务器虽然不会保存开发者应用代码和证书等信息,但开发者可能还是不放心,或者担心在网络传输过程中可能存在拦截泄漏的风险。
  • 标准基座运行:因手机差异较大,HBuilder并没有提供App的模拟器。不管uni-app或5+App/wap2app项目,都需要连接真实的手机或手机模拟器来运行测试,称之为“真机运行”。
  • 自定义基座:自定义运行基座可以所有配置生效(主要是manifest.json的配置)
  • 原生壳子自定义集成uni小程序SDK形式:uni小程序SDK,是为原生App打造的可运行基于 uni-app 开发的小程序前端项目的框架,从而帮助原生App快速获取小程序的能力

观察对比

标准基座运行

原生壳子自定义集成uni小程序SDK形式

问题解决

情况1:

如果我们是使用云打包,其实我们的代码是被打包成wgt的格式,放进了官方提供的壳子里,这种情况下,我们应该使用这个方式去获取versionCode appVersion信息

const getAppInfo = () => {
		plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
			console.log("云打包,安心打包方式获取设备信息:");
			console.log(wgtinfo);
		});
	}

情况2:

  • 如果我们使用自定义壳子,自己使用uniapp提供的sdk做了一个原生壳子等方式的话,我们可以使用这个代码来获取versionCode appVersion信息,这里还可以区分环境查看信息
  • hostVersion 是原生壳子里的配置版本号
  • appVersion 是uniapp项目配置的版本号
const getAppBaseInfo = () => {
		let res = uni.getAppBaseInfo()
		console.log("其他方式打包获取APP信息");
		console.log(res);
		uni.showModal({
			title: "其他方式打包获取APP信息",
			content: JSON.stringify(res),
		});
	}

今天就写到这里啦~

  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

posted @ 2023-06-23 01:05  糖~豆豆  阅读(253)  评论(0编辑  收藏  举报
Live2D