所以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
答案 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信息添加到这些文件中。否则,请审核构建过程以查看扩展属性的添加位置。