macOS High Sierra Xcode中的代码签名错误 - 不允许资源分叉,Finder信息或类似碎片

时间:2016-09-23 04:54:05

标签: ios xcode xcode8 macos-sierra

已经尝试过:Code Sign Error on macOS Sierra, Xcode 8

请参阅显示错误的图片 enter image description here

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

在代码签名部分,它允许我选择配置文件和证书......但仍然给出错误。 enter image description here

enter image description here

如何解决这个问题?

24 个答案:

答案 0 :(得分:482)

解决方案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并重新构建。完成。

答案 1 :(得分:154)

错误来自图像文件中的属性。这是因为我们的图形设计师使用属性从photoshop保存图像。

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

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

答案 2 :(得分:84)

如果在对应用进行协同设置时出现此错误:

  

不允许使用资源分叉,Finder信息或类似碎片   命令/ usr / bin / codesign失败,退出代码为1

转到项目根文件夹并执行

find . | xargs -0 xattr -c

这将清除所有文件的属性。

在Sierra,已经收紧了关于签署的捆绑包中的内容的规则,并且不再允许资源分叉。 AppleScript一直在资源分析中保存信息,尽管该信息长期未被使用。使用Sierra,当您保存脚本时,将不再保存此资源分叉信息。

这意味着您无法对Sierra之前版本中保存的脚本进行编码;你必须在Sierra保存才能登录Sierra。

可能受影响的人是谁在他们的脚本中捆绑其他脚本(cordova?)。在Sierra。

下重新保存所有嵌入式脚本之前,他们将无法签署容器脚本

更新:

似乎这样也有效:

xattr -rc .

如果您有任何不足的权限错误,请尝试添加sudo:sudo xattr -rc .

答案 3 :(得分:21)

Technical Q&A QA1940中有关于此问题的官方Apple答案。

  

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

     

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

     

要查看导致此错误的文件,请在中运行此命令   终端:xattr -lr <path_to_app_bundle>

     

您还可以从应用包中删除所有扩展属性   xattr命令:xattr -cr <path_to_app_bundle>

<path_to_app_bundle>可以替换为Xcode项目的目录。例如~/Development/MyProject

答案 4 :(得分:18)

处理源文件属性的最简单方法是让Xcode在运行codesign之前清除存档。要做到这一点:

  1. 在XCode中选择目标
  2. 选择Build Phases选项卡
  3. 按+符号
  4. 选择新建运行脚本阶段
  5. 为脚本输入以下内容:

    xattr -cr~ / Library / Developer / Xcode / DerivedData || echo clear

  6. 现在,当您构建目标时,它将清除任何会破坏代码签名的属性。通过在此阶段清除,您不必更改源代码/项目目录。

    &#34; || echo Clear&#34;脚本的一部分确保即使xattr错误,项目构建也会继续。

    如果在代码库中使用DropBox等程序添加属性,则此方法很有用,因为它不会更改源项目,只会更改构建的存档。

    您可能需要更改路径以匹配DerivedData目录 - 此路径将显示在codesign错误旁边。

    xattr codesign xcode fix

答案 5 :(得分:15)

关于清除文件的所有内容都很好,但对于多个项目来说很乏味。

图形应用程序(如旧版本中的photoshop)在外部文件中以旧方式编写其他信息(我们现在将其称为元数据..),或者它们来自较旧的OSX,文件如:

例如,当解压缩文件夹时,请输入“com.apple.ResourceFork”和“com.apple.FinderInfo”。

Xcode 8拒绝将其添加到构建中(因为您将它们添加到带有“git --add。”的项目中。也许..) 您可以在终端中以递归方式查找并删除它们,但这可能很乏味。

我写了一个小的免费工具来删除它..希望它可以帮助..

https://itunes.apple.com/us/app/cleandetritus/id1161108431?ls=1&mt=12

答案 6 :(得分:15)

我使用了以下命令。使用终端窗口。导航到您的项目并执行以下操作:

xattr -rc .

答案 7 :(得分:10)

简单的解决方案: -

我是怎么做的 [为我工作]

第1步: - 转到此文件夹 - 从您的取景器按选项Go - &gt;转到文件夹

然后像这样输入您的项目路径 例:- 图书馆/开发商/ Xcode中/ DerivedData /为yourprojectname /编译/产品/调试-的iPhoneOS

现在你可以看到一个窗口弹出,其中包含可用文件列表,你看到你的app.app文件[不要做任何事情只是等待第2步]。

第2步: - 打开新终端并输入cd然后只需将第1步yourApp.app拖到终端,现在您将获得该应用的路径,现在按下回车键。

第3步: - 现在输入这个命令**

  

xattr -rc。

不要错过“。”(点)按enter键。

就是这样,转到Xcode项目并清理并再次运行。

答案 8 :(得分:10)

对于那些只是尝试开发应用程序而不必在每个新创建的Photoshop上删除扩展属性的PNG添加到macOS目标的人,你可以通过添加用户定义的构建设置暂时禁用代码签名: / p>

CODE_SIGNING_ALLOWED = No 

显然,分发应用程序的人最终需要处理这个问题,但是这样可以在像我这样的情况下进行开发,而在Sierra中省略代码签名并不是一件容易的事情(在过去的OS X / Xcode上,这样做更容易) )。

根据RGriffith的评论,这里有一些屏幕截图,供那些不确定如何添加自定义构建设置的人截屏。

enter image description here

enter image description here

答案 9 :(得分:8)

-----如果您无法应用上述解决方案,因为缺乏bash知识或其他原因。

我在Sierra上启用iCloud Drive后就遇到了这个问题。我的项目位于与iCloud Drive同步的文件夹中。我想这就是添加这些附加属性的原因。

临时解决方案:

为项目所在的文件夹禁用iCloud Drive。

答案 10 :(得分:4)

您需要删除应用包文件夹并重建应用,如下所述。

我的应用程序被称为:augment

在终端窗口中,转到您的应用程序文件夹 例如:cd / Users / username / Library / Developer / Xcode / DerivedData /

在app文件夹的终端窗口运行命令中 例如:xattr -cr augment-flmbiciuyuwaomgdvhulunibwrms

清洁和GT;构建与GT;运行

Mac Appstore上还有一个名为“CleanDetritus”的免费应用程序,可以删除这些应用程序。

答案 11 :(得分:2)

昨天我遇到了这个问题。

(What's wrong)我通过在finder中手动替换文件来更新图像资源,但是我因编译错误而失败。

(What's right)不要以这种方式更新图像。之后我将图像拖动到Xcode中的'xcassets'。再也不会出现错误了。

答案 12 :(得分:2)

问题在于派生数据,您应该清理派生数据,然后清理项目并构建。请查看this链接。

答案 13 :(得分:1)

我的问题是我在代码中所做的每一项更改再次执行错误都会重新出现。然后我找到了一个解决方案,可以在每次编译/执行代码时自动执行命令。

感谢@ rich-able,我发现了#34;运行脚本&#34;。然后我把命令&#34; xattr -cr。&#34;在现场。

XCODE Solution

答案 14 :(得分:1)

最简单的修复方法可能是使用 git 。尝试:

$ git stash
$ git stash pop

Git不存储文件元数据,上面会将它全部删除。

答案 15 :(得分:0)

我的 .app 位于网络安装驱动器上。

type Asset = {
  AssetCode?: string;
  Contracts?: Array<Contract>;
  Warranty: WarrantyInfo;
};

type Contract = {
  ContractNumber: string;
};

type WarrantyInfo = {
  Purchased: Date;
};

const value: WithConfidence<Asset> = {
  Warranty: {
    confidence: 500,
    value: {
      Purchased: {
        value: new Date(), //Error
        confidence: 500,
      },
    },
  },
  AssetCode: {
    value: "123",
    confidence: 100,
  },
  Contracts: {
    confidence: 400,
    value: [
      {
        ContractNumber: { //Error
          value: "123",
          confidence: 500,
        },
      },
    ],
  },
};

我不知道是不是太长的路径或者它在 NAS 设备上的事实是否有问题。我将 .app 复制到我的本地下载目录,然后就可以进行协同设计了。

codesign -f -vv --preserve-metadata=entitlements -s {*my Apple distribution cert SHA*} my.app
my.app: resource fork, Finder information, or similar detritus not allowed

答案 16 :(得分:0)

我不知道发生了什么事,但是当我在模拟器上运行flutter应用程序时,遇到了错误。我使用了flutter clean命令并删除了派生数据,然后一切正常。

答案 17 :(得分:0)

您可以删除派生数据 Xcode -> Preferences

然后单击Derived Data下面的箭头,并清空文件夹Derived Data

答案 18 :(得分:0)

我发现如果我在color tag下的文件夹中添加DerivedData,则在设备上进行调试时会出现上述错误。

为我删除color Tag修复此错误。

enter image description here

答案 19 :(得分:0)

我也面临同样的问题,只需重新启动我的Macbook即可解决。

答案 20 :(得分:0)

打开终端,然后运行此命令。

xattr -cr“.app文件的路径”

答案 21 :(得分:0)

如果xattr命令不起作用,这可能是由于XCode 9错误: 让我们尝试删除并重新添加资源文件夹(在我的情况下是一个.xcassets),其中包含来自Xcode的受影响文件。 (您应该通过xattr -lr命令了解以前哪些受影响的文件)

答案 22 :(得分:0)

最好的解决方案之一是 转到终端输入此

  

xattr -cr "Full path of your project"

要查找右键单击Xco​​de项目的完整路径 - >获取信息 - &gt;复制路径并替换为。 然后在下面输入命令

  

xattr -cr "Full path of your project"

清理并完成构建。

答案 23 :(得分:0)

我的问题是我在1年前使用cordova构建应用程序,但它与新版本的xcode不兼容,所以我只使用了cordova build ios并再次运行。