macOS High Sierra Xcode中的代码签名错误 - 不允许使用资源分支,Finder信息或类似碎片

问题描述 投票:221回答:21

已经尝试过:Code Sign Error on macOS Sierra, Xcode 8

请参阅显示错误enter image description here的图像

CodeSign /Users/gururajtallur/Library/Developer/Xcode/DerivedData/Flow-bkqjkvtmvjovpyepfjeyqmjpintj/Build/Products/Debug-iphoneos/Super\ Flow\ Flip.app
    cd "/Volumes/Development/Project/Top Best Games/19. Lets Flow/35/let's FLOW - source/proj.ios_mac"
    export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

Signing Identity:     "iPhone Distribution: New Free Games (2CHN583K4J)"
Provisioning Profile: "Super Flow Flipp AppStore"
                      (c6c30d2a-1025-4a23-8d12-1863ff684a05)

    /usr/bin/codesign --force --sign E48B98966150110E55EAA9B149F731901A41B37F --entitlements /Users/gururajtallur/Library/Developer/Xcode/DerivedData/Flow-bkqjkvtmvjovpyepfjeyqmjpintj/Build/Intermediates/Flow.build/Debug-iphoneos/Super\ Flow\ Flip.build/Super\ Flow\ Flip.app.xcent --timestamp=none /Users/gururajtallur/Library/Developer/Xcode/DerivedData/Flow-bkqjkvtmvjovpyepfjeyqmjpintj/Build/Products/Debug-iphoneos/Super\ Flow\ Flip.app

/Users/gururajtallur/Library/Developer/Xcode/DerivedData/Flow-bkqjkvtmvjovpyepfjeyqmjpintj/Build/Products/Debug-iphoneos/Super Flow Flip.app: resource fork, Finder information, or similar detritus not allowed
Command /usr/bin/codesign failed with exit code 1

在代码符号部分,它允许我选择配置文件和证书...但仍然给出错误。 enter image description here

enter image description here

如何解决这个问题?

ios xcode xcode8 macos-sierra
21个回答
476
投票

解决方案1:

Apple开发者网站上面回答问题Here

在终端执行以下命令:首先转到项目根文件夹

 xattr -cr <path_to_app_bundle>

清理Xcode和重新构建。干杯

解决方案2:

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

在终端中,转到项目根目录并执行

ls -alR@ . > kundapura.txt

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

xattr -c <filename>

示例:xattr -c guru.png

一旦清除了所有代码符号就可以了。清理Xcode和重新构建。干杯

解决方案3:受Mark McCorkle的回答启发

在终端中,转到项目的根目录并逐个执行命令

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

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


8
投票

-----如果你不能应用上面的解决方案,因为缺乏bash知识或其他东西。

我在Sierra上启用iCloud Drive后就遇到了这个问题。我的项目位于与iCloud Drive同步的文件夹中。我想这就是添加这些附加属性的原因。

临时解决方案:

禁用项目所在文件夹的iCloud Drive。


4
投票

您将需要删除应用程序包文件夹并重建应用程序,如下所述。

我的应用程序被称为:扩充

在终端窗口中,转到您的应用程序文件夹,例如:cd / Users / username / Library / Developer / Xcode / DerivedData /

在app文件夹的终端窗口运行命令中,例如:xattr -cr augment-flmbiciuyuwaomgdvhulunibwrms

清洁>生成>运行。

在Mac App Store上还有一个名为“Clean Detritus”的免费应用程序,它将删除这些。


2
投票

这个问题昨天来到我身边。

(What's wrong)我通过在finder中手动替换文件来更新图像资源,但是我遇到了这个编译错误。

(What's right)不要以这种方式更新图像。之后我将图像拖动到Xcode中的'xcassets'。再也不会出现错误。


2
投票

问题出在派生数据中,您应该清理派生数据,然后清理项目并构建。请检查this链接。


1
投票

我的问题是我在代码中做出的每一个更改,然后重新执行,错误再次出现。然后我找到了一个解决方案,可以在每次编译/执行代码时自动执行命令。

感谢@ rich-able,我发现了“Run Script”。然后我把命令“xattr -cr”。在该领域。

XCODE Solution


1
投票

最简单的解决方法可能是你正在使用git。尝试:

$ git stash
$ git stash pop

Git不存储文件元数据,上面将把它全部剥离。


0
投票

我的问题是我在1年前使用cordova构建应用程序,但它与xcode的新版本不兼容,所以我只是使用cordova build ios并且它再次起作用。


0
投票

最好的解决方案之一是转到终端类型

xattr -cr "Full path of your project"

要找到右键单击Xco​​de项目的完整路径 - >获取信息 - >复制路径并替换为。然后输入以下命令

xattr -cr "Full path of your project"

清洁和完成。


0
投票

如果xattr命令不起作用,这可能是由于XCode 9错误:让我们尝试删除并重新添加资源文件夹(在我的情况下是.xcassets),其中包含来自Xcode的受影响文件。 (您应该通过xattr -lr命令了解之前受影响的文件)


0
投票

打开终端,然后运行此命令。

xattr -cr“.app文件的路径”


149
投票

错误来自图像文件中的属性。这是因为我们的图形设计师使用属性从photoshop保存图像。

这是一个简单的命令,用于查找所有png文件并删除其属性。在终端的项目根目录中运行它。清洁和重建;问题解决了。

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

0
投票

我也面临同样的问题,只需重新启动我的Macbook就可以解决问题。


0
投票

我发现如果我在color tag下的文件夹中添加DerivedData,它将在设备上调试时给出上述错误。

删除color Tag修复此错误给我。

enter image description here


83
投票

如果在对应用程序进行协同设置时出现此错误:

资源分叉,Finder信息或类似的碎片不允许命令/ usr / bin / codesign失败,退出代码为1

转到项目根文件夹并执行

find . | xargs -0 xattr -c

这将清除所有文件的属性。

在Sierra,已经收紧了关于签署的捆绑包中的内容的规则,并且不再允许资源分叉。 AppleScript一直在资源分析中保存信息,尽管该信息长期未被使用。使用Sierra,当您保存脚本时,将不再保存此资源分叉信息。

这意味着您无法对上一次保存在Sierra之前的版本中的脚本进行编码;你必须在Sierra保存才能登录Sierra。

可能受影响的人是谁在他们的脚本中捆绑其他脚本(cordova?)。在Sierra下重新保存所有嵌入的脚本之前,他们将无法签署容器脚本。

更新:

看起来像这样也有效:

xattr -rc .

如果你有任何不足的权限错误尝试prepend sudo:sudo xattr -rc .


21
投票

Technical Q&A QA1940,这个问题有正式的Apple答案。

这是iOS 10,macOS Sierra,watchOS 3和tvOS 10引入的安全加固变更。

代码签名不再允许应用程序包中的任何文件具有包含资源分支或Finder信息的扩展属性。

要查看导致此错误的文件,请在Terminal:xattr -lr <path_to_app_bundle>中运行此命令

您还可以使用xattr命令从xattr -cr <path_to_app_bundle>中删除应用程序包中的所有扩展属性

<path_to_app_bundle>可以替换为Xcode项目的目录。例如~/Development/MyProject


18
投票

处理源文件属性的最简单方法是让Xcode在运行codesign之前清理存档。去做这个:

  1. 在XCode中选择目标
  2. 选择Build Phases选项卡
  3. 按+符号
  4. 选择新建运行脚本阶段
  5. 为脚本输入以下内容: xattr -cr~ / Library / Developer / Xcode / DerivedData ||回声清楚

现在,当您构建目标时,它将清除任何会破坏代码签名的属性。通过在此阶段清除,您不必更改源代码/项目目录。

脚本的“|| echo Clear”部分确保即使出现xattr错误,项目构建也会继续。

如果在代码存储库中使用DropBox等程序添加属性,则此方法很有用,因为它不会更改源项目,只会更改构建的存档。

您可能需要更改路径以匹配DerivedData目录 - 此路径将显示在codesign错误旁边。

xattr codesign xcode fix


15
投票

所有关于清除文件都很好,但对于多个项目来说很乏味。

图形应用程序(如旧版本中的photoshop)在外部文件中以旧方式编写其他信息(我们现在称之为元数据..),或者它们来自较旧的OSX,文件如:

例如,当解压缩文件夹时,“com.apple.ResourceFork”和“com.apple.FinderInfo”。

Xcode 8拒绝将它添加到构建中(因为你将它们添加到带有“git --add。”的项目中)也许..)你可以在终端中以递归方式找到并删除它们,但可能很乏味。

我写了一个小的免费工具来删除它..希望它可以帮助..

https://itunes.apple.com/us/app/cleandetritus/id1161108431?ls=1&mt=12


15
投票

我使用了以下命令。使用终端窗口。导航到您的项目并执行以下操作:

xattr -rc .

10
投票

简单解决方案: -

我是怎么做的[为我工作]

步骤1: - 转到此文件夹 - 从您的取景器按选项转到 - >转到文件夹

然后输入您的项目路径,如下例所示: - Library / Developer / Xcode / DerivedData / yourprojectname / Build / Products / Debug-iphoneos

现在,您可以看到一个窗口弹出,其中包含可用文件列表,在那里您可以看到yourApp.app文件[不要做任何事情只是等待第2步]。

第2步: - 打开新终端并输入cd然后只需将第1步yourApp.app拖到终端,现在您将获得该应用的路径,现在按下回车键。

第3步: - 现在输入此命令**

xattr -rc。

不要错过“。”(点)按enter键。

就是这样,转到Xcode项目并清理并再次运行。


10
投票

对于那些刚刚尝试开发应用程序而不必在每个新创建的Photoshop上删除扩展属性的PNG添加到macOS目标的人,您可以通过添加用户定义的构建设置暂时禁用代码签名:

CODE_SIGNING_ALLOWED = No 

显然,分发应用程序的人最终需要处理这个问题,但这样可以在像我这样的情况下进行开发,而在Sierra中省略代码签名并不是一件容易的事情(在过去的OS X / Xcode上更容易这样做)。

根据RGriffith的评论,这里有一些截图,供那些不确定如何添加自定义构建设置的人截屏。

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.