我正试图用我得到的一个旧应用程序向应用商店提交一个存档。我一直收到两个错误CFBundleShortVersionString密钥必须在plist中,更麻烦的是"包不包含plist"
这两个项目都存在于应用程序中。我在plist中添加了CFBundleShortVersionString键,plist文件肯定存在,否则我永远无法构建它。这里的问题是什么?
我也遇到了同样的问题。
我只是在Info.plist中添加了一个带有关键字Bundle versions string, short
的新行,其中包含一个值的版本,然后它通过了验证,没有出现任何错误。
在我的情况下:我第一次尝试上传档案时收到了这个错误消息。然而,当我第二次尝试再次编译时,计算机的硬盘空间不足,而且第一次似乎也因为这个原因没有写入plist文件。
在释放硬盘空间并重试(也在重新启动XCode之后)后,它运行良好。
在我的情况下,我在可执行文件名的info.plist中有一个错误/错误的条目,我用${Executable_name}替换了它,这就解决了问题。
如果上传工具找不到你的.plist文件,那就是它认为它不包含CFBundleShortVersionString密钥的原因。出于某种原因,应用程序可以在没有任何plist文件的情况下编译!
首先,确保你的plist文件存在于你的项目导航器中,并且没有用红色突出显示
在Xcode中的项目中,选择应用程序的目标,然后选择"构建设置"选项卡。搜索"plist"以筛选结果。在"打包"下,检查"Info.plist"的值。这应该是你的plist文件的名称,相对于你的Xcode项目。例如,"MyApp/MyApp Info.plist"。如果为空,请将其更改为plist文件的名称并重新生成。
我的info.plist中已经有"Bundle versions string,short",但对我来说问题是"Bundle Display Name"不在info.plist里,所以我添加了它,它有效。
希望这对你有帮助。
感谢
当您的应用程序中嵌入了应用程序扩展时,您必须检查(启用)MainApp-Info.plist的目标成员资格,使其成为的应用程序扩展以及主应用程序。在Xcode文件检查器中执行此操作。
苹果公司发布了一份技术文档,列出了可能导致这种情况的问题。截至今日:
- 缺少CFBundlePackageType
- 缺少CFBundleShortVersionString
- 缺少CFBundleVersionString
我有同样的问题,有同样的两条错误消息。Info.plist实际上在包中,但它不包含CFBundleShortVersionString。第一个错误(档案不包含Info.plist)是由苹果系统错误给出的。
在我的案例中,我在项目中有几个目标,并且我将CFBundleShortVersionString添加到了错误的目标(而不是我正在与Apple验证的目标)。
为了更加确定,进行
- 导出有问题的存档以进行临时分发
- 解压缩*.ipa文件
- 检查Payload/your.app/Info.plist文件
- 检查是否包含CFBundleShortVersionString
对我来说,我之前复制了一个Target,构建设置引用了一个不存在的二进制"myApp副本"
我设法从上传程序中得到了有意义的错误:
- 安装https://github.com/nomad/shenzhen
- 创建IPA:IPA生成
- 提交IPA:IPA distribute:itunesconnect-e-w-a ACCOUNT_NAME-p密码-f/AppName.ipa-i APPLE_ID_OF_THE_APP--详细
通过这样做,我收到了以下错误:错误ITMS-90183:"无效的捆绑操作系统类型代码。应用程序捆绑包的Info.plist文件中的'Bundle OS Type Code'[CFBundlePackageType]的值必须是[APPL]之一。"
添加了CFBundlePackageType,我的应用程序通过了验证!
我认为通过这种方式,您可以在提交过程中发现其他问题(如果有的话),并获得更有意义的信息。
您不需要编辑您的plist文件。只需设置内部版本号(位于Targets-General中版本号的正下方)。这将以捆绑版本的形式传播到plist文件中。
这也发生在我身上,我删除了内部版本号,结果是你的错误。当我只插入1时,问题就解决了。
确保Info.plist的Target Membership
(在File Inspector中)显示所选项目。就我而言,事实并非如此。勾选复选框解决了这两个问题。