iOS错误"嵌入式二进制文件未使用与父应用程序相同的证书进行签名"

时间:2015-01-12 16:09:51

标签: xcode swift certificate xcode6 provisioning-profile

这是我在IOS应用程序开发中的第一步,我遇到了一些我无法解决的问题。

error: Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target's code sign settings match the parent app's.

    Embedded Binary Signing Certificate:    Not Code Signed
    Parent App Signing Certificate:         iPhone Developer: Emil Adz (9QNEF95395)

我无法理解,什么是嵌入式二进制签名证书

我在这里回答了同样的错误,但没有一个与此处提出的问题有关( Not Code Signed )。

我试图从Apple开发者会员中心撤销我的证书并申请另一个证书,但问题仍然存在。

有些人知道如何修复它吗?

15 个答案:

答案 0 :(得分:37)

嵌入式二进制文件指的是与您的应用一起部署的小部件

在您的情况下,您没有使用任何签名身份对您的小部件进行签名(因为您的错误是" Not Code Signed")。

要解决此问题,请转到项目文件,找到窗口小部件的目标,然后在“构建设置”选项卡下,找到“代码签名标识”值。选择您用于主应用目标的相同代码签名身份。

如果要发布配置文件,您还需要创建和配置配置文件specifically for your widget

答案 1 :(得分:25)

有时Stackoverflow上的解决方案都不起作用。在那种情况下,

解决方案

  1. 确保MainApp和EmbeddedApp中的签名(调试),签名(发布)和启用功能的任何部分都没有红色标记/问题
  2. 确保在登录/系统密钥链下安装了证书和配置文件。
  3. enter image description here

    1. 确保您的证书从未设置为始终信任。访问权必须保留为使用系统默认
    2. enter image description here

答案 2 :(得分:8)

似乎此问题出现在xcode 10中,并且分辨率与上述不同。

  

我能够通过设置Build来修复(或绕过)错误   系统到旧版(通过“文件”>“工作区设置”

     

另一个值得注意的事情是签名错误不会   如果我是在构建实际设备(即在更改   建立旧版系统)。仅当使用   模拟器,并且仅适用于Xcode 10 beta 3、4和5。

链接到原始线程:https://forums.developer.apple.com/thread/105537

答案 3 :(得分:5)

当您的Today扩展程序的部署目标比父应用程序更新时,也会显示此错误。它们必须是一样的。

我将iOS应用设置为10.0,并添加了今天自动设置为最新的11.4。这导致出现错误。只需将扩展目标的部署目标更改为10.0即可解决问题。

答案 4 :(得分:3)

如果未在Developer Portal中的所有App ID上正确设置应用程序组,则会出现此错误。因此,应用程序中的应用程序组无法正常工作,无法对扩展程序或Watchkit应用程序的二进制文件进行签名。

答案 5 :(得分:3)

当我迁移到Xcode 10并设法通过将观看目标的“构建设置”>“有效体系结构”中的体系结构更新为

来解决此问题时,
  

$(ARCHS_STANDARD)

该主题对我有很大帮助:https://forums.developer.apple.com/thread/107563

答案 6 :(得分:3)

假设

  • 我正在使用的应用称为 TestApp (出于隐私目的)
  • 以下步骤已在 Xcode 11.1
  • 中进行了测试
  • 我用来编译的方案是 AdHoc
  • 该应用具有推送通知功能

问题

在我的情况下,问题是由两个目标的签署之间的差异引起的。问题出在:

  • TestApp 目标(即错误中的内容称为 Parent App签名证书
  • notificationServiceExtension 目标(即错误中的内容被称为嵌入式二进制签名证书)。

targets

分辨率

在我的 AdHoc方案中,在TestApp目标下,我禁用了自动签名,因为我想指定配置文件和证书。

我遵循的步骤是:

  1. 来自Signing & Capabilities -> AdHoc -> Signing (section)
    1. 从选中的“自动管理签名”中删除了勾号
    2. 选择了我想使用的配置文件

signing&capabilities

  1. 来自Build Settings -> Signing (section)
    1. Code Signing Identity下,为AdHocAny SDK选择我要使用的证书
    2. Code Signing Style -> AdHoc下,选择手册
    3. Provisioning Profile -> AdHoc下,选择我要使用的配置配置文件(即与步骤1.2相同)

build settings

引发错误是因为我没有将相同的设置应用于 notificationServiceExtension目标(该目标仍在使用自动签名,因此仍在使用另一个证书)。只要针对此目标我也重复了上述步骤,该错误就消失了。

我希望它能对某人有所帮助,因为此错误使我疯狂!

答案 7 :(得分:2)

奇怪的是,我不得不从项目中删除products文件夹以修复此错误。 Xcode在重新打开后崩溃,就像一个魅力!

答案 8 :(得分:1)

Copy Files构建阶段添加到主应用程序目标后,我得到了此错误。

  

复制文件
  目的地:Absolute Path
  路径:/Applications
  文件:MyApp.app

这在我第一次运行该应用程序时有效。

在随后的运行中,Xcode开始抱怨证书不匹配。

删除“复制文件”构建阶段可解决证书不匹配的问题。我仍在寻找一种无错误的复制文件的方法。

相同的问题链接:

答案 9 :(得分:0)

我在代码中遇到另一个编译时错误时遇到了这个错误。

我以前从未建立过新目标。

所以我想我会首先修复此错误。但是事实证明,修复另一个错误使Xcode能够构建目标并修复另一个错误本身。

答案 10 :(得分:0)

迅速5。就我而言,简单的方法就是检查此屏幕截图我已经完成

enter image description here

答案 11 :(得分:0)

检查您是否有更多目标,例如oneSignal或其他目标,并检查您是否具有与主要目标相同的团队。

答案 12 :(得分:0)

尝试在Xcode 11中构建WatchOS应用程序时遇到了错误-我尝试了本文档和其他SO帖子中的所有各种建议,但最终起作用的是将Xcode切换为使用旧版构建系统。

转到:文件|项目(或工作区)设置|构建系统

然后选择旧版构建系统

答案 13 :(得分:0)

XCode 12.5

就我而言,我遵循了 Shakeel Ahmed 的回答。但我还需要对 Pod 文件进行此更改。enter image description here

您可以在此处找到更多信息https://github.com/facebook/react-native/issues/31480#issue-876308920

答案 14 :(得分:-1)

检查您的钥匙串访问过期证书没有被删除,这就是它显示错误的原因。