macOS Sierra Xcode 8.3.3中的代码签名错误 – 不允许使用资源分叉,Finder信息或类似碎片
已经尝试过: macOS Sierra,Xcode 8上的代码签名错误
请参阅图像显示错误
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
在代码签名部分,它允许我selectconfiguration文件和证书…但仍然给错误。
如何解决这个问题?
解决scheme1:
苹果开发者网站上面的问题解决方法
在terminal执行下面的命令。
xattr -cr <path_to_app_bundle>
清理Xcode和重build。 干杯
解决scheme2:
您可以通过查找保存查找器信息的文件来解决这个问题。
在terminal中,转到项目根目录并执行
ls -alR@ . > kundapura.txt
这会在当前目录中创buildkundapura.txt。 现在searchcom.apple.FinderInfo并清除所有文件的这个属性。 你可以这样做
xattr -c <filename>
例如: xattr -c guru.png
一旦你清除所有的代码标志的作品。 清理Xcode和重build。 干杯
解决scheme3:受Mark McCorkle的答复启发
在terminal中,转到项目的根目录并逐个执行命令
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和重build。 完成。
错误来自图像文件中的属性。 这发生在我们的graphicsdevise师从属性保存图像从Photoshop。
这里有一个简单的命令来查找所有的png文件并删除它们的属性。 在terminal的项目根目录下运行。 清理和重build; 问题解决了。
find . -type f -name '*.png' -exec xattr -c {} \;
如果您在编码应用程序时遇到此错误:
资源分叉,Finder信息或类似碎片不允许命令/ usr / bin / codesign失败,退出代码为1
转到您的项目根文件夹并执行
find . | xargs -0 xattr -c
这将清除所有文件的属性。
在塞拉利昂,关于什么可以在签名捆绑的规则已经收紧,资源叉子不再允许。 AppleScript一直在资源分配中保存信息,尽pipe这些信息已经被使用了很长时间。 有了Sierra,当你保存一个脚本时,这个资源分叉信息将不再被保存。
这意味着你不能在Sierra之前的版本中编码上一次保存的脚本; 你必须保存在塞拉利昂能够签署塞拉利昂。
可能受到影响的人是谁在脚本中捆绑了其他脚本(cordova?)。 他们将不能签署容器脚本,直到所有的embedded式脚本已被重新保存在塞拉利昂。
更新:
看起来像这样也行得通:
xattr -rc .
如果你有任何不足的权限错误尝试预先安装sudo: sudo xattr -rc .
在技术问答QA1940中有官方苹果回答这个问题。
这是IOS 10,macOS Sierra,watchOS 3和tvOS 10引入的安全强化更改。
代码签名不再允许应用程序包中的任何文件具有包含资源分支或Finder信息的扩展属性。
要查看哪些文件导致了此错误,请在terminal中运行此命令:
xattr -lr <path_to_app_bundle>
您还可以使用xattr命令从应用程序包中删除所有扩展属性:
xattr -cr <path_to_app_bundle>
<path_to_app_bundle>
可以replace为Xcode项目的目录。 例如~/Development/MyProject
所有关于清理文件是好的,但繁琐的多个项目。
graphics应用程序(比如老版本的photoshop)在外部文件中以旧的方式编写附加信息(我们现在称之为元数据..),或者它们来自较旧的OSX,如下所示的文件:
例如,当解压缩文件夹时,“com.apple.ResourceFork”和“com.apple.FinderInfo”。
Xcode 8拒绝将它添加到构build中(正如你将它们添加到一个带有“git –add”的项目中的那样)。你可以在terminal中recursion地find并删除它们,但是可能会很乏味。
我写了一个小的免费实用程序来删除它..希望它可以帮助..
https://itunes.apple.com/us/app/cleandetritus/id1161108431?ls=1&mt=12
对于那些只是试图开发应用程序,而不必剥离每个新创build的PNG添加到macOS目标的扩展属性的用户,可以通过添加用户定义的构build设置临时禁用代码签名:
CODE_SIGNING_ALLOWED = No
显然,发布应用程序需要最终处理这个问题,但是这样可以在像我这样的情况下进行开发,在这种情况下,不必直接省略在Sierra中的代码签名(在过去的OS X / Xcode上这样做更容易)。
根据RGriffith的评论,这里有一些不知道如何添加自定义构build设置的人的截图。
简单的解决scheme:
我是怎么做的 (为我工作)
步骤1: – 进入这个文件夹 – 从您的发现者按下选项去 – >转到文件夹
然后input你的项目path,就像这个例子: – Library / Developer / Xcode / DerivedData / yourprojectname / Build / Products / Debug-iphoneos
现在你可以看到一个窗口popup列表的可用文件,在那里你看到你的App.app文件[不要做任何事情只是等待第2步]。
第2步: – 打开新的terminal,只需键入cd,然后拖动第1步yourApp.app到terminal,现在你将得到的应用程序的path,现在按下inputbutton。
第3步: – 现在input这个命令**
xattr -rc。
不要错过“。”(点)按回车键。
就这样,去你的Xcode项目,清理并再次运行。
处理源文件属性的最简单方法是让Xcode在运行codesign之前清理归档。 去做这个:
- 在XCode中select你的目标
- select“构build阶段”选项卡
- 按+符号
- select新build运行脚本阶段
-
为脚本input以下内容:
xattr -cr〜/ Library / Developer / Xcode / DerivedData || 回声清晰
现在,当你build立你的目标时,它将清除任何会破坏密码的属性。 通过在此阶段清除,您不必更改您的源代码/项目目录。
脚本的“|| echo Clear”部分确保了即使xattr错误也能继续进行项目构build。
如果您在您的代码存储库上使用诸如DropBox之类的程序来添加属性,则此方法很好,因为它不会更改您的源项目,而只会更改构build的存档。
您可能需要更改path以匹配您的DerivedData目录 – 此path将显示在codesign错误旁边。
—–如果你不能应用以上的解决scheme,由于缺乏知识或其他的东西。
只要我在Sierra上启用了iCloud Drive,我就遇到了这个问题。 而我的项目在一个与iCloud Drive同步的文件夹中。 我想这是添加这些额外的属性。
临时解决scheme:
禁用iCloud Drive作为项目所在的文件夹。
这个问题昨天来了。
(What's wrong)
我更新的图像资源通过手动取代文件取景器,我失败了这个编译错误。
(What's right)
不要以这种方式更新图像。 之后,我将图像拖放到Xcode中的“xcassets”。 没有更多的错误再次出现。
我的问题是我在代码中所做的每一个改变,并再次执行错误再次出现。 然后我find一个解决scheme来自动执行每个编译/执行代码的命令。
感谢@ rich-able我发现了“运行脚本”。 然后我把命令“xattr -cr” 在该领域。
最简单的解决办法可能是如果你使用git 。 尝试:
$ git stash $ git stash pop
Git不存储文件元数据,上面的内容将把它全部剥离。
我的问题是,我使用cordova约1年前build立的应用程序,但它与新版本的Xcode不兼容,所以我只是用cordova build ios
,它再次工作。
最好的解决scheme之一是去terminalinput这个
xattr -cr "Full path of your project"
要find完整的path右键单击Xcode项目 – >获取信息 – >复制path,并用replace。 然后input下面的命令
xattr -cr "Full path of your project"
清理并完成。
如果xattr命令不能解决这个问题,这可能是由于XCode 9的一个bug:让我们尝试删除并重新添加包含Xcode中受影响文件的资源文件夹(在我的情况下是一个.xcassets)。 (您应该了解哪些是通过xattr -lr命令执行的受影响的文件)
我用过。 使用terminal窗口。 导航到您的项目并执行以下操作:
xattr -rc .