1、问题描述
- 自从在主应用中加入SiriShortCut功能之后,打包程序上传至 iTunes Connect 就会出现警告,看其原因描述是CFBundleVersion主应用与子应用的不一致导致的
Prepared archive for uploading
Uploaded with warnings
warning: App Store Connect Operation Warning
WARNING ITMS-90473: "CFBundleVersion Mismatch. The CFBundleVersion value '1.1' of extension 'ukon.app/PlugIns/CHSiriIntent.appex' does not match the CFBundleVersion value '181212.337' of its containing iOS application 'ukon.app'."
2、问题解决
-
如果对工程上的初始配置没有修改过,例如:没有使用脚本动态修改CFBundleVersion,那么可以直接使用以下方法解决
-
2.1 直接修改Build
- 主程序
- siriShortCut子程序
- 只要保证主子程序内容一致就可以了
- 主程序
-
2.2 动态修改Build
- 动态修改Build使用脚本来修改,由于主程序中使用了动态修改,子程序中也需要使用动态修改。我这里由于接的是老项目,不了解工程配置,找了好久才找出原因
- 脚本使用sh脚本
BUILD_REV=`date +%y%m%d`.`git rev-list HEAD | wc -l | awk '{print $1}'` GIT_HASH=`git log --oneline -n 1 | awk '{print $1}'` INFO_PATH="${TARGET_BUILD_DIR}"/${INFOPLIST_PATH} /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${BUILD_REV}" ${INFO_PATH} /usr/libexec/PlistBuddy -c "Delete :GIT_HASH" ${INFO_PATH} /usr/libexec/PlistBuddy -c "Add :GIT_HASH string ${GIT_HASH}" ${INFO_PATH}
- 在主程序与子程序中分别创建脚本文件
- 双击重命名为Update CFBundleVersion(Build Version)
- 展开粘贴以上脚本
- 由于脚本中的拼接还使用到了CFBundleShortVersionString,所以还要保持这里一致
- 主子程序都要修改,其中CFBundleVersion在这里设置无效
- 至此,就可以动态修改保持主子程序CFBundleVersion一致了,得出的构建版本是:日期 + 应用版本号