嵌入式二进制验证实用程序错误

Embedded Binary Validation Utility Error

从昨天开始 Xcode 在 运行 我的 iPhone 上尝试 运行 我的 WatchKit 应用程序时正在做一些愚蠢的事情。 它给了我错误:

Embedded Binary Validation utility Error

Error: warning: Is a directory

它不是很有用,而且它似乎在抱怨我的 Watchkit 扩展目标的配置文件。我想我按照 .

正确设置了它

这就是我设置个人资料的方式。三个 App ID 和六个配置文件(三个用于开发,三个用于分发)。

主应用程序:

WatchKit 扩展:

WatchKit 手表应用程序:

我已经能够通过正确的配置文件设置解决问题。

使用 Xcode 6.2 我已经能够使用自动设置进行 development/debug 构建,并且没有额外的 PP 用于在门户中进行开发,但是使用团队配置。
现在有了 Xcode 6.3,我不得不在门户中添加 3 explicit PPs 用于开发,并在项目设置中分配它们。

我将我的自定义框架链接并嵌入到 WatchKit 扩展和应用程序中。从 WatchKit Extension 的 General > Embedded Binaries 中删除框架为我修复了它。我确实必须删除我的 Build 文件夹并重新启动 Xcode.

我听从了@dogsgod 的建议,撤销了我所有的证书等。重新开始,6 个配置文件,没有运气。这样做了将近 6 个小时后,另一位团队成员检查了它并且它起作用了(让 xcode 为他们修复问题)。确保为所有应用程序 ID 启用了群组(我正在使用群组在 watchkit 和主应用程序之间共享数据)

所以,我认为这只是我的 xcode。

然后我去git克隆了,然后编译就好了。

也许我的 gitignore 中的所有内容都摆脱了阻止我的任何文件。或者也许是因为我在他们提交后将其删除。在这一点上它几乎只是巫术,但它起作用了

我也一直在与这个错误作斗争。对我来说,有时它会建立,有时不会。这就是我目前能够存档我的 WatchKit 应用程序的方式。我并没有声称知道为什么会这样,只是说它对我有用。

  1. 清理 Shift-Command-K
  2. 退出Xcode
  3. 删除 ~Library/Developer/Xcode/Derived 数据中的文件
  4. 重新打开 Xcode 并存档

更新: 我在另一个项目中遇到了这个问题,并设法通过删除我的 WatchKit 应用程序和扩展目标名称中的空格来解决它。所以在我的目标名称是 APPNAME WatchKit AppAPPNAME WatchKit Extension 之前将它们更改为 APPNAMEWatchKitAppAPPNAMEWatchKitExtension 修复了一切!

原文: 再加上我的两分钱,我已经为这个问题苦苦挣扎了几个星期。我已将范围缩小到在项目中包含 CocoaPods,但没有更具描述性的错误,我不知道为什么。

我知道我的配置文件是正确的,因为一个空白项目(包括一个 WatchKit 目标)已成功存档。我的 WatchKit 扩展中没有静态库,所以这也不是问题..

最后,唯一可靠的工作是在终端中使用 xcodebuild + xcrun 来构建和存档我的项目。 This article 在终端很好地解释了 xcode。

对我来说,解决这个问题的唯一方法是从架构名称和手表应用程序名称中删除所有空格。

要更改架构名称:(例如架构是 "amazingapp RC")

1) 单击 xCode 中的架构(这是您选择 device/simulator 的位置)
2) 从列表中选择:"edit schema"
3)当新模式打开时,按左下角的"duplicate schema"。
4) 选择不带空格的正确名称并保存。
5) 现在按管理方案和 select 旧方案。
6) 按“-”按钮删除它

现在是扩展名称的时候了:

1) 单击 xCode 中的架构(这是您选择 device/simulator 的位置)
2) 选择扩展架构
3) 点击"edit schema"
4) 选择左下角的Archive (release)
5) 在 "Archive Name"
中输入不带空格的专有名称 6) 关闭。

现在构建->清理,构建->归档,你应该可以开始了。

在我的例子中,结果是我的 Xcode 偏好。

我将 DerivedData -> Advanced Settings (Build Location) 设置为 "Custom" = "Relative to Workspace".

我将其更改为 Unique,这让它起作用了。

希望对某人有所帮助。

编辑: 一天后,我可以再分享一个想法。虽然 git 克隆有效,但在我进行一些更改后问题再次出现。这让我想知道问题是否来自错误的文件格式(如非 unix-like EOF 或类似格式)或只是 Xcode 中的错误。无论如何,我目前的工作流程如下:

1) git clone to another directory
2) archive
3) if there is an error, I need to fix it, 
4) git commit & git push
5) repeat steps 1 & 2 ... 

这很麻烦,但这是我可以存档我的项目并将其实际上传到 App Store 的唯一方法...

原版POST: 我也遇到过这个错误。我的项目使用 CocoaPods、多个目标和构建方案以及组权利。有时我无法构建,虽然这是可以修复的(见下文),但归档问题持续了更长的时间。和它斗了两天,总结如下:

我已经关注了所有回复,我可以看到有时会这样做:

1) 清理项目

2)(可选 - 并非总是需要)重启 Xcode

3) 删除派生数据文件夹内容

允许我编译和 运行 应用程序。但我仍然无法存档。有时似乎我必须做两次。

除上述之外,我还尝试了(但未能存档)以下建议:

  • 重命名目标名称(和包含的文件夹)以不包含空格,Extension 和 WatchApp 目标在它们各自的名称中没有空格,但项目不会存档(无更改)
  • 我检查过扩展目标中没有嵌入的二进制文件(watchApp 没有这个选项)
  • 我已尝试将部署目标(默认为 iOS 8.3 for Xcode 6.4)更改为 8.2 和 8.4,但归档失败。
  • 我已经为 "adHoc" 和 "release schemas" 重新创建了 AppID 和所有配置文件,但也不走运。
  • 并且我已经验证我正在尝试归档的当前模式没有空格,但它仍然没有改变任何东西。
  • 我什至尝试了最后一个建议,即更改默认的 Derived Data 文件夹位置,但正如我所怀疑的那样,它没有任何改变。

有趣的是,真正奏效的是 Mike Manh 的建议:将存储库签出到另一个文件夹

将 repo 克隆到一个新的空文件夹后,一切突然开始工作。这使我得出结论,我当前的项目文件夹中可能有一些剩余的 files/broken links/whatever。我想这可能是在我尝试将我的 watchKit 开发分支重新定位到当前主分支时发生的。这开始给我带来一些疯狂的冲突,我终于中止了变基。可能是存档选项停止正常运行的时候。

我遇到了同样的问题。在 Xcode 6.* 中,我通过清理我的 DerivedData 文件夹修复了它。但是在新 Xcode 7 中它没有帮助。所以我删除了 WatchKit Extension 和 WatchKit App 中的空格("planckMailiOS WatchKit App" -> "planckMailiOSWatchKitApp" 和 "planckMailiOS WatchKit Extension" -> "planckMailiOSWatchKitExtension")。