iOS 应用提交 - 存档不包含 info.plist

Posted

技术标签:

【中文标题】iOS 应用提交 - 存档不包含 info.plist【英文标题】:iOS app submission - archive does not contain an info.plist 【发布时间】:2014-09-30 23:45:20 【问题描述】:

我正在尝试使用给我的旧应用程序将存档提交到应用程序商店。我不断收到两个错误 CFBundleShortVersionString 键必须在 plist 中,更麻烦的是“包不包含 plist”

这两个项目都存在于应用程序中。我将 CFBundleShortVersionString 键添加到 plist 中,并且 plist 文件肯定存在,否则我永远无法构建它。这里有什么问题?

【问题讨论】:

在目标的“构建设置”中,您在“Info.plist 文件”部分看到了什么? @aus10c plist 文件的名称和其他一些设置。我在找什么? 我只是想说和 ev0lution 写的一样的话 :) 【参考方案1】:

我遇到了同样的问题。

我刚刚在 Info.plist 中添加了一个带有键 Bundle versions string, short 的新行,其中包含一个值的版本,然后它通过了验证,没有进一步的错误。

【讨论】:

【参考方案2】:

就我而言:我第一次尝试上传存档时收到此错误消息。然而,我第二次尝试再次编译时,计算机的硬盘空间不足,而且第一次也因为这个原因,它似乎没有写入 plist 文件。

释放硬盘空间并再次尝试(也重新启动 XCode 之后)后,它工作正常。

【讨论】:

【参考方案3】:

在我的情况下,我在 info.plist 中有一个错误/错误的可执行文件名条目,我将其替换为 $EXECUTABLE_NAME 并解决了问题。

【讨论】:

【参考方案4】:

如果上传工具没有找到您的 .plist 文件,这就是它认为它不包含 CFBundleShortVersionString 键的原因。由于某种原因,应用程序可以在没有任何 plist 文件的情况下编译!

首先,确保您的 plist 文件存在于您的项目导航器中,并且它没有以红色突出显示。 (以防它在光盘上被删除或重命名,无论出于何种原因)

在您的 Xcode 项目中,选择您应用的目标,然后选择“构建设置”选项卡。搜索“plist”以过滤结果。在“Packaging”下,检查“Info.plist”的值。这应该是您的 plist 文件的名称,相对于您的 Xcode 项目。例如,“MyApp/MyApp-Info.plist”。如果为空,请将其更改为您的 plist 文件的名称并重新生成。

【讨论】:

“打包”下的值为“appName-plist”。没有路径。但是 plist 位于项目的一些子目录中。该路径是“MyApp/MyApp-Info.plist。所以我将添加第一部分,看看它是否有效。 @JMD 如果它位于子目录(实际目录,而不仅仅是 Xcode 组)中,那么我相信它们应该作为路径的前缀。我不太确定 Xcode 目前做了什么,但它用于在 AppName 文件夹中创建 plist 文件,该文件夹包含在 Info.plist 设置中。我刚才测试过了,没有文件夹名,找不到plist文件。 我以为是在子目录下,其实只是一个xcode组。 将“MyApp”添加到路径的开头不起作用。它找不到它来构建档案。这很奇怪,如果我更改 plist 的路径,那么构建会失败,因为它找不到 plist 文件。但是当存档被制作并且我尝试提交它时,错误说它不存在。 @JMD 这不好!你试过清理你的项目吗? Product -> Clean,按住 Option 键得到 Product -> Clean Build Folder【参考方案5】:

我的 info.plist 中已经有“捆绑版本字符串,短”,但对我来说问题是“捆绑显示名称”不在 info.plist 中,所以我添加了它并且它有效。

希望这会对你有所帮助。

谢谢

【讨论】:

【参考方案6】:

当您的应用中嵌入了应用扩展时,您必须检查(启用)MainApp-Info.plist 的目标成员资格对这些应用扩展以及主应用程序。在 Xcode 文件检查器中执行此操作。

【讨论】:

【参考方案7】:

Apple 已发布a technical document that lists the possible issues that can cause this。从今天开始:

缺少 CFBundlePackageType 缺少 CFBundleShortVersionString 缺少 CFBundleVersionString

【讨论】:

【参考方案8】:

我遇到了同样的两个错误消息。 Info.plist 实际上在包中,但它不包含 CFBundleShortVersionString。第一个错误(存档不包含Info.plist)是苹果系统错误给出的。

在我的情况下,我在项目中有多个目标,并且我将 CFBundleShortVersionString 添加到了错误的目标(不是我与 Apple 验证的目标)。

为了更加确定,做

导出有问题的存档以进行临时分发 解压 *.ipa 文件 检查 Payload/your.app/Info.plist 文件 检查是否包含CFBundleShortVersionString

【讨论】:

【参考方案9】:

对我来说,前段时间我复制了一个 Target,而构建设置引用了一个不存在的二进制“myApp 副本”

【讨论】:

【参考方案10】:

我设法从上传者那里得到了有意义的错误:

    安装https://github.com/nomad/shenzhen 创建 IPA:ipa build 提交 IPA:ipa 分发:itunesconnect -e -w -a ACCOUNT_NAME -p PASSWORD -f ./AppName.ipa -i APPLE_ID_OF_THE_APP --verbose

通过这样做,我收到以下错误: 错误 ITMS-90183:“无效的捆绑操作系统类型代码。应用程序捆绑的 Info.plist 文件中的“捆绑操作系统类型代码”[CFBundlePackageType] 的值必须是 [APPL] 之一。”

添加了 CFBundlePackageType,我的应用通过了验证!

我认为通过这种方式,您可以在提交过程中找到其他问题,并提供更有意义的信息。

【讨论】:

【参考方案11】:

您不需要编辑您的 plist 文件。只需设置内部版本号(在目标 - 常规中的版本号下方)。这将作为 Bundle Version 传播到 plist 文件中。

这也发生在我身上,我删除了内部版本号,结果是你的错误。当我只插入 1 时,问题就解决了。

【讨论】:

【参考方案12】:

确保 Info.plist 的 Target Membership(在文件检查器中)显示您选择的项目。在我的情况下,它不是。勾选复选框解决了这两个问题。

【讨论】:

以上是关于iOS 应用提交 - 存档不包含 info.plist的主要内容,如果未能解决你的问题,请参考以下文章

提交通用 iOS 应用 - 存档

iOS - 存档的 IPA 大小与应用商店报告的大小不匹配

如何验证提交到应用商店的存档代码

“存档”未出现

无法归档 iOS 应用程序?

Sqlite 文件是不是包含在提交到 App Store 中?