代码签名错误每当我尝试在新的SceneKit应用程序中替换库存文件时

时间:2016-06-15 09:01:05

标签: ios xcode swift scenekit xcode8

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

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

我在“hero.scnassets”中创建了一个.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

结论问题:

  

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

     

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

P.S:这是一个简单的文件结构。https://github.com/Juniper/py-junos-eznc

7 个答案:

答案 0 :(得分:109)

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

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

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

3)运行

  

xattr -rc。

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

重建你的应用程序!

答案 1 :(得分:18)

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

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

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

答案 2 :(得分:9)

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

我通过搜索我的文件中设置的com.apple.FinderInfo属性来修复它

ls -alR@ . > investigate.txt

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

执行此操作

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

我无法移除取景器信息并重新启动无法正常工作。对我来说(我安装了Sierra beta),因为该项目位于我的Documents文件夹中,与iCloud同步。一旦我将项目放在与iCloud同步的文件夹中,它就能正常工作,所以错误也可能与iCloud有关,而不是与Xcode有关

答案 5 :(得分:1)

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

答案 6 :(得分:1)

这是iOS 10,macOS Sierra,watchOS 3和tvOS 10引入的安全加固更改。

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

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

$ xattr -lr

替换实际应用包的路径。

以下是此命令的一个示例:

$ xattr -lr Foo.app

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

<00> 00000000 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 | ................ |

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

$ xattr -cr

请注意,使用Finder的“显示包内容”命令浏览包中的文件可能会导致将Finder信息添加到这些文件中。否则,请审核构建过程以查看扩展属性的添加位置。