macOS Monterey 中的代码签名错误,Xcode - 不允许资源分叉、Finder 信息或类似碎屑

Code Sign Error in macOS Monterey, Xcode - resource fork, Finder information, or similar detritus not allowed

已经尝试过:

请看图片显示错误

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

在代码签名部分,它允许我 select 配置文件和证书...但仍然出错。

如何解决这个问题?

解决方案一:

Apple Developer Website 回答上述问题Here

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

 xattr -cr <path_to_project_dir>

清理 Xcode 并重新构建。干杯

方案二:

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

xattr -cr .

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

方案三:

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

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

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 并重新构建。完成。

如果您在对应用程序进行代码签名时遇到此错误:

resource fork, Finder information, or similar detritus not allowed Command /usr/bin/codesign failed with exit code 1

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

find . | xargs -0 xattr -c

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

在 Sierra 中,关于签名包中可以包含什么的规则已经收紧,不再允许资源分叉。 AppleScript 一直在资源分叉中保存信息,尽管这些信息已经很长时间没有使用了。使用 Sierra,当您保存脚本时,将不再保存此资源分叉信息。

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

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

更新:

好像这样也行:

xattr -rc .

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

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

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

临时解决方案:

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

错误来自图像文件中的属性。这是我们的图形设计师从带有属性的 photoshop 中保存图像时发生的。

这是一个简单的命令,可以找到您所有的 png 文件并删除它们的属性。 运行 在终端的项目根目录中。清理和重建;问题已解决。

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

简单的解决方案:-

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

第 1 步:- 转到此文件夹 - 从您的 finder 中按选项转到 - > 转到文件夹

然后像这样输入你的项目路径 例子:- Library/Developer/Xcode/DerivedData/yourprojectname/Build/Products/Debug-iphoneos

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

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

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

xattr -rc .

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

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

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

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

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

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

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

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

Technical Q&A QA1940.

中有针对此问题的官方 Apple 回答

This is a security hardening change that was introduced with iOS 10, macOS Sierra, watchOS 3, and tvOS 10.

Code signing no longer allows any file in an app bundle to have an extended attribute containing a resource fork or Finder info.

To see which files are causing this error, run this command in Terminal: xattr -lr <path_to_app_bundle>

You can also remove all extended attributes from your app bundle with the xattr command: xattr -cr <path_to_app_bundle>

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

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

CODE_SIGNING_ALLOWED = No 

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

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

昨天遇到这个问题

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

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

我的问题是大约 1 年前我使用 cordova 构建应用程序,但它与 xcode 的新版本不兼容,所以我简单地使用 cordova build ios 并且它有效再次。

处理源文件属性的最简单方法是 Xcode 在运行代码设计之前清理存档。为此:

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

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

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

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

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

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

我的问题是我在代码中所做的每一次更改并再次执行错误都会再次出现。然后我找到了一个解决方案,每隔 compilation/execution 代码自动执行命令。

感谢@rich-able 我发现了 "Run Script"。然后我在字段中输入命令 "xattr -cr ."。

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

xattr -cr "Full path of your project"

要查找完整路径,请右键单击 Xcode 项目 -> 获取信息 -> 复制路径并替换为 . 然后输入下面的命令

xattr -cr "Full path of your project"

清理并构建完成。

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

$ git stash
$ git stash pop

Git 不存储文件元数据,上面会把它全部去掉。

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

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

xattr -rc .

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

打开终端,只需运行这个命令。

xattr -cr "path to .app file"

我也遇到了同样的问题,只需重启我的 Macbook 即可解决。

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

我的应用名为:augment

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

在终端 window 运行 命令中为您的应用程序文件夹 例如:xattr -cr augment-flmbiciuyuwaomgdvhulunibwrms

清理>构建>运行.

Mac Appstore 上还有一个名为 "CleanDetritus" 的免费应用程序可以删除这些内容。

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

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

您可以删除派生数据 Xcode -> Preferences

然后点击Derived Data下方的箭头,清空文件夹Derived Data

不知道我怎么了,我在模拟器上运行 flutter app 的时候遇到了这个错误。我使用 flutter clean 命令并删除了派生数据,然后一切正常。

我的 .app 位于网络安装的驱动器上。

codesign -f -vv --preserve-metadata=entitlements -s {*my Apple distribution cert SHA*} my.app
my.app: resource fork, Finder information, or similar detritus not allowed

我不知道是路径太长还是在 NAS 设备上的问题。我将 .app 复制到我的本地下载目录,然后能够进行代码签名。

my.app: signed app bundle with Mach-O thin (arm64) [*com.something.my*]

当我 复制 一个 .plist 文件并编辑它时,我也遇到了这种情况,而不是创建一个新文件。 xattr -lr <path> 命令帮助我确定了有问题的文件。

我的问题与使用 Carthage 集成的框架的意外更改有关。我错误地修改了框架中的一行,它没有出现在 git 中,因为 git.

忽略了依赖构建文件夹

解决方案:删除 Carthage 中的 framework 文件夹并重建它。