Xcode生成通用Xcode存档而不是iOS应用程序存档?

3
我正在尝试将我的应用程序上传到App Store Connect,但无法验证我的应用程序。 我还看到标识符和其他信息没有显示出来。为什么会这样?这是个问题吗?如果可以更改,如何更改? 我已经尝试了在[此处][2]中找到的被投票2+的解决方案。
如果有关联的话:我正在使用带有CocoaPods的项目。
info.plist的XML:
[![进入图片描述][1]][1]
[1]: https://istack.dev59.com/kX9tJ.webp
    <?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>

抱歉,我无法按照您的要求进行翻译,因为您没有提供需要翻译的具体内容。

我看到关注者单元格与点赞和评论单元格不同。你能确保在这两个单元格中都编写设置属性字符串的代码吗?即NotifTableViewCell2和NotifTableViewCell。 - AjinkyaSharma
1
@dfgdfgdfgdfg,如果您能提供一个可以成功重现相同错误的示例项目,那么我们或许可以更好地提供帮助。 - Sahil Manchanda
@dfgdfgdfgdfg,您在此处设置了非常高的赏金,但我不知道这是否解决了您的问题。如果您仍需要帮助,请评论说明。 - alxlives
@alxlives 似乎一切都顺利完成了。该应用程序已提交审核。 - user11182243
4个回答

7

为什么会这样?

通常情况下,当xCode无法创建有效的分发存档时,它就会在组织器中以“通用Xcode存档”形式出现在“其他项目”中。

这是个问题吗?

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

如果我可以更改此设置,怎么做?

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

  • 目标 > 管理方案... 中检查您当前的目标是否是具有选定 Shared 标志的有效项目

enter image description here

目标 > 编辑方案... 中检查目标是否是唯一启用存档的目标。还要检查分析和存档选项卡中是否选择了“Release”构建配置。

enter image description here

在“产品 > 分析”(Shift + command + B)中,检查是否没有错误。您可以在导航面板上的最后一个图标中访问报告:

enter image description here

我检查了此链接上的所有2票答案,它们大多涵盖了所有可能的解决方案,但我想再次核对苹果支持页面的故障排除1)您的档案包含头文件。 如果您正在使用静态库,请检查是否有Headers构建阶段。 如果是这样,请删除此阶段,向您的库添加Copy Files build phase,并使用它来导出您的头文件。

enter image description here

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

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

enter image description 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(MacFinder > Applications > Utilities > Keychain Access.app),找到该证书(您可以通过文本“Distribution”进行过滤)并查看其详细信息。绿色标记为名称,括号内的红色标记为ID。

enter image description here

请关闭并重新打开xCode。在窗口 > 组织器中,如果归档位于iOS应用程序下,则可以验证和分发该应用程序。 编辑 要添加iOS发布证书,请在xCode中单击xCode > 首选项 > 帐户 >选择团队,然后单击管理证书...。在加号按钮上,您应该看到iOS Distribution:

enter image description here

将此证书添加到项目中,在钥匙串中检查是否已添加,并将其指向.plist文件。
由于您正在使用签名团队,还需要将该团队添加到.plist中。我已经更新了所需条目的.plist文件。

https://dev59.com/-FwY5IYBdhLWcg3wh4Eq#32655151 为此选项。最后一步说要将此xml添加到部分中...我在哪里添加我添加的xml? - user11182243
在第一个<dict>键内,您需要ApplicationProperties键及其属性<dict>。尝试复制我的有效的.plist文件并替换<<>>标记。 - alxlives
你知道你的Bundle标识符、证书名称和证书ID吗? - alxlives
Yes, I have the information. Please provide the text that needs to be translated. - alxlives
没错。也许现在有了正确的证书,构建将会自动工作。如果不行,再次更改 plist 即可。很高兴它对你起作用了。 - alxlives
显示剩余14条评论

0

对我而言,这发生在 Xcode 12.5.1 上的多个具有扩展的目标项目中。我必须取消其他带有扩展的目标的归档选项。然后再次开始归档以获得直接分发至 Apple。前往 编辑 Scheme... 并取消勾选。尽管以前不需要这样做。

enter image description here


0

我尝试了@alxlives所说的所有方法,但都没有帮助。最终,我通过以下步骤解决了问题:

  • 重新启动Mac电脑
  • 更新我的项目中嵌入的xxx.framework文件
  • 将Cocoapods从1.8.4升级到1.9.1并重新安装pods

你是如何重新安装Pods的?"更新嵌入在我的项目xxx.framework文件中"是指什么? - Andrei F
@AndreiF pod deintegrate && pod install + carthage 更新。 - Nike Kov
好的,谢谢。我尝试了所有方法,包括清除Cocoa缓存,但都没有成功。唯一有效的方法是手动更改归档文件中的Info.plist,并在上传之前重新启动Xcode,但这只是一种丑陋的解决方式 - https://stackoverflow.com/questions/64896305/xcode-creates-generic-archive-of-ios-app-because-of-malformed-incomplete-info-pl - 如果你们有其他想法... - Andrei F

0

这是一个小众的答案,但是 Xcode 13.4.1 和 13.4.2 存在问题,导致存档变成通用的,而“验证应用”按钮被禁用。

构建错误已经在 Shopify Github 上记录了 13.4.1 (链接),我也注意到了使用 13.4.2 构建 Qt 应用程序的问题 (链接)

升级到 Xcode 14.2 解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接