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

oiopk7p5  于 2023-01-31  发布在  iOS
关注(0)|答案(4)|浏览(168)

我正在尝试将我的应用上传到App Store Connect,但无法验证我的应用。我还看到标识符和其他信息未显示。这是为什么?有问题吗?如果我可以更改此设置,该如何更改?[![在此处输入图像描述][1]][1]
我试过在[这里][2]找到的东西,那里投了2+。
如果相关:我在做一个关于椰子的项目
用于信息列表的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>

[![在此输入图像说明][3]][3]

bbuxkriu

bbuxkriu1#

这是为什么呢?
这种情况通常发生在xCode无法创建有效的归档以供分发时,因此它只是在管理器的"其他项目"中创建为"通用Xcode归档"。
有问题吗?
可以,因为您将无法将其提交到Apple Store Connect。您无法打包通用归档,也无法提交它们以供审阅。
如果我能改变这一切,怎么做?
首先,我们需要检查项目设置:

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

  • Target > Edit Scheme...中,检查目标是否是唯一启用归档的目标。另外,检查"Analyze"和"Archive"选项卡是否在"Build Configuration"中选择了"Release

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

我检查了this link上的所有2个投票答案,它们大多涵盖了所有可能的解决方案,但我想再次检查Apple's support page troubleshoot

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

如果你使用的是静态库,检查是否有头文件构建阶段。如果有,删除这个阶段,添加一个Copy Files build phase到你的库,并使用它来导出头文件。

    • 2)您的归档包含静态库或框架。**

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

然后再次尝试存档。
如果所有解决方案都不起作用,则可以使用workaround here手动修改归档文件.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>

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

然后关闭并重新打开xCode。在Window > Organizer中,如果归档文件位于iOS Apps下,则可以验证和分发应用。

    • 编辑**

要添加iOS分发证书,请在xCode中点击xCode > Preferences > Accounts >选择团队并点击Manage Certificates...。在Plus button上,您应该会看到iOS分发:

将此证书添加到项目中,如果已添加,则签入keychain,并将其指向. plist文件。
由于您使用的是签名团队,因此还需要将该团队添加到. plist中。我用所需的条目更新了. plist文件。

svdrlsy4

svdrlsy42#

我尝试了所有@alxlives说的,但没有帮助。最后我解决了我的问题:

  • 正在重新启动mac
  • 正在更新嵌入在我的项目xxx.framework文件中的内容
  • 将cocopods从1.8.4更新到1.9.1并重新安装pod
qco9c6ql

qco9c6ql3#

对我来说,这发生在Xcode 12.5.1中,项目中有多个带扩展名的目标。我不得不取消选中其他带扩展名的目标的存档。然后再次启动存档以获得直接分发到苹果。后藤Edit Scheme...并取消选中。这是以前不需要的。

cxfofazt

cxfofazt4#

这是一个利基答案,但似乎有问题的Xcode 13.4.1和13.4.2,导致存档是通用的和'验证应用程序'按钮被禁用。
在Shopify Github上记录了13.4.1和I noted the problem for building a Qt app using 13.4.2的构建错误
升级到Xcode 14.2为我解决了这个问题。

相关问题