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

iPh*_*sor 239 xcode ios macos-sierra xcode8

已经尝试过: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
Run Code Online (Sandbox Code Playgroud)

在代码符号部分,它允许我选择配置文件和证书...但仍然给出错误. 在此输入图像描述

在此输入图像描述

如何解决这个问题?

Gur*_*uru 527

解决方案1:

苹果开发者网站解答上述问题在这里.

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

 xattr -cr <path_to_project_dir>
Run Code Online (Sandbox Code Playgroud)

清理Xcode和重新构建.干杯

解决方案2:

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

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

ls -alR@ . > kundapura.txt
Run Code Online (Sandbox Code Playgroud)

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

xattr -c <filename>
Run Code Online (Sandbox Code Playgroud)

例: 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 {} \;
Run Code Online (Sandbox Code Playgroud)

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

  • Xcode 8中的这个固定代码签名错误.很好的解决方案. (7认同)
  • 这是一个救星.我花了好几个小时. (5认同)
  • 我有110个文件.什么是bash命令会自动处理所有这些命令? (4认同)
  • 非常感谢你的分享,如果不是几天,我就节省了我的时间! (3认同)
  • 谢谢,为我工作!! (2认同)
  • 解决方案1对我有用!感谢您分享这些重要信息... (2认同)
  • 非常感谢.它很有魅力. (2认同)
  • 每次我都惊慌失措并记住这个解决方案.哈利路亚! (2认同)
  • 完美,很好的解释。顺便说一句,第一个命令有点混乱,而不是`xattr -cr &lt;path_to_app_bundle&gt;`,它应该读作`xattr -cr &lt;path_to_project_dir&gt;`,或者只是`xattr -cr 。` 就像一个魅力! (2认同)

Mar*_*kle 160

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

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

find . -type f -name '*.png' -exec xattr -c {} \;
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案.更简单,更快速,无需人工操作.根据@ NatureFriend的回答,我有80个有问题的文件. (11认同)
  • 谢谢!我花了几个小时试图找到这个奇怪错误的答案 - 这是多么浪费时间! (3认同)

Arn*_*Roa 91

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

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

转到项目根文件夹并执行

find . | xargs -0 xattr -c
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

更新:

看起来像这样也有效:

xattr -rc .
Run Code Online (Sandbox Code Playgroud)

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

  • `xattr -rc .`应该是接受的答案. (19认同)
  • 我在终端尝试了它并且"参数空间不足" (4认同)

A.B*_*ger 24

处理源文件属性的最简单方法是让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修复


Ram*_* G. 22

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

xattr -rc .
Run Code Online (Sandbox Code Playgroud)


com*_*ade 21

技术问答QA1940中, Apple正式回答了这个问题.

这是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


ing*_*nti 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


Abd*_*bdu 11

简单解决方案: -

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

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

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

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

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

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

xattr -rc.

不要错过"."(点)按enter键.

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

  • 这个过程对我有用.谢谢! (3认同)

Bob*_*bjt 9

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

CODE_SIGNING_ALLOWED = No 
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

在此输入图像描述


Faw*_*kes 8

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

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

临时解决方案:

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