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

时间:2014-09-19 06:24:21

标签: ios xcode ios8 xcode6 ios-app-extension

添加Today App Extension Target后,我无法编译项目。 以下是错误:

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.
     

嵌入式二进制签名证书:iPhone开发人员:(开发者名称)(编号)

     

家长App签名证书:iPhone开发人员:(开发者名称)(编号)

但嵌入式二进制证书和父应用程序的证书是相同的。 所以我现在很困惑......

28 个答案:

答案 0 :(得分:24)

我必须在“目标”下选择我的应用,然后转到“功能”标签,然后点击“应用组”部分下的“修复问题”

答案 1 :(得分:21)

在使用WatchKit的情况下,请确保您的Watch App在Watch App Target设置中选择了正确的“Team”(在General> Signing> Team下)。我设置了手机应用程序的团队,但不是手表应用程序的团队。

答案 2 :(得分:20)

我在Code Signing下有差异。我的扩展和主应用程序选择了不同的证书。一旦我将两者都设置为使用分配,它就可以正常工作。

enter image description here

答案 3 :(得分:16)

如果您的Xcode工作正常,但在向项目添加扩展目标后停止了工作,大部分时间是您的应用使用较旧的证书(仍然对您的姓名等有效)进行签名,而您的扩展程序使用具有扩展权利的新证书进行签名。这就是错误的原因。在这种情况下,您很可能有两个具有相同名称的证书,您可以这样做:
1.Go to Xcode->Preference; 2。选择帐户标签;
3.选择您的Apple ID,然后单击查看详细信息;
4.在签署标识列表窗口下,选择IOS开发,然后单击 小配置图标,然后选择撤消;
5.然后Xcode将尝试下载新证书 在此之后,您可以进行干净的构建,以便使用新证书对您的应用和扩展程序进行签名 enter image description here

答案 4 :(得分:15)

我通过删除

中的Apple ID帐户解决了这个问题
Preferences -> Accounts

然后使用我的Apple ID重新登录

答案 5 :(得分:6)

如果嵌入式应用目标(如扩展程序或watchapp)未在常规部分中选择匹配的团队,则可能会出现此问题,因为主iOS应用

为所有相关目标选择合适的团队为我解决了这个问题。

答案 6 :(得分:6)

我在Xcode 6中遇到了同样的问题,但在我的情况下,由于有两个活动的开发人员证书而发生了。撤销一个解决了这个问题。

答案 7 :(得分:5)

我有类似的问题。对我来说,问题在于证书显示,由未知的权威机构签署'。我按照以下步骤进行了解决。 问题是缺少苹果WWDR中间证书。

我们还必须安装Apple全球开发者关系部颁发的WWDR中间证书。它可以从门户网站下载或直接在http://developer.apple.com/certificationauthority/AppleWWDRCA.cer下载。请确保将其添加到您的钥匙串中。

要添加证书:在Mac计算机上打开钥匙串实用程序软件,然后转到文件→导入项目,然后选择AppleWWDRCA.cer。

答案 8 :(得分:4)

这个问题可能源自多种原因。如果其他答案都不适合你 - 想添加另一个合理的检查对我有帮助。确保您签署的证书没有始终信任' (如果设置如此,您将看到一个绿色的' +'符号。)

  1. 转到密钥链访问,双击您正在使用的证书。
  2. 扩展'信任'下拉并更改/设置为“使用系统默认值”'来自'永远信任'。
  3. 如果您在项目中使用Swift作为“始终信任”,那么尤其如此。设置打破了相关的Swift库。

答案 9 :(得分:1)

如果这有助于任何人,我的修复是我在提交到商店时更新了我的存档方案以供发布,但从未将其更改回adhoc进行测试。编辑我的存档方案以使用ad hoc工作。

答案 10 :(得分:1)

让Xcode处理配置工作。在我的案例中,这解决了同样的问题。 http://aplus.rs/2014/embedded-binary-is-not-signed-with-the-same-certificate-as-the-parent-app/

答案 11 :(得分:1)

When I had this issue I went to the Apple Member Center and realized that the Provisioning Profile (for the extension) that I had created was marked as 'Invalid'. I just re-created the Provisioning Profile with the same certificate that the app is signed with and then downloaded it via Xcode > Preferences > Account > refresh.

Once I had the new provisioning profiles I selected them in the build settings. I selected the provisioning profile that was just created and also selected the corresponding certificate in the Code signing entity in the build settings and that fixed the issue.

Note that the extension has its own app id and hence its own provisioning profile.

答案 12 :(得分:1)

您需要为该目标创建配置文件,并确保在其中包含相同的证书。

目标有自己的包ID,您还需要创建一个AppId。 这解决了你遇到的同样问题

最好的

答案 13 :(得分:1)

我尝试在iPhone5中运行项目,但App Extension确实不支持32位架构。所以当我在iPhone5S中构建项目时,我可以构建项目!

答案 14 :(得分:1)

适用于Xcode 8 beta 3

我的Xcode项目文件中的不同目标上的构建号码已关闭。

iOS Target showing "Build 3"

我的iOS目标有一个版本3,但我的手表应用目标和我的共享扩展目标都已构建版本1.

Thingy Watch target showing build number 1, does not match iOS target build number.

我所做的就是匹配所有目标'构建数字(将它们全部更改为3)并解决了问题。

希望这有帮助。

答案 15 :(得分:0)

经过一整天后,根证书中的“ Apple全球开发者关系认证中心”已被删除。我从另一台机器导出并安装,一切正常。

答案 16 :(得分:0)

In my case the profile my extension target uses contains different certificates than the profile the parent target uses contains. This was exactly the error messages complained about!

The reason was I generated a new certificate for the extension profile.

So log in to developer.apple.com to see if these profiles contains different certificate.

答案 17 :(得分:0)

对我而言,这种情况正在发生,因为我的部分配置文件已过期。在developer.apple.com上创建了新的配置文件,删除了旧配置文件,在Xcode中将它们设置为Automatic,错误就消失了。

答案 18 :(得分:0)

在我的情况下,我的应用程序和我的Widget配置文件使用不同的证书签名。 所以我不得不去iOS开发者网站,选择父app apping profile->编辑并选择与widget相同的证书。 然后点击"生成"和"下载"。你可以下载它,双击它以在XCode中安装。 然后在Build Settings-> Provisionig Profile中为您的父应用选择新的配置文件。 最后重建你的项目!

答案 19 :(得分:0)

如果您正在使用任何扩展程序(在我的情况下我使用的是OneSignal扩展程序),那么您的父应用程序包将是com.app.xyz但是对于扩展/小部件,您的包ID将是com.app.xyz.extension

因此,我们将使用捆绑包标识符com.app.xyz.extension创建一个app id,我们将为此app id创建配置文件。

我们将使用与父应用程序相同的开发和生产证书。

以下是有用的链接provisioning profile for a widget

最后我没有使用自动设置。所以我手动设置我的配置文件和证书

答案 20 :(得分:0)

我也遇到了同样的问题,我按照以下程序解决了这个问题:

首先,我创建我的团队开发证书(因为我们更新了我们的根证书)

2,编辑Iphone Apps开发证书,确保包含您刚刚创建的证书。

3,对watchkit扩展和Watch kit App

做同样的事情

4,转到您的Xocde“首选项”,双击您的“团队名称”,删除旧的Iphone证书,watchApps,watchExtention

5,下载新证书并安装。

然后它有效。

答案 21 :(得分:0)

在您的Mac上打开KeyChain Access,从您自己的证书中删除另一个差异证书。这个问题在您在Xcode中的另一个帐户中出现之后就会出现。

答案 22 :(得分:0)

我在Xcode 7.1中的应用程序遇到了同样的问题。该应用程序有一个Watch扩展,因此是一个应用程序组。对我有用的是:

  1. 转到~/Library/MobileDevice/Provisioning Profiles
  2. 删除此处列出的所有配置文件
  3. 转到Safari中的iOS开发人员中心并重新生成所有配置文件
  4. 返回Xcode =>首选项=> Apple ID并选择与应用程序关联的Apple ID
  5. 点击“查看详细信息...”(右下方)
  6. 下载刚刚创建的配置文件
  7. 清理并重新构建
  8. 我相信我的配置文件变得混乱,因为我使用Xcode的“自动修复”功能来解决我在Capabilities =>中遇到的另一个问题。相关域名。

答案 23 :(得分:0)

I had to go to:

Xcode-> preferences -> Accounts -> View Details -> select all Provisioning Profiles -> press DEL-key on keyboard after deletion is completed press Download All button!

答案 24 :(得分:0)

我遇到了同样的问题。

因此,我为每个捆绑包ID和WatchKit App的配置进行了配置概要:

  • 观看应用开发
  • 观看扩展开发

  • 观看应用制作

  • Watch Extension Prod

/!\小心,因为开发人员门户中监视应用的应用ID类似于:

com.example.projectname.watchkitapp.watchkitextension

当我创建watchkit应用程序时,Xcode中的包ID是:

com.example.projectname.watchkitapp

也许是自WatchOS 2.0以来发生了变化。

答案 25 :(得分:0)

出于某种原因,我的开发人员证书存储在我的钥匙串中两次。删除其中一个修复了问题。

答案 26 :(得分:0)

打开您的钥匙链,它是 Apple全球开发者关系认证中心,如果我选择始终信任,则Xcode存档失败。当我更改为系统默认值时,Xcode成功存档。是的,你会喜欢!!

答案 27 :(得分:0)

刷新我的配置文件为我修复了它(首选项 - >帐户 - >双击帐户 - >点击左下角的刷新按钮)