macOS High Sierra Xcode中的代码签名错误 - 不允许使用资源分支,Finder信息或类似碎片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了macOS High Sierra Xcode中的代码签名错误 - 不允许使用资源分支,Finder信息或类似碎片相关的知识,希望对你有一定的参考价值。
已经尝试过:Code Sign Error on 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
在代码符号部分,它允许我选择配置文件和证书...但仍然给出错误。
如何解决这个问题?
解决方案1:
Apple开发者网站上面回答问题Here。
在终端执行以下命令:首先转到项目根文件夹
xattr -cr <path_to_app_bundle>
清理Xcode和重新构建。干杯
解决方案2:
您可以通过查找包含查找程序信息的文件来解决此问题。
在终端中,转到项目根目录并执行
ls -alR@ . > kundapura.txt
这会在当前目录中创建kundapura.txt。现在搜索com.apple.FinderInfo并清除所有文件的此属性。你可以这样做
xattr -c <filename>
示例:xattr -c guru.png
一旦清除了所有代码符号就可以了。清理Xcode和重新构建。干杯
解决方案3:受Mark McCorkle的回答启发
在终端中,转到项目的根目录并逐个执行命令
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和重新构建。完成。
-----如果你不能应用上面的解决方案,因为缺乏bash知识或其他东西。
我在Sierra上启用iCloud Drive后就遇到了这个问题。我的项目位于与iCloud Drive同步的文件夹中。我想这就是添加这些附加属性的原因。
临时解决方案:
禁用项目所在文件夹的iCloud Drive。
您将需要删除应用程序包文件夹并重建应用程序,如下所述。
我的应用程序被称为:扩充
在终端窗口中,转到您的应用程序文件夹,例如:cd / Users / username / Library / Developer / Xcode / DerivedData /
在app文件夹的终端窗口运行命令中,例如:xattr -cr augment-flmbiciuyuwaomgdvhulunibwrms
清洁>生成>运行。
在Mac App Store上还有一个名为“Clean Detritus”的免费应用程序,它将删除这些。
这个问题昨天来到我身边。
(What's wrong)
我通过在finder中手动替换文件来更新图像资源,但是我遇到了这个编译错误。
(What's right)
不要以这种方式更新图像。之后我将图像拖动到Xcode中的'xcassets'。再也不会出现错误。
问题出在派生数据中,您应该清理派生数据,然后清理项目并构建。请检查this链接。
我的问题是我在代码中做出的每一个更改,然后重新执行,错误再次出现。然后我找到了一个解决方案,可以在每次编译/执行代码时自动执行命令。
感谢@ rich-able,我发现了“Run Script”。然后我把命令“xattr -cr”。在该领域。
最简单的解决方法可能是你正在使用git。尝试:
$ git stash
$ git stash pop
Git不存储文件元数据,上面将把它全部剥离。
我的问题是我在1年前使用cordova构建应用程序,但它与xcode的新版本不兼容,所以我只是使用cordova build ios
并且它再次起作用。
最好的解决方案之一是转到终端类型
xattr -cr "Full path of your project"
要找到右键单击Xcode项目的完整路径 - >获取信息 - >复制路径并替换为。然后输入以下命令
xattr -cr "Full path of your project"
清洁和完成。
如果xattr命令不起作用,这可能是由于XCode 9错误:让我们尝试删除并重新添加资源文件夹(在我的情况下是.xcassets),其中包含来自Xcode的受影响文件。 (您应该通过xattr -lr命令了解之前受影响的文件)
打开终端,然后运行此命令。
xattr -cr“.app文件的路径”
错误来自图像文件中的属性。这是因为我们的图形设计师使用属性从photoshop保存图像。
这是一个简单的命令,用于查找所有png文件并删除其属性。在终端的项目根目录中运行它。清洁和重建;问题解决了。
find . -type f -name '*.png' -exec xattr -c {} ;
我也面临同样的问题,只需重新启动我的Macbook就可以解决问题。
我发现如果我在color tag
下的文件夹中添加DerivedData
,它将在设备上调试时给出上述错误。
删除color Tag
修复此错误给我。
如果在对应用程序进行协同设置时出现此错误:
资源分叉,Finder信息或类似的碎片不允许命令/ usr / bin / codesign失败,退出代码为1
转到项目根文件夹并执行
find . | xargs -0 xattr -c
这将清除所有文件的属性。
在Sierra,已经收紧了关于签署的捆绑包中的内容的规则,并且不再允许资源分叉。 AppleScript一直在资源分析中保存信息,尽管该信息长期未被使用。使用Sierra,当您保存脚本时,将不再保存此资源分叉信息。
这意味着您无法对上一次保存在Sierra之前的版本中的脚本进行编码;你必须在Sierra保存才能登录Sierra。
可能受影响的人是谁在他们的脚本中捆绑其他脚本(cordova?)。在Sierra下重新保存所有嵌入的脚本之前,他们将无法签署容器脚本。
更新:
看起来像这样也有效:
xattr -rc .
如果你有任何不足的权限错误尝试prepend sudo:sudo xattr -rc .
在Technical Q&A QA1940,这个问题有正式的Apple答案。
这是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>
可以替换为Xcode项目的目录。例如~/Development/MyProject
处理源文件属性的最简单方法是让Xcode在运行codesign之前清理存档。去做这个:
- 在XCode中选择目标
- 选择Build Phases选项卡
- 按+符号
- 选择新建运行脚本阶段
- 为脚本输入以下内容: xattr -cr~ / Library / Developer / Xcode / DerivedData ||回声清楚
现在,当您构建目标时,它将清除任何会破坏代码签名的属性。通过在此阶段清除,您不必更改源代码/项目目录。
脚本的“|| echo Clear”部分确保即使出现xattr错误,项目构建也会继续。
如果在代码存储库中使用DropBox等程序添加属性,则此方法很有用,因为它不会更改源项目,只会更改构建的存档。
您可能需要更改路径以匹配DerivedData目录 - 此路径将显示在codesign错误旁边。
所有关于清除文件都很好,但对于多个项目来说很乏味。
图形应用程序(如旧版本中的photoshop)在外部文件中以旧方式编写其他信息(我们现在称之为元数据..),或者它们来自较旧的OSX,文件如:
例如,当解压缩文件夹时,“com.apple.ResourceFork”和“com.apple.FinderInfo”。
Xcode 8拒绝将它添加到构建中(因为你将它们添加到带有“git --add。”的项目中)也许..)你可以在终端中以递归方式找到并删除它们,但可能很乏味。
我写了一个小的免费工具来删除它..希望它可以帮助..
https://itunes.apple.com/us/app/cleandetritus/id1161108431?ls=1&mt=12
我使用了以下命令。使用终端窗口。导航到您的项目并执行以下操作:
xattr -rc .
简单解决方案: -
我是怎么做的[为我工作]
步骤1: - 转到此文件夹 - 从您的取景器按选项转到 - >转到文件夹
然后输入您的项目路径,如下例所示: - Library / Developer / Xcode / DerivedData / yourprojectname / Build / Products / Debug-iphoneos
现在,您可以看到一个窗口弹出,其中包含可用文件列表,在那里您可以看到yourApp.app文件[不要做任何事情只是等待第2步]。
第2步: - 打开新终端并输入cd然后只需将第1步yourApp.app拖到终端,现在您将获得该应用的路径,现在按下回车键。
第3步: - 现在输入此命令**
xattr -rc。
不要错过“。”(点)按enter键。
就是这样,转到Xcode项目并清理并再次运行。
对于那些刚刚尝试开发应用程序而不必在每个新创建的Photoshop上删除扩展属性的PNG添加到macOS目标的人,您可以通过添加用户定义的构建设置暂时禁用代码签名:
CODE_SIGNING_ALLOWED = No
显然,分发应用程序的人最终需要处理这个问题,但这样可以在像我这样的情况下进行开发,而在Sierra中省略代码签名并不是一件容易的事情(在过去的OS X / Xcode上更容易这样做)。
根据RGriffith的评论,这里有一些截图,供那些不确定如何添加自定义构建设置的人截屏。
MacOS High Sierra:Xcode下载失败使用购买页面安装Xcode 9.3时出错[重复]
2008年MACBOOK装 macOS High Sierra
在macOS High Sierra 10.13.3上的Grails中的FixtureException