繁体   English   中英

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

[英]iOS app submission - archive does not contain an info.plist

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

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

我有同样的问题。

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

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

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

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

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

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

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

我的 info.plist 中已经有“Bundle versions string, short”,但对我来说问题是“Bundle Display Name”不在 info.plist 中,所以我添加了它并且它可以工作。

希望这会帮助你。

谢谢

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

Apple 已发布 了一份技术文档,其中列出了可能导致此问题的问题 截至今日:

  • 缺少 CFBundlePackageType
  • 缺少 CFBundleShortVersionString
  • 缺少 CFBundleVersionString

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

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

为了更加确定,请执行

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

对我来说,我曾经复制了一个 Target 并且构建设置引用了一个不存在的二进制“myApp copy”

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

  1. 安装https://github.com/nomad/shenzhen
  2. 创建 IPA:ipa build
  3. 提交 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 并且我的应用通过了验证!

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM