Xcode 创建通用 Xcode 存档而不是 iOS 应用程序存档?

3 xcode ios app-store-connect

我正在尝试将我的应用程序上传到应用程序商店连接,但无法验证我的应用程序。我还看到标识符和其他信息没有显示。为什么是这样?这是个问题吗?如果我可以改变这一点,如何改变? [![在此处输入图像描述][1]][1]

我已经尝试过[此处][2]中发现的投票为2+的东西。

如果它相关:我正在使用带有 cocoapods 的项目

info.plist 的 XML:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ArchiveVersion</key>
    <integer>2</integer>
    <key>CreationDate</key>
    <date>2019-09-01T20:47:53Z</date>
    <key>Name</key>
    <string>FinalAppPrj</string>
    <key>SchemeName</key>
    <string>FinalAppPrj</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

[![在此处输入图像描述][3]][3]

alx*_*ves 7

为什么是这样?

当 xCode 无法创建有效的分发存档时,通常会发生这种情况,因此它只是在管理器的“其他项目”中创建为“通用 Xcode 存档”。

这是个问题吗?

是的,因为您将无法将其提交到 Apple Store Connect。您不能打包通用档案,也不能提交它们以供审核。

如果我可以改变这一点,如何改变?

首先,我们需要检查项目设置:

  • 检查Target > Manage Schemes...当前目标是否是Shared已选择标志的有效项目

在此输入图像描述

  • 检查Target > Edit Scheme...目标是否是唯一启用存档的目标。另请检查“分析”和“存档”选项卡是否已在“构建配置”中选择“发布”

在此输入图像描述

  • Product > Analyze检查( )中Shift + command + B是否有错误。您可以在导航器面板上的最后一个图标中访问报告:

在此输入图像描述

我检查了此链接上的所有 2 票答案,它们大多涵盖了所有可能的解决方案,但我想仔细检查Apple 的支持页面故障排除

1) 您的存档包含头文件。

如果您使用静态库,请检查是否存在标头构建阶段。如果是这样,请删除此阶段,将 a 添加Copy Files build phase到您的库中,然后使用它导出头文件。

在此输入图像描述

2) 您的存档包含静态库或框架。

在这种情况下,库和框架需要将标志skip install设置为YES

在此输入图像描述

然后尝试再次存档。

如果所有解决方案都不起作用,这里有一个解决方法,包括.plist手动修改存档文件并添加缺少的信息。可以访问:

  • 归档您的项目
  • 组织者将展示通用 Xcode 存档
  • 右键单击,在查找器中显示
  • 右键单击,显示包内容
  • 在 XML 编辑器中打开 Info.plist 文件

您的有效.plist文件将如下所示:

只需替换PASTE_YOUR_BUNDLE_IDENTIFIER_HERE为您的捆绑包标识符、 PASTE_YOUR_CERTIFICATE_NAME_HERE您的证书名称、PASTE_YOUR_CERTIFICATE_ID_HERE您的证书 ID 和PASTE_YOUR_TEAM_ID_HERE您的团队 ID。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ApplicationProperties</key>
    <dict>
        <key>ApplicationPath</key>
        <string>Applications/FinalAppPrj.app</string>
        <key>CFBundleIdentifier</key>
        <string>PASTE_YOUR_BUNDLE_IDENTIFIER_HERE</string>
        <key>CFBundleShortVersionString</key>
        <string>1.0</string>
        <key>CFBundleVersion</key>
        <string>1</string>
        <key>SigningIdentity</key>
        <string>iPhone Distribution: PASTE_YOUR_CERTIFICATE_NAME_HERE (PASTE_YOUR_CERTIFICATE_ID_HERE)</string>
        <key>Team</key>
        <string>PASTE_YOUR_TEAM_ID_HERE</string>
    </dict>
    <key>ArchiveVersion</key>
    <integer>2</integer>
    <key>CreationDate</key>
    <date>2019-09-01T20:47:53Z</date>
    <key>Name</key>
    <string>FinalAppPrj</string>
    <key>SchemeName</key>
    <string>FinalAppPrj</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

要检查证书名称和 ID,最简单的方法是打开Keychain Access.app(Mac Finder > Applications > Utilities > Keychain Access.app),找到证书(可以通过文本“分发”进行筛选)并查看其详细信息。绿色标记的是名称,红色标记是括号内的 ID。

在此输入图像描述

然后关闭并重新打开 xCode。在 中Window > Organizer,如果存档位于 iOS 应用程序下,则您可以验证并分发该应用程序。

编辑

要添加 iOS 分发证书,请在 xCode 中单击xCode > Preferences > Accounts >选择团队,然后单击Manage Certificates...。在上Plus button你应该看到 iOS Distribution:

在此输入图像描述

将此证书添加到项目中,检查钥匙串是否添加到那里并将其指向 .plist 文件。

当您使用签名团队时,您还需要将该团队添加到 .plist 中。我使用所需的条目更新了 .plist 文件。