代码签名错误每当我尝试更换新的SceneKit应用程序中的股票文件

所以Xcode 8最近刚刚发布,我还不确定究竟是什么原因导致了这个问题(这可能只是Xcode的一个testing版本,或者我可能是在某种程度上做错了)。

现在的问题是,我正在尝试创build一个新的SceneKit应用程序,我正在搞乱.scn文件。

我在“hero.scnassets”里面创build了一个.scn文件,“hero.scn”,并且在hero.scnassets文件夹内以“heroTexture.png”的名字提供了一个.png文件。

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

原始代码:

... 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 

问题的结论:

当我所做的只是replace文件时,为什么会收到签名错误?

旁注:我知道如何让代码签名问题消失,但涉及重新启动整个项目(我不介意)。 我面对的问题是每当我改变文件,我得到这个错误。

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

通过三个简单的步骤摆脱这个构build错误:

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

2)在terminal中,cd到当前的项目目录

3)跑步

xattr -rc。

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

重build你的应用程序!

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

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

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

安装了macOS的开发版本后,我得到了resource fork, finder information, or similar detritus not allowed错误,在我的情况下,这是由于我的一些文件的无效属性造成的。

我通过在我的文件中searchcom.apple.FinderInfo属性来修复它

ls -alR@ . > investigate.txt

现在在您最喜欢的文本编辑器中打开investig.txt并执行com.apple.FinderInfo的search,并清除具有此属性集的所有文件的属性。 你可以使用

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

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

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

我无法删除取景器信息,并重新启动没有工作。 对于我(我已经安装了Sierratesting版),这是因为该项目是在我的文档文件夹与iCloud同步。 只要我做了一个项目不是在与iCloud同步的文件夹中,它工作正常,所以错误可能是与iCloud / /而不是与Xcode

这似乎清理了这个问题。 制作一个.atlas文件夹(即“myImages.atlas”),在项目根文件夹的外面。 将您的图像添加到.atlas文件夹。 然后从项目“添加文件到…”的.atlas文件夹,(注意:避免将.atlas文件夹放在art.scnasstes文件夹中,并确保在重build之前清理项目)

这是IOS 10,macOS Sierra,watchOS 3和tvOS 10引入的安全强化更改。

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

要查看哪些文件导致此错误,请在terminal中运行此命令:

$ xattr -lr

取而代之的是实际应用程序包的path。

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

$ 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的“显示包内容”命令浏览包中的文件可能会导致Finder信息被添加到这些文件中。 否则,审计您的构build过程以查看扩展属性的添加位置。