XCode 13运行旧iOS应用报错Info.plist无有效CFBundleVersion怎么办
Xcode 13 运行旧iOS应用CFBundleVersion无效错误解决方案
错误原因
该错误明确指向应用包中的CFBundleVersion(构建版本号)不符合苹果的格式要求,不是缺失,而是内容无效。
合法CFBundleVersion规则
苹果要求CFBundleVersion为最多3个段的正整数字符串,段之间用英文点分隔:
- 合法示例:
1、1.1、2.10.3 - 非法示例:
1.01(含前导零)、1.2beta(含字母)、1.0_2024(含特殊字符)
分步解决步骤
- 第一步:同步双端版本配置
很多旧项目的版本号是和项目配置绑定的,仅修改Info.plist不生效:- 点击Xcode左侧导航栏顶部的项目根节点,在中间TARGETS列表选中你的应用目标
- 切换到「General」标签,找到「Identity」区块
- 确认
Build字段的值为合法格式,且和Info.plist中的Bundle version(即CFBundleVersion)值完全一致 - 同时检查
Bundle versions string, short(即CFBundleShortVersionString,显示给用户的版本号)也符合上述格式要求
- 第二步:检查构建配置的版本变量
如果Info.plist中的版本号用了变量引用,需要确认变量值合法:- 选中应用目标后切换到「Build Settings」标签,搜索
Versioning - 确认
Current Project Version(对应CFBundleVersion)和Marketing Version(对应CFBundleShortVersionString)的值均为合法格式 - 如果你有自定义构建配置(如Debug、Release、自定义的测试环境配置),要确认所有配置下的这两个变量值都合法
- 选中应用目标后切换到「Build Settings」标签,搜索
- 第三步:清理旧构建缓存
旧的缓存文件会保留错误的配置,修改后需要清理才能生效:- 点击顶部菜单栏「Xcode -> Settings -> Locations」
- 点击「DerivedData」项右侧的小箭头打开缓存文件夹,删除对应你项目名称的文件夹
- 退出Xcode重新打开,按下
Command+Shift+K清理项目后重新构建运行
常见无效场景排查
- 版本号中含有中文、字母、下划线、横线等非数字非英文点的字符
- 版本号的分段存在前导零,比如
2.03.1需要修改为2.3.1 - 仅修改了Project级别的配置,没有同步修改Targets级别的配置
内容的提问来源于stack exchange,提问作者Lukas Luke Stateczny
相关产品推荐
相关产品推荐

