【问题标题】:M1 "Command ValidateEmbeddedBinary failed with a nonzero exit code" Archiving Error in XcodeM1“命令 ValidateEmbeddedBinary 失败,退出代码非零”Xcode 中的存档错误
【发布时间】:2021-10-15 23:37:30
【问题描述】:

我从 macOS Catalina (10.15.7) 升级到 Big Sur (11.5.1),从 Intel i7 MacBook Pro 升级到 M1 iMac,随后从 12.4 升级到 Xcode 12.5.1

iOS 应用程序将在设备以及模拟器上编译和运行。但是,如果我尝试存档,我会收到这篇文章的名义错误。错误类型引用了 Info.plist 或 Watch 应用程序,但它是神秘的并且不是那么具体。我怀疑这与我的伴侣手表应用有关。

ValidateEmbeddedBinary /Users/$USER/Library/Developer/Xcode/DerivedData/$PROJ-hkuuspnqxnzkxfdjlwwluxskiqbs/Build/Intermediates.noindex/ArchiveIntermediates/Watch/BuildProductsPath/Release-iphoneos/$PROJ.app/Watch/Watch.app (in target '$PROJ' from project '$PROJ')
cd /Users/$USER/Documents/$PROJ/$PROJ/Applications/Xcode.app/Contents/Developer/usr/bin/embeddedBinaryValidationUtility /Users/$USER/Library/Developer/Xcode/DerivedData/$PROJ-hkuuspnqxnzkxfdjlwwluxskiqbs/Build/Intermediates.noindex/ArchiveIntermediates/$PROJ/BuildProductsPath/Release-iphoneos/$PROJ.app/Watch/Watch.app -signing-cert 0B2269280E4CC1330AD714C0EC8A51DF24A35DB9 -info-plist-path /Users/$USER/Library/Developer/Xcode/DerivedData/$PROJ-hkuuspnqxnzkxfdjlwwluxskiqbs/Build/Intermediates.noindex/ArchiveIntermediates/$PROJ/InstallationBuildProductsLocation/Applications/$PROJ.app/Info.plist

我已经成功地将它归档两次——似乎是在项目级别进行了重大更改之后。一旦我嵌入了一个框架并将其存档——然后我添加了一个权利文件,并在 xcproject.pbxproj 文件中添加了一行指向它。生成一个最小的工作示例将很棘手,因为我怀疑这是大型项目中的竞争条件。

【问题讨论】:

    标签: ios xcode watchkit apple-m1 archiving


    【解决方案1】:

    找到可靠的解决方法(2021 年 12 月 29 日更新):

    我有另一个解决方法(可能的解决方案),它似乎比我的其他答案更可靠,因为我的 iOS 应用程序和 watchOS 应用程序似乎都在编译时没有编译时错误(我现在遇到运行时错误!)。这个 SO 接受的答案有一些帮助:Remove & Re-add the WatchKit extension

    尽管重读了几次,我还是无法遵循/理解第二条指令。我通过按“+”并按“新复制文件阶段”手动重新添加它,然后手动输入以前存在的信息,例如子路径字段 ($(CONTENTS_FOLDER_PATH)/Watch) 并添加 Watch.app 作为“名称”下的引用。

    我还启用了“仅在安装时复制”,之后它似乎可以可靠地编译。它似乎将阶段从“嵌入监视内容”重命名为“复制文件”,这是我可以看到的唯一区别以及复选框。

    我不知道为什么会这样或者之前有什么问题。只是这些步骤对我有帮助。

    发现不可靠的解决方法(2021 年 10 月 29 日更新):

    将其留在这里以防万一它可能对某人有用,但这是以前的答案。

    我发现一个不可靠的解决方法是存档“Watch”应用程序。这可能会成功,也可能不会成功,但是尝试归档普通的 iOS 应用程序将有更好的机会成功生成归档文件。这再次强化了可能存在欺骗性的竞争条件。

    我在 Xcode 13 中也遇到过这种情况,但可以通过重新启动机器、清理和删除派生数据来构建它。

    找到另一个解决方法:

    包依赖项 (SPM) 与条目框架、库和嵌入式内容不匹配。我手动更新了它们,它现在似乎可以工作了。我错过了 SwiftHEXColors。但是我仍然认为存在竞争条件,因为它现在可以重现。

    抱歉,我以为我已经解决了,但问题又回来了!

    【讨论】:

    • 我遇到了类似的问题,我对包所做的更改没有按预期由 Xcode 隐式更新。这很不幸,但您开始意识到这是一种可能性,这为您提供了一个专注于搜索的地方。很高兴你解决了!
    【解决方案2】:

    问题

    • ValidateEmbeddedBinary command 有问题
    • SwiftUI 预览在 M1 上不起作用(我知道它与本主题无关,但由于该解决方案适用于此,它可能对某人有用)

    说明

    我在 M1 上遇到了同样的错误,因为我在使用其他人的 Mac 与 Intel 的示例。

    环境

    • Xcode 13.1
    • MacOS 12.1
    • MacBook Pro 2020 M1

    解决方案

    要解决此问题,您需要:

    1. 取消选中 Xcode.app 中的“使用 Roseta 打开”



    1. 然后转到 “构建设置” 并设置 “仅构建活动架构”“排除架构” 的参数,如我的每个目标的屏幕截图!



    1. 要修复预览不工作的错误,请务必在单击画布上的 “恢复” 按钮之前使用模拟器

    我希望这能让你的生活更轻松,祝你好运!

    【讨论】:

      猜你喜欢
      • 2021-05-16
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2022-07-30
      • 2021-02-03
      • 1970-01-01
      • 2021-02-21
      • 2023-03-27
      相关资源
      最近更新 更多