iOS 错误 "Embedded binary is not signed with the same certificate as the parent app"
iOS error "Embedded binary is not signed with the same certificate as the parent app"
这是我 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)
我不明白,什么是嵌入式二进制签名证书?
我在这里检查了同样错误的问题,但其中 none 与此处出现的问题有关(未代码签名)。
我尝试从 Apple Developer Member Center 撤销我的证书并申请另一个证书,但问题仍然存在。
有人知道如何修复吗?
嵌入式二进制文件指的是您与应用一起部署的 小部件。
在您的情况下,您没有使用任何签名身份对小部件进行签名(因为您的错误显示 "Not Code Signed")。
要解决此问题,请转到您的项目文件,找到您的小部件的目标,然后在“构建设置”选项卡下,找到“代码签名标识”值。选择您用于主应用程序目标的相同代码签名身份。
您还需要创建和配置配置文件 specifically for your widget 当您想要发布它时。
当我在开发者门户中的所有应用程序 ID 上未正确设置应用程序组时,我收到了这个错误。因此,应用程序中的应用程序组无法正常工作,并且无法对扩展程序或 Watchkit 应用程序的二进制文件进行签名。
Whosebug 上的解决方案有时 none 有效。那样的话,
解决方案
- 确保MainApp和EmbeddedApp的Signing(Debug)、Signing(Release)和Enabled capabilities的任何部分都没有红色mark/issue
- 确保证书和配置文件都安装在 login/system 钥匙串下。
- 确保您的证书从不设置为始终信任。访问权限必须保持为使用系统默认值
奇怪的是,为了修复此错误,我不得不从我的项目中删除产品文件夹。 Xcode然后崩溃,重新打开后,效果很好!
当您的 Today 扩展程序的 部署目标 比父应用程序更新时,也会显示此错误。它们必须相同。
我已将 iOS 应用设置为 10.0 并添加了 Today 扩展程序,该扩展程序自动设置为最新的 11.4。这导致错误出现。只需将扩展目标的部署目标更改为 10.0 即可解决问题。
向主应用程序目标添加 Copy Files
构建阶段后出现此错误。
Copy Files
Destination: Absolute Path
Path: /Applications
File: MyApp.app
这是我第一次 运行 应用程序时的效果。
在随后的运行中,Xcode 开始抱怨证书不匹配。
删除复制文件构建阶段修复了证书不匹配问题。我仍在寻找一种无错误复制文件的方法。
相同问题链接:
这个问题好像是在xcode10出现的,而且分辨率和前面提到的不一样。
I was able to fix (or rather bypass) the error by setting the Build
System to Legacy (via File > Workspace Settings)
Another interesting thing to note is that the signing error would not
occurr if I was building to an actual device (i.e. before changing the
Build System to Legacy). It would only occurr when building using the
simulator and only on Xcode 10 beta 3, 4 and 5.
我在迁移到 Xcode 10 时遇到了这个问题,并设法通过更新 "Build Settings"> "Valid Architectures" 中的架构来修复 Watch 目标 至
$(ARCHS_STANDARD)
我在代码中出现另一个编译时错误时遇到此错误。
我的新目标以前从未构建过。
所以我想我会先修复这个错误。但事实证明,修复另一个错误使 Xcode 能够构建目标并修复另一个错误本身。
Swift 5。在我的案例中,简单的方法检查我完成的屏幕截图
检查您是否有更多目标,例如 oneSignal 或其他目标,并检查您是否有与主要目标相同的团队。
我在尝试在 Xcode 中构建 WatchOS 应用程序时遇到此错误 11 - 我尝试了此帖子和其他 SO 帖子中的所有各种建议,但最终起作用的是将 Xcode 切换到使用旧版构建系统。
转到:文件 |项目(或工作区)设置 |构建系统
和select遗留构建系统
假设
- 我正在使用的应用名为 TestApp(出于隐私考虑)
- 以下步骤在Xcode11.1
中测试
- 我用来编译的方案是AdHoc
- 该应用具有推送通知功能
问题
在我的案例中,问题是由两个目标的签名之间的 差异 引起的。问题介于:
- TestApp 目标(即错误中称为 Parent App Signing Certificate)
- notificationServiceExtension 目标(即错误中的内容称为 嵌入式二进制签名证书 )。
分辨率
在我的 AdHoc 方案 中,在 TestApp 目标下,我禁用了自动签名,因为我想指定配置文件和证书。
我遵循的步骤是:
- 来自
Signing & Capabilities -> AdHoc -> Signing (section)
- 删除了所选
下自动管理签名的勾选
- 选择了我想使用的配置文件
- 来自
Build Settings -> Signing (section)
- 在
Code Signing Identity
下,为 AdHoc
和 Any SDK
选择我想使用的证书
- 在
Code Signing Style -> AdHoc
下,选择手动
- 在
Provisioning Profile -> AdHoc
下,选择我想要使用的配置文件(即与步骤 1.2 相同)
错误被抛出是因为我没有将相同的设置应用到 notificationServiceExtension 目标(它仍在使用自动签名,因此是另一个证书)。一旦我也为这个目标重复了上述步骤,错误就消失了。
我希望它能对某人有所帮助,因为这个错误让我抓狂!
检查您的钥匙串访问过期证书未删除,这就是它显示错误的原因。
XCode 12.5
就我而言,我遵循了 Shakeel Ahmed 的回答。但我还需要对 Pod 文件进行此更改。
您可以在此处找到更多信息 https://github.com/facebook/react-native/issues/31480#issue-876308920
检查您排除的架构
我在 Unity.iPhone 项目中遇到过同样的问题。
我们为应用程序附带的贴纸扩展嵌入了一个目标。
Stickers 扩展目标是抱怨代码签名设置与父应用不匹配的目标。
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: Software Signing
Parent App Signing Certificate: Apple Distribution
当 Stickers Extension 目标构建设置设置为 ARCHS_STANDARD(arm7、arm64),而父应用程序设置为 arm64 时,会发生这种情况。
我通过将扩展的 ARCHS 构建 属性 设置为 arm64 来修复此问题。
看看吧,我怀疑这个输出捕获了一堆不同的问题,只是没有在日志消息中指定任何细节。
在我的例子中,关键是删除 'Products' 文件夹。然后构建成功。此外,之后我做了 git reset --hard
并再次尝试,结果相同。
我在按照 SwiftUI documentation 将 iOS 应用程序与 watchOS 集成时遇到问题。
问题是扩展不在同一个开发团队下,所以我们尝试编译它时会失败。
与架构无关,与信任无关。
解决方案:
ScreenShot for xcode
- 转到项目总文件
- 检查侧边栏上的扩展文件夹(检查屏幕截图编号 2)
- 切换到签名和功能选项卡
- 选择你的团队(需要匹配master项目的开发团队)
这是我 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)
我不明白,什么是嵌入式二进制签名证书?
我在这里检查了同样错误的问题,但其中 none 与此处出现的问题有关(未代码签名)。
我尝试从 Apple Developer Member Center 撤销我的证书并申请另一个证书,但问题仍然存在。
有人知道如何修复吗?
嵌入式二进制文件指的是您与应用一起部署的 小部件。
在您的情况下,您没有使用任何签名身份对小部件进行签名(因为您的错误显示 "Not Code Signed")。
要解决此问题,请转到您的项目文件,找到您的小部件的目标,然后在“构建设置”选项卡下,找到“代码签名标识”值。选择您用于主应用程序目标的相同代码签名身份。
您还需要创建和配置配置文件 specifically for your widget 当您想要发布它时。
当我在开发者门户中的所有应用程序 ID 上未正确设置应用程序组时,我收到了这个错误。因此,应用程序中的应用程序组无法正常工作,并且无法对扩展程序或 Watchkit 应用程序的二进制文件进行签名。
Whosebug 上的解决方案有时 none 有效。那样的话,
解决方案
- 确保MainApp和EmbeddedApp的Signing(Debug)、Signing(Release)和Enabled capabilities的任何部分都没有红色mark/issue
- 确保证书和配置文件都安装在 login/system 钥匙串下。
- 确保您的证书从不设置为始终信任。访问权限必须保持为使用系统默认值
奇怪的是,为了修复此错误,我不得不从我的项目中删除产品文件夹。 Xcode然后崩溃,重新打开后,效果很好!
当您的 Today 扩展程序的 部署目标 比父应用程序更新时,也会显示此错误。它们必须相同。
我已将 iOS 应用设置为 10.0 并添加了 Today 扩展程序,该扩展程序自动设置为最新的 11.4。这导致错误出现。只需将扩展目标的部署目标更改为 10.0 即可解决问题。
向主应用程序目标添加 Copy Files
构建阶段后出现此错误。
Copy Files
Destination:Absolute Path
Path:/Applications
File:MyApp.app
这是我第一次 运行 应用程序时的效果。
在随后的运行中,Xcode 开始抱怨证书不匹配。
删除复制文件构建阶段修复了证书不匹配问题。我仍在寻找一种无错误复制文件的方法。
相同问题链接:
这个问题好像是在xcode10出现的,而且分辨率和前面提到的不一样。
I was able to fix (or rather bypass) the error by setting the Build System to Legacy (via File > Workspace Settings)
Another interesting thing to note is that the signing error would not occurr if I was building to an actual device (i.e. before changing the Build System to Legacy). It would only occurr when building using the simulator and only on Xcode 10 beta 3, 4 and 5.
我在迁移到 Xcode 10 时遇到了这个问题,并设法通过更新 "Build Settings"> "Valid Architectures" 中的架构来修复 Watch 目标 至
$(ARCHS_STANDARD)
我在代码中出现另一个编译时错误时遇到此错误。
我的新目标以前从未构建过。
所以我想我会先修复这个错误。但事实证明,修复另一个错误使 Xcode 能够构建目标并修复另一个错误本身。
Swift 5。在我的案例中,简单的方法检查我完成的屏幕截图
检查您是否有更多目标,例如 oneSignal 或其他目标,并检查您是否有与主要目标相同的团队。
我在尝试在 Xcode 中构建 WatchOS 应用程序时遇到此错误 11 - 我尝试了此帖子和其他 SO 帖子中的所有各种建议,但最终起作用的是将 Xcode 切换到使用旧版构建系统。
转到:文件 |项目(或工作区)设置 |构建系统
和select遗留构建系统
假设
- 我正在使用的应用名为 TestApp(出于隐私考虑)
- 以下步骤在Xcode11.1 中测试
- 我用来编译的方案是AdHoc
- 该应用具有推送通知功能
问题
在我的案例中,问题是由两个目标的签名之间的 差异 引起的。问题介于:
- TestApp 目标(即错误中称为 Parent App Signing Certificate)
- notificationServiceExtension 目标(即错误中的内容称为 嵌入式二进制签名证书 )。
分辨率
在我的 AdHoc 方案 中,在 TestApp 目标下,我禁用了自动签名,因为我想指定配置文件和证书。
我遵循的步骤是:
- 来自
Signing & Capabilities -> AdHoc -> Signing (section)
- 删除了所选 下自动管理签名的勾选
- 选择了我想使用的配置文件
- 来自
Build Settings -> Signing (section)
- 在
Code Signing Identity
下,为AdHoc
和Any SDK
选择我想使用的证书 - 在
Code Signing Style -> AdHoc
下,选择手动 - 在
Provisioning Profile -> AdHoc
下,选择我想要使用的配置文件(即与步骤 1.2 相同)
- 在
错误被抛出是因为我没有将相同的设置应用到 notificationServiceExtension 目标(它仍在使用自动签名,因此是另一个证书)。一旦我也为这个目标重复了上述步骤,错误就消失了。
我希望它能对某人有所帮助,因为这个错误让我抓狂!
检查您的钥匙串访问过期证书未删除,这就是它显示错误的原因。
XCode 12.5
就我而言,我遵循了 Shakeel Ahmed 的回答。但我还需要对 Pod 文件进行此更改。
您可以在此处找到更多信息 https://github.com/facebook/react-native/issues/31480#issue-876308920
检查您排除的架构
我在 Unity.iPhone 项目中遇到过同样的问题。 我们为应用程序附带的贴纸扩展嵌入了一个目标。
Stickers 扩展目标是抱怨代码签名设置与父应用不匹配的目标。
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: Software Signing
Parent App Signing Certificate: Apple Distribution
当 Stickers Extension 目标构建设置设置为 ARCHS_STANDARD(arm7、arm64),而父应用程序设置为 arm64 时,会发生这种情况。
我通过将扩展的 ARCHS 构建 属性 设置为 arm64 来修复此问题。
看看吧,我怀疑这个输出捕获了一堆不同的问题,只是没有在日志消息中指定任何细节。
在我的例子中,关键是删除 'Products' 文件夹。然后构建成功。此外,之后我做了 git reset --hard
并再次尝试,结果相同。
我在按照 SwiftUI documentation 将 iOS 应用程序与 watchOS 集成时遇到问题。
问题是扩展不在同一个开发团队下,所以我们尝试编译它时会失败。
与架构无关,与信任无关。
解决方案:
ScreenShot for xcode
- 转到项目总文件
- 检查侧边栏上的扩展文件夹(检查屏幕截图编号 2)
- 切换到签名和功能选项卡
- 选择你的团队(需要匹配master项目的开发团队)