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

问题描述 投票:51回答:28

添加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开发人员:(开发者名称)(编号)

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

ios xcode ios8 xcode6 ios-app-extension
28个回答
24
投票

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


1
投票

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


1
投票

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

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

最好


1
投票

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


1
投票

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


1
投票

当我遇到这个问题时,我去了Apple会员中心并意识到我创建的配置文件(用于扩展名)被标记为“无效”。我刚刚使用与应用程序签名相同的证书重新创建了Provisioning Profile,然后通过Xcode> Preferences> Account> refresh下载它。

一旦我有了新的配置文件,我就在构建设置中选择了它们。我选择了刚创建的配置文件,并在构建设置中的代码签名实体中选择了相应的证书,并修复了问题。

请注意,扩展程序具有自己的应用程序ID,因此具有自己的配置文件。


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)并解决了问题。

希望这可以帮助。


0
投票

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


0
投票

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


0
投票

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


0
投票

我遇到了同样的问题。

所以我为每个捆绑包ID和WatchKit App的配置做了配置文件:

  • 观看App开发
  • 观看扩展开发
  • 观看应用生产
  • 观看扩展产品

/!\小心,因为开发人员门户中的监视应用程序的应用程序ID是这样的:

com.example.projectname.watchkitapp.watchkitextension

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

com.example.projectname.watchkitapp

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


21
投票

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


0
投票

我不得不去:

Xcode->首选项 - >帐户 - >查看详细信息 - >选择所有配置文件 - >删除完成后按键盘上的DEL键按下全部按钮!


0
投票

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

  1. ~/Library/MobileDevice/Provisioning Profiles
  2. 删除其中列出的所有配置文件
  3. 转到Safari中的iOS开发人员中心并重新生成所有配置文件
  4. 返回Xcode => Preferences => Apple ID并选择与该应用关联的Apple ID
  5. 点击“查看详细信息...”(右下角)
  6. 下载刚刚创建的配置文件
  7. 清洁并再次建造

我相信我的配置文件变得混乱,因为我使用Xcode的“自动修复”功能来解决我在Capabilities => Associated Domains中遇到的另一个问题。


0
投票

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


0
投票

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

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

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

3,对watchkit扩展和手表套件App做同样的事情

4,转到你的Xcode“首选项”,双击你的“团队名称”,删除旧的Iphone证书,观看应用程序,观看扩展

5,下载新证书并安装。

然后它工作。


0
投票

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


0
投票

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


0
投票

在我的情况下,我的扩展目标使用的配置文件包含与父目标使用的配置文件不同的证书。这正是抱怨的错误消息!

原因是我为扩展配置文件生成了新证书。

因此,请登录developer.apple.com查看这些配置文件是否包含不同的证书。


0
投票

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


0
投票

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

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

我们将使用我们用于父app的相同开发和生产证书。

这里是有用的链接provisioning profile for a widget

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


20
投票

我在Code Signing下有不一致之处。我的扩展和主应用程序选择了不同的证书。一旦我设置两个使用分配它工作正常。


16
投票

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


15
投票

我通过删除我的Apple ID帐户解决了这个问题

Preferences -> Accounts

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


6
投票

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


6
投票

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

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


5
投票

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

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

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


4
投票

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

  1. 转到Keychain访问,双击您正在使用的证书。
  2. 展开“信任”下拉菜单,并从“始终信任”更改/设置为“使用系统默认值”。

如果您在项目中使用Swift,尤其如此,因为“始终信任”设置会破坏相关的Swift库。

© www.soinside.com 2019 - 2024. All rights reserved.