uniapp ios 版本号不更新的问题 -- 解决方案
使用uniapp开发app, 做App版本更新功能时, 发现IOS打的全量包版本号一直存在问题, 只有使用wgt包才可以修改已安装手要机的版本号,
plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => { // 获取本地应用资源版本号 if (wgtinfo && wgtinfo.version) { // 更新检查与业务逻辑 } });
否则会一直使用之前安装的旧版本号, 导致一直提示更新, Android没问题, 一切正常,
重现方式一:
修改manifest.json,versionName: 1.0.0, versionCode: 100, 打包IPA, 并安装此ipa1
修改manifest.json,versionName: 1.0.0, versionCode: 102, 打包IPA, 并安装此ipa2
此时检查发现版本号还是100
重现方式二:
修改manifest.json,versionName: 1.0.0, versionCode: 100, 打包IPA, 并安装此ipa1
修改manifest.json,versionName: 1.0.0, versionCode: 102, 打包IPA, 并安装此ipa2
修改manifest.json,versionName: 1.0.0, versionCode: 103, 打包wgt, 并安装此wgt, 此时安装后版本号为 1.0.0.103
卸载此版本, 再将安装ipa2, 版本号 居然是 1.0.0.100 ???
搜索了一下相关解决办法, 居然没有人能解决这个问题, 只好自己动手了,
解决方法比较简单:
打包不同场景下的ipa包和wgt包, 解开包内容, 一个个的文件对比, 分析为什么wgt正常, 而ipa就存在问题;
经分析和不断的测试: 原因可能是缓存导致的问题, 即此文件: cmManifestCache.json 第一次生成后即不再生成, 而这里保存着之前manifest.json的版本号, 后续所有打包ipa都会使用这个首次打包的配置文件, 导致后续的ipa文件都是旧的版本号, 而wgt而不受此文件影响, 所以没问题.
解决方法: 删除unpackage/cache/ipa/cmManifestCache.json 文件后再打ipa包, 或直接删除 unpackage/cache/ipa 文件夹后再打ipa包:
升级uniapp 客户端升级包更新后弹出版本兼容提示相关解决办法:
关闭版本更新的提示框:
"compatible" : { "ignoreVersion" : true //true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持 },
IOS15以上打包必须使用Big Sur 的问题:
直接使用安心打包, 打出的iOS安装包是无法在iOS15以上版本的手机上安装的
解决方法:
1. 将打好的包使用 爱思助手 进行签名
2. 直接使用Hbuilderx 的 传统打包方式
3. 在 MacOSX 的 big sur 版本(11及以上) 系统进行打包