macOS High Sierra Xcode中的代码签名错误-不允许资源派生,Finder信息或类似碎屑


263

已尝试:macOS Sierra,Xcode 8上的代码签名错误

请查看显示错误的图片 在此处输入图片说明

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

在“代码签名”部分,它允许我选择配置文件和证书...,但仍给出错误。 在此处输入图片说明

在此处输入图片说明

如何解决这个问题?


1
您是否清洁过并“清洁”过?
thorb65 '16

手段?我只是从xcode帐户重新创建了证书,并在网站中重新生成了配置文件,然后重试...仍然没有运气。
iPhoneProcessor

下面的Arnold Roas答案为我的项目起到了作用。但是您可能还必须在XCode中执行Product> Clean才能使编译成功。
Fredrik Johansson

加上cocos2d-x
fnc12

Answers:


583

解决方案1:

苹果开发者网站在这里回答以上问题。

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

 xattr -cr <path_to_project_dir>

清理Xcode并重新生成。干杯

解决方案2:

只需转到项目根目录并运行此命令xattr -cr即可。

xattr -cr .

清理Xcode并重新生成。做完了

解决方案3:

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

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

ls -alR@ . > kundapura.txt

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

xattr -c <filename>

例: xattr -c guru.png

清除所有内容后,代码签名即起作用。清理Xcode并重新生成。干杯

解决方案4:受到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并重新生成。做完了


7
Xcode 8中的此固定代码符号错误。很好的解决方案。
iPhoneProcessor

4
我有110个文件。将自动处理所有bash的bash命令是什么?
福克斯

2
谢谢,为我工作!
阿米特·阿梅拉

5
这是一个救命稻草。我花了几个小时。
杰克逊

4
非常感谢您的分享,即使没有几天也节省了我几个小时!
G克里斯DCosta '16

171

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

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

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

12
这应该是公认的答案。更简单,更快,并且不需要人工。根据@NatureFriend的回答,我有80个文件有问题。
罗杰·欧巴

3
谢谢!我花了很多时间试图找到这个奇怪的错误的答案-真是浪费时间!
lppier

对我来说,一种更快的无终端解决方案是将所有图像拖到ImageOptimizer中(这也会浪费所有无用的属性)。
blackjack75

我从pixelmator保存了一个新图标,并遇到了同样的问题。谢谢。
Guy Lowe

这对我有用。.我在上面的“ xcattr -cr”命令上被拒绝权限(甚至直接通过上面列出的Apple文档进行操作:developer.apple.com/library/archive/qa/qa1940/_index.html 运行Xcode 9.3高塞拉利昂10.13.4。
Randoramma

95

如果对应用进行代码签名时出现此错误:

不允许使用资源派生,Finder信息或类似的碎屑命令/ usr / bin / codesign失败,退出代码为1

转到项目根文件夹并执行

find . | xargs -0 xattr -c

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

在Sierra中,已加强了对已签名捆绑包中的内容的规则,并且不再允许资源派生。AppleScript一直将信息永久保存在资源派生中,尽管该信息已被长期使用。使用Sierra,当您保存脚本时,将不再保存此资源派生信息。

这意味着您无法对在Sierra之前的版本中最后保存的脚本进行代码签名;您必须保存在Sierra中才能登录Sierra。

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

更新:

似乎这样也可以:

xattr -rc .

如果您有任何权限不足错误,请尝试在sudo之前添加: sudo xattr -rc .


4
我在终端中尝试了此程序,并“没有足够的空间进行争论”
Fawkes

1
这起到了魅力!还必须在XCode中执行“产品”>“清理”,但是之后我的项目就建成了!
弗雷德里克·约翰逊

谢谢您,它有效。在我的情况下,问题是我可以在设备中进行测试而没有问题,但是当我在模拟器中尝试时,它不起作用并显示上述问题。您的解决方案解决了我的问题。
Mahmud Ahsan

xattr -rc。工作!
马特

我正在使用Corona SDK进行构建,并且遇到了相同的问题。xattr -rc为我工作。
Rais Iqbal

31

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

  1. 在XCode中选择目标
  2. 选择构建阶段选项卡
  3. 按+符号
  4. 选择新的运行脚本阶段
  5. 为脚本输入以下内容:

    xattr -cr〜/ Library / Developer / Xcode / DerivedData || 回声清除

现在,当您构建目标时,它将清除将破坏代码符号的所有属性。通过在此阶段清除,您不必更改源代码/项目目录。

该脚本的“ || echo Clear”部分可确保即使xattr错误也可以继续进行项目构建。

如果您在代码存储库中使用诸如DropBox之类的程序来添加属性,则此方法很好,因为它不会更改您的源项目,而只会更改生成的存档。

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

xattr codesign xcode修复


1
对于我来说,问题仅出现在使用Finder中的⌘-D从其他项目创建的项目中。由于某种原因,没有一个更流行的解决方案对我有用。这个做了。
clozach

1
谢谢!在寻找解决方案2个小时后,此方法奏效了。
卡特·科布

1
最后!经过数小时尝试其他解决方案后,此问题得以解决!!请先尝试一下,但替换为
codesign

对我来说,问题是源代码中的图像...所以我添加了一个运行脚本,该脚本执行了xattr -cr“ $ PROJECT_DIR”
Little Watchman

非常感谢,这仍然有效。在我的情况下,我添加了xattr -cr〜/ Users / msc / OneDrive / 01 Work / APP / Flutter / lts-flutter / build / ios / Debug-iphoneos || 回声清除
mactrix

26

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

xattr -rc .

是的,有时候只有结算项目目录内的attrs帮助..拉梅苹果,为什么要做出这样的事情蹩脚
安东Malyshev

除了投票最多的答案之外,这还可以作为替代方法
Lance Samaria

我也不得不清理项目文件夹<CMD + K>后来这个工作
兰斯撒玛利亚

21

Apple在技术问答QA1940中对此问题有官方的答案。

这是iOS 10,macOS Sierra,watchOS 3和tvOS 10引入的一项安全性增强更改。

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

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

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

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


在研究了几乎所有其他提议的解决方案之后,xattr -lr <path_to_app_bundle>最终找到了正确的文件。使用Finder-Tag从代理商处获取了Localizable.strings,这些字符串导致Codesign失败。
JanR

我为此花了2天,这个解决方案终于对我有用!
bhakti123

16

关于清除文件的所有操作都很好,但是对于多个项目来说很繁琐。

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

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

Xcode 8拒绝将其添加到构建中(可能是您使用“ git --add。”将它们添加到项目中了。)您可以在终端中递归查找并删除它们,但可能很乏味。

我写了一个小的免费实用程序来删除它。希望它能对您有所帮助。

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


它为我工作。非常感谢您的实用应用程序!
2016年

这是与我一起使用的唯一解决方案,尽管该应用程序“可能由于项目文件过多”而崩溃了很多次,但它已经清理了文件,并且该项目终于可以运行了。谢谢!
XIII

下载了您的应用程序,它为我清理了所有内容!谢谢!
鲍比(Bobby)2013年

+1。谢谢
Megaetron '17

我将有一些空闲时间来解决大型项目的崩溃问题!
ingconti

11

简单的解决方案:

我的工作方式[为我工作]

第1步:-转到此文件夹-从查找器中按选项转到->转到文件夹

然后像下面的示例一样输入您的项目路径:-Library / Developer / Xcode / DerivedData / yourprojectname / Build / Products / Debug-iphoneos

现在,您会看到一个弹出窗口,其中包含可用文件的列表,您会看到yourApp.app文件[不执行任何操作,仅等待步骤2]。

步骤2:-打开新终端,然后输入cd,然后将步骤1 yourApp.app拖动到终端,现在您将获得应用程序的路径,然后按Enter键。

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

xattr -rc。

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

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


10

-----如果由于缺乏bash知识或其他原因而无法应用上述解决方案。

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

临时解决方案:

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


我从iCloud驱动器移至桌面,并且可以正常工作。谢谢
drasick

这是我解决方案的一部分。我在桌面上有一个项目,该项目已备份到Sierra下的iCloud。我仍然需要输入xattr -rc。在终端中删除项目后,将项目从桌面移开。没有其他解决方案可用于此步骤
Roger Pingleton '16

这也是我的问题:iCloudDrive导致了这个非常烦人的错误,我向Apple报告了一个错误-> 31740606
LukeSideWalker

从本质上讲,这也是我的问题,但是我不必为我的项目文件夹禁用iCloud或移动项目文件夹等。我只是进入Xcode Prefs-> Locations-> Advanced并为“ Build Location”选择了“ Unique”选项。我一直在xcode项目文件的子文件夹中使用构建位置,该文​​件位于iCloud驱动器上。我认为默认值为“唯一”,并且我不知道为什么要更改它,也许是为了使构建后更容易找到可执行文件。
戴佛

10

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

CODE_SIGNING_ALLOWED = No 

显然,分发应用程序需要最终解决此问题,但这可以在像我这样的情况下进行开发,因为在Sierra中省略Sierra的代码签名并不一定很简单(在过去的OS X / Xcode上,这样做更容易)。

根据RGriffith的评论,以下是一些屏幕截图,供那些不确定如何添加自定义构建设置的用户使用。

在此处输入图片说明

在此处输入图片说明


您要在哪里添加?
RGriffiths

4

您将需要删除应用程序捆绑包文件夹并按照以下说明重建应用程序。

我的应用名为:扩充

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

在终端窗口中,为您的应用文件夹运行命令,例如:xattr -cr extended-flmbiciuyuwaomgdvhulunibwrms

清洁>构建>运行。

Mac Appstore上还有一个名为“ CleanDetritus”的免费应用程序,它将删除这些应用程序。


1
我正在使用Flutter生成iOS应用,并且从Xcode进行Clean> Build> Run从Xcode解决了Flutter控制台上的“资源派生,Finder信息或不允许的类似碎屑”错误。
Juan Valera

工作正常,谢谢!对我来说,解决方案是执行“ xattr -rc”。在派生数据项目文件夹中,而不是在项目文件夹中。
BIOS-K

2

昨天这个问题来了。

(What's wrong) 我通过手动替换finder中的文件来更新图像资源,但由于此编译错误而失败。

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



1

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

感谢@ rich-able,我发现了“运行脚本”。然后,我输入命令“ xattr -cr”。在该领域。

XCODE解决方案


1

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

$ git stash
$ git stash pop

Git不存储文件元数据,上面将其全部删除。


我在Xcode 9下遇到了这个问题。以上解决方案解决了该问题。您应该在git源代码控制下拥有项目,并且尚未提交任何文件。
Anessence


0

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

xattr -cr "Full path of your project"

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

xattr -cr "Full path of your project"

清理并完成。


这块砖我的项目,请不要使用它
Naveed Ahmad

这使我的计划陷于瘫痪。和修复该问题,我意外删除了.scodeproj文件,然后创建了新项目并传输了以前的文件
Naveed Ahmad

然后由于您的错误而发生。我尝试了居留权代码,没有任何问题。
Rajesh Maurya

兄弟在我的情况下使用了上面的命令后,对我造成了问题。然后解决我陷入另一个问题。
Naveed Ahmad

0

如果xattr命令没有成功,则可能是由于XCode 9错误:让我们尝试删除并重新添加包含Xcode中受影响文件的资源文件夹(在我的情况下为.xcassets)。(您应该通过xattr -lr命令了解以前受影响的文件)



0

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


0

我发现,如果color tag在下方的文件夹中添加DerivedData,则在设备上进行调试时会出现上述错误。

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

在此处输入图片说明



0

我不知道发生了什么事,但是当我在模拟器上运行flutter应用程序时,遇到了错误。我使用flutter clean命令并删除了派生数据,然后一切正常。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.