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

已经尝试过: 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 

在代码签名部分,它允许我selectconfiguration文件和证书…但仍然给错误。 在这里输入图像说明

在这里输入图像说明

如何解决这个问题?

解决scheme1:

苹果开发者网站上面的问题解决方法

在terminal执行下面的命令。

  xattr -cr <path_to_app_bundle> 

清理Xcode和重build。 干杯

解决scheme2:

您可以通过查找保存查找器信息的文件来解决这个问题。

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

 ls -alR@ . > kundapura.txt 

这会在当前目录中创buildkundapura.txt。 现在searchcom.apple.FinderInfo并清除所有文件的这个属性。 你可以这样做

 xattr -c <filename> 

例如: xattr -c guru.png

一旦你清除所有的代码标志的作品。 清理Xcode和重build。 干杯

解决scheme3:受Mark McCorkle的答复启发

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

  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和重build。 完成。

错误来自图像文件中的属性。 这发生在我们的graphicsdevise师从属性保存图像从Photoshop。

这里有一个简单的命令来查找所有的png文件并删除它们的属性。 在terminal的项目根目录下运行。 清理和重build; 问题解决了。

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

如果您在编码应用程序时遇到此错误:

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

转到您的项目根文件夹并执行

 find . | xargs -0 xattr -c 

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

在塞拉利昂,关于什么可以在签名捆绑的规则已经收紧,资源叉子不再允许。 AppleScript一直在资源分配中保存信息,尽pipe这些信息已经被使用了很长时间。 有了Sierra,当你保存一个脚本时,这个资源分叉信息将不再被保存。

这意味着你不能在Sierra之前的版本中编码上一次保存的脚本; 你必须保存在塞拉利昂能够签署塞拉利昂。

可能受到影响的人是谁在脚本中捆绑了其他脚本(cordova?)。 他们将不能签署容器脚本,直到所有的embedded式脚本已被重新保存在塞拉利昂。

更新:

看起来像这样也行得通:

 xattr -rc . 

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

在技术问答QA1940中有官方苹果回答这个问题。

这是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>可以replace为Xcode项目的目录。 例如~/Development/MyProject

所有关于清理文件是好的,但繁琐的多个项目。

graphics应用程序(比如老版本的photoshop)在外部文件中以旧的方式编写附加信息(我们现在称之为元数据..),或者它们来自较旧的OSX,如下所示的文件:

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

Xcode 8拒绝将它添加到构build中(正如你将它们添加到一个带有“git –add”的项目中的那样)。你可以在terminal中recursion地find并删除它们,但是可能会很乏味。

我写了一个小的免费实用程序来删除它..希望它可以帮助..

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

对于那些只是试图开发应用程序,而不必剥离每个新创build的PNG添加到macOS目标的扩展属性的用户,可以通过添加用户定义的构build设置临时禁用代码签名:

 CODE_SIGNING_ALLOWED = No 

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

根据RGriffith的评论,这里有一些不知道如何添加自定义构build设置的人的截图。

在这里输入图像说明

在这里输入图像说明

简单的解决scheme:

我是怎么做的 (为我工作)

步骤1: – 进入这个文件夹 – 从您的发现者按下选项去 – >转到文件夹

然后input你的项目path,就像这个例子: – Library / Developer / Xcode / DerivedData / yourprojectname / Build / Products / Debug-iphoneos

现在你可以看到一个窗口popup列表的可用文件,在那里你看到你的App.app文件[不要做任何事情只是等待第2步]。

第2步: – 打开新的terminal,只需键入cd,然后拖动第1步yourApp.app到terminal,现在你将得到的应用程序的path,现在按下inputbutton。

第3步: – 现在input这个命令**

xattr -rc。

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

就这样,去你的Xcode项目,清理并再次运行。

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

  1. 在XCode中select你的目标
  2. select“构build阶段”选项卡
  3. 按+符号
  4. select新build运行脚本阶段
  5. 为脚本input以下内容:

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

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

脚本的“|| echo Clear”部分确保了即使xattr错误也能继续进行项目构build。

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

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

xattr codesign xcode修复

—–如果你不能应用以上的解决scheme,由于缺乏知识或其他的东西。

只要我在Sierra上启用了iCloud Drive,我就遇到了这个问题。 而我的项目在一个与iCloud Drive同步的文件夹中。 我想这是添加这些额外的属性。

临时解决scheme:

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

这个问题昨天来了。

(What's wrong)我更新的图像资源通过手动取代文件取景器,我失败了这个编译错误。

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

我的问题是我在代码中所做的每一个改变,并再次执行错误再次出现。 然后我find一个解决scheme来自动执行每个编译/执行代码的命令。

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

XCODE解决方案

最简单的解决办法可能是如果你使用git 。 尝试:

 $ git stash $ git stash pop 

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

我的问题是,我使用cordova约1年前build立的应用程序,但它与新版本的Xcode不兼容,所以我只是用cordova build ios ,它再次工作。

最好的解决scheme之一是去terminalinput这个

xattr -cr "Full path of your project"

要find完整的path右键单击Xco​​de项目 – >获取信息 – >复制path,并用replace。 然后input下面的命令

xattr -cr "Full path of your project"

清理并完成。

如果xattr命令不能解决这个问题,这可能是由于XCode 9的一个bug:让我们尝试删除并重新添加包含Xcode中受影响文件的资源文件夹(在我的情况下是一个.xcassets)。 (您应该了解哪些是通过xattr -lr命令执行的受影响的文件)

我用过。 使用terminal窗口。 导航到您的项目并执行以下操作:

 xattr -rc .