uniapp ios 版本号不更新的问题 -- 解决方案

分类:IOS |

使用uniapp开发app, 做App版本更新功能时, 发现IOS打的全量包版本号一直存在问题, 只有使用wgt包才可以修改已安装手要机的版本号, 

plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => { // 获取本地应用资源版本号
    if (wgtinfo && wgtinfo.version) {
      // 更新检查与业务逻辑
    }
});


否则会一直使用之前安装的旧版本号, 导致一直提示更新, Android没问题, 一切正常, 

重现方式一:

  1. 修改manifest.json,versionName: 1.0.0, versionCode: 100,  打包IPA,  并安装此ipa1

  2. 修改manifest.json,versionName: 1.0.0, versionCode: 102,  打包IPA,  并安装此ipa2

  3. 此时检查发现版本号还是100

重现方式二:

  1. 修改manifest.json,versionName: 1.0.0, versionCode: 100,  打包IPA,  并安装此ipa1

  2. 修改manifest.json,versionName: 1.0.0, versionCode: 102,  打包IPA,  并安装此ipa2

  3. 修改manifest.json,versionName: 1.0.0, versionCode: 103,  打包wgt,  并安装此wgt, 此时安装后版本号为 1.0.0.103

  4. 卸载此版本, 再将安装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包:  



image.png


升级uniapp 客户端升级包更新后弹出版本兼容提示相关解决办法:

关闭版本更新的提示框: 

image.png


        "compatible" : {
            "ignoreVersion" : true //true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持
        },



IOS15以上打包必须使用Big Sur 的问题:

  1. 直接使用安心打包, 打出的iOS安装包是无法在iOS15以上版本的手机上安装的

解决方法: 

   1. 将打好的包使用 爱思助手 进行签名

   2. 直接使用Hbuilderx 的 传统打包方式

   3. 在 MacOSX 的 big sur 版本(11及以上) 系统进行打包


阅读( 2803 ) |