【问题标题】:Xcode 8 can't archive "Command /usr/bin/codesign failed with exit code 1"Xcode 8 无法归档“命令 /usr/bin/codesign 失败,退出代码为 1”
【发布时间】:2017-01-19 20:28:19
【问题描述】:

我在 macOS Sierra 上的 Xcode 8 上遇到了一个严重问题。 当我尝试构建我的应用程序时,我遇到了以下问题。

CodeSign /Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Products/Debug-iphonesimulator/MyApp.app
cd /Users/me/Desktop/MyAppFolder1/MyAppFolder2/MyAppxcode
export CODESIGN_ALLOCATE=/Users/me/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
export PATH="/Users/me/Downloads/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Users/me/Downloads/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

Signing Identity:     "-"

/usr/bin/codesign --force --sign - --timestamp=none /Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Products/Debug-iphonesimulator/MyApp.app

/Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Products/Debug-iphonesimulator/MyApp.app: resource fork, Finder information, or similar detritus not allowed
Command /usr/bin/codesign failed with exit code 1

然后我在终端中执行了https://forums.developer.apple.com/thread/48905,如下所示,它起作用了。但是一旦我清理干净,问题又回来了。

cd /Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Products/Debug-iphonesimulator/MyApp

ls -al@ *

xattr -c *

并且此解决方案不适用于具有以下问题的存档。有什么解决办法吗?

CodeSign /Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Intermediates/ArchiveIntermediates/MyApp/InstallationBuildProductsLocation/Applications/MyApp.app
cd /Users/me/Desktop/MyAppFolder1/MyAppFolder2/MyAppxcode
export CODESIGN_ALLOCATE=/Users/me/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
export PATH="/Users/me/Downloads/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Users/me/Downloads/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

Signing Identity:     "iPhone Developer: My Name (**********)"
Provisioning Profile: "iOS Team Provisioning Profile: com.**********.*********"
                  (********-****-****-****-************)

/usr/bin/codesign --force --sign **************************************** --entitlements /Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Intermediates/ArchiveIntermediates/MyApp/IntermediateBuildFilesPath/MyApp.build/Release-iphoneos/MyApp.build/MyApp.app.xcent --timestamp=none /Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Intermediates/ArchiveIntermediates/MyApp/InstallationBuildProductsLocation/Applications/MyApp.app

/Users/me/Library/Developer/Xcode/DerivedData/MyApp-gnoiiwnelmxzdidnijaswisrwdqe/Build/Intermediates/ArchiveIntermediates/MyApp/InstallationBuildProductsLocation/Applications/MyApp.app: resource fork, Finder information, or similar detritus not allowed
Command /usr/bin/codesign failed with exit code 1

【问题讨论】:

  • 你找到解决办法了吗?我大约 2 周前下载了 Xcode 8,并用它签署了同一个应用程序。几天前我安装了 macOS Sierra(我之前有 El Capitan),现在它没有签署同一个应用程序。
  • 这里也一样,这让我发疯了。只有当我有一个使用 CocoaPods 的项目时才会发生这种情况。
  • @noisedan 这里没有 CocoaPods,也有问题。我不认为它与豆荚有关。但它似乎是项目特定的。例如,这发生在我没有 pod 的 macOS 应用程序上,但我有一个带有 pod 的 iOS 应用程序并且它的签名完美。
  • 在此处查看 TimeVision 响应,为我工作forums.developer.apple.com/thread/48905
  • @noisedan 它解决了我在调试版本上的问题,但现在我遇到了与 OP 完全相同的问题:当我尝试存档时它失败了(我必须这样做才能提交给应用程序商店)

标签: ios xcode macos build archive


【解决方案1】:

这是由文件系统上具有额外属性的某些资源文件引起的,可能是由 macOS Sierra 引起的(因为我在升级到 macOS Sierra 后开始使用它)。

尝试在整个DerivedData 文件夹上执行xattr -c *(如https://forums.developer.apple.com/message/178039#178039 中的答案所述):

cd ~/Library/Developer/Xcode/DerivedData
xattr -c *

仅在构建文件夹上删除属性为我解决了调试时的问题。删除整个 DerivedData 文件夹的属性也为我修复了归档。请注意,它可能会导致其他后果(尽管可能性很小),但您始终可以删除 DerivedData 文件夹,它会重新生成,以防万一发生任何损坏。

另外,如果仍然失败,在执行命令后清理项目(而不是构建文件夹)是个好主意。

【讨论】:

  • 感谢您的解释 - 总是更好地理解发生了什么,而不是盲目地复制粘贴终端命令。
【解决方案2】:

我在 Apple 论坛中找到了这个解决方案

cd ~/Library/Developer/Xcode/DerivedData
xattr -rc .

xattr -rc ~/Library/Developer/Xcode/DerivedData

【讨论】:

  • 发现这个的天才是谁?非常感谢!
  • 这对我也有用。你是救生员!我花了几个小时在这上面。
  • 在 Xcode 8.1 和 mac sierra 上也为我工作。谢谢!
  • 这行得通,但我每次在 XCode 中创建新应用时都必须这样做!
  • 修复了我在 macOS Sierra、XCode 8.2 上损坏的 Jenkins 构建。
【解决方案3】:

对我来说是这样的:

cd ~/Library/Developer/Xcode/DerivedData
xattr -dr com.apple.FinderInfo *

然后重建

【讨论】:

  • 在 macOS Sierra 上为我工作。谢谢!
  • 为我保存。我什么都试过了。运行 xattr -c * 也没有帮助。
【解决方案4】:

解决方案 1:

您可以尝试像 Mark McCorkle 回答的文件特定 bash 命令。

在终端中,进入项目根目录,并一一执行命令

  find . -type f -name '*.jpeg' -exec xattr -c {} \;
  find . -type f -name '*.png' -exec xattr -c {} \;
  find . -type f -name '*.tif' -exec xattr -c {} \;

清理 Xcode 并重新构建。完成。

解决方案 2:

您可以通过查找包含查找器信息的文件来解决此问题。

在终端中,进入项目根目录并执行

ls -alR@ . > kundapura.txt

这会在当前目录中创建 kundapura.txt。现在搜索 com.apple.FinderInfo 并清除所有文件的此属性。你可以这样做

xattr -c <filename>
Example: xattr -c guru.png

清除所有内容后,您就可以进行代码签名了。干杯

【讨论】:

  • 第一个解决方案适用于 macOS Sierra。 .png 文件有问题。非常感谢!
  • 解决方案 1 也适用于我。此列表中没有其他内容
【解决方案5】:

我在使用 CocoaPods 包中的一个文件时遇到了这个问题。 我已将 CocoaPods 更新到最新版本并运行:

pod install

之后,问题就消失了。

【讨论】:

  • 这样做然后在我的 Xcode 项目上运行 Cmd+shift+k(即干净)对我有用
【解决方案6】:

对此有更永久的修复。修复 DerivedData 中的属性有效,但问题不断出现。您需要做的是转到当您获得“不允许的资源叉、Finder 信息或类似的碎屑”时显示的目录,该目录包含 .App 文件。然后执行...

xattr -lr MyAppName.App

然后您可以看到具有需要删除的属性的资源文件。但是不要从 .App 文件中删除它们,在项目中找到原始文件并打开包含它们的目录并执行...

xattr -rc .

这会修复原始文件。然后重建应该可以正常工作。然后它也应该为存档正确重建。

【讨论】:

  • 这是这里建议的唯一对我有用的东西!谢谢!
  • 为我工作。罪魁祸首文件位于 Images.xcassets 文件夹中的图标文件。
  • 我运行xattr -lr MyAppName.app时没有列出任何内容
【解决方案7】:

就我而言,

前往

  • Xcode 偏好

  • 位置

  • 点击项目路径箭头

  • 在 DerivedData 文件夹中搜索您的项目名称

  • 选择项目文件夹,右键移动到垃圾箱

完成!

【讨论】:

    【解决方案8】:

    我在 macOS Sierra 10.12.3、Xcode 8.2 上遇到了这个错误。 修复 DerivedData 对我不起作用。

    在我删除 Keychain Access 中过期的 Apple Worldwide Developer Relations Certificate Authority 证书后,错误消失了。

    【讨论】:

      【解决方案9】:

      在我的情况下,问题与配置文件和帐户有关,我通过执行以下步骤解决了:

      1. Xcode Preferences ->Accounts->删除已经添加的账号并重新添加
      2. 生成新的 Provisioning Profiles 并安装在 Xcode 中
      3. 清理项目并重建它

      【讨论】:

      • 我遇到了同样的问题。当我在 Accounts 中看到时,它告诉我 session expired 再次登录。
      【解决方案10】:

      有时即使您修复和/或完成了正确的代码签名,问题可能潜伏在 3rd 方包中

      如果您仔细检查构建错误,您可能会在错误消息中找到第 3 方库的名称。

      在这种情况下,您必须重新构建您的第 3 方库。例如在我的例子中,通过carthage update 更新它,现在构建成功了。

      【讨论】:

        【解决方案11】:

        我想显示我的答案,因为它可能很有趣(我在这个错误上浪费了很多时间)

        之前的答案(得分高)对我没有用处。

        它们可能是正确的,但它们并没有解决我的问题。

        产地:

        我向我的 iOS 应用程序添加了一个新目标:iMessage

        当我将 png 图像添加到资产时。 xcassets,发生错误。

        解决方案:

        使用“Apple Preview App”复制png图像并取消选中Alpha。

        错误信息消失。

        【讨论】:

        • 这真的很有帮助。解决了我的问题 :) 快乐编码。
        猜你喜欢
        • 2014-07-24
        • 1970-01-01
        • 1970-01-01
        • 2011-05-28
        • 2014-12-24
        • 2011-12-08
        • 2017-03-02
        • 1970-01-01
        • 2015-10-14
        相关资源
        最近更新 更多