25

所以 Xcode 8 最近发布了,我仍然不确定究竟是什么导致了这个问题(可能只是它是 Xcode 的 beta 版本,或者我做错了什么)。

手头的问题是我正在尝试创建一个新的 SceneKit 应用程序,而我目前正在处理 .scn 文件。

我在“hero.scnassets”中创建了一个 .scn 文件“hero.scn”,并在 hero.scnassets 文件夹中提供了一个名为“heroTexture.png”的 .png 文件

Xcode 8.0 beta 1 通常在“GameViewController.swift”文件中为此项目提供的代码编辑如下:

原始代码:

...
let scene = SCNScene(named: "art.scnassets/ship.scn")!
...
let ship = scene.rootNode.childNode(withName: "ship", recursively: true)!
ship.run(SCNAction.repeatForever(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1)))

编辑代码:

...
let scene = SCNScene(named: "hero.scnassets/hero.scn")!
...
let hero = scene.rootNode.childNode(withName: "hero", recursively: true)!
hero.run(SCNAction.repeatForever(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1)))

收到错误:

.../Xapp.app: resource fork, finder information, or similar detritus not allowed
Command /usr/bin/codesign failed with exit code 1

问题的结论:

当我所做的只是替换文件时,为什么会出现签名错误?

旁注:我知道如何让代码签名问题消失,但这涉及重新启动整个项目(我不介意)。但是,我面临的问题是,每当我更改文件时,都会出现此错误。

PS:这是一个文件结构,只是为了方便。文件结构

4

7 回答 7

110

通过三个简单的步骤摆脱此构建错误:

1)删除DerivedData中与您的应用程序相关的最新文件夹(~/Library/Developer/Xcode/DerivedData)

2)在终端中,cd到当前项目目录

3) 运行

xattr -rc 。

删除所有扩展属性(通常与以前在 Photoshop 中编辑的图像文件有关)

重建你的应用程序!

于 2016-09-07T15:21:59.163 回答
18

错误来自图像文件中的属性。

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

find . -type f -name '*.png' -exec xattr -c {} \;
于 2016-09-26T14:50:50.020 回答
9

安装 macOS 的开发版本后出现错误,在我resource fork, finder information, or similar detritus not allowed的情况下,它是由我的某些文件的无效属性引起的。

我通过搜索com.apple.FinderInfo像这样在我的文件上设置的属性来修复它

ls -alR@ . > investigate.txt

现在在您最喜欢的文本编辑器中打开调查.txt,然后搜索com.apple.FinderInfo并清除所有具有此属性集的文件的属性。您可以使用

xattr -c <filename>例如xattr -c iTunesArtwork.png

一旦我清除了所有文件,我就可以再次对我的应用程序进行代码签名。

于 2016-06-24T08:29:20.290 回答
1

修复!显然这是新 Xcode 的错误。您应该做的是重新启动 OS X/macOS 并清理项目。它应该在那之后工作!

于 2016-06-16T06:18:22.120 回答
1

我无法删除查找器信息并且重新启动不起作用。对我来说(我安装了 Sierra 测试版),这是因为该项目位于与 iCloud 同步的 Documents 文件夹中。一旦我创建了一个不在与 iCloud 同步的文件夹中的项目,它就可以正常工作,因此该错误可能也与 iCloud 有关/而不是与 Xcode 有关

于 2016-07-18T09:00:27.190 回答
1

这似乎解决了问题。在项目根文件夹之外创建一个 .atlas 文件夹(即“myImages.atlas”)。将图像添加到 .atlas 文件夹。然后从项目中“将文件添加到...”中的 .atlas 文件夹,(注意:避免将 .atlas 文件夹放在 art.scnasstes 文件夹中,并在重建之前确保项目处于“清理”状态)

于 2016-11-15T05:04:37.023 回答
1

这是一项在 iOS 10、macOS Sierra、watchOS 3 和 tvOS 10 中引入的安全强化更改。

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

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

$ xattr -lr

替换为您的实际应用程序包的路径。

下面是这个命令的一个例子:

$ xattr -lr Foo.app

/Applications/Foo.app: com.apple.FinderInfo:

00000000 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |......|

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

$ xattr -cr

请注意,使用 Finder 的 Show Package Contents 命令浏览捆绑包中的文件可能会导致将 Finder 信息添加到这些文件中。否则,请审核您的构建过程以查看在何处添加了扩展属性。

于 2016-11-28T14:36:49.403 回答