在钥匙串中未找到有效的iOS代码签名密钥。

29

我可以在调试模式下存档和发布应用程序,但当切换到应用程序模式时,我会收到以下错误:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iOS.Common.targets:错误:在钥匙串中找不到有效的iOS代码签名密钥。您需要从https://developer.apple.com 请求代码签名证书。

附加文件显示我确实拥有相关证书,但Xamarin一直在抱怨。

该应用程序以前已经成功发布,但是使用相同Mac上的不同配置文件。 两个用户的密钥链都包含相同的证书。

输入图像描述

输入图像描述


1
看起来你有两个分发证书。登录到苹果开发者资料中心,找出哪一个是正确的,然后删除另一个。拥有多个证书可能会让代码签名程序感到困惑。 - trojanfoe
尝试先移除两者,再逐个添加 - Xamarin 仍然报错。 - amun1000
你也从钥匙串中删除了旧的吗? - trojanfoe
我知道这个想法很傻,但是...在更改证书和配置文件后,你是否退出并重新启动了Xamarin Studio?即使更新现有的证书,我发现这也是必要的。 - DennisWelu
是的,我退出并重新启动了Xamarin。我从钥匙串中删除了一个iPhone分发证书(还剩一个),然后重新启动了Xamarin。然后使用另一个证书重试-同样的过程。同样的结果。我只删除了证书,还有其他需要删除的吗?我的苹果开发者网站上的个人资料中有这两个证书。 - amun1000
7个回答

30

我解决了将平台构建配置从iPhone更改为iPhoneSimulator

输入图像描述


15
补充一点,如果你想构建一个.ipa文件,这并不是一个解决方案。 - Paul

4
最终通过删除所有证书,然后将它们重新放回密钥链中来解决了问题。

4
当我使用Visual Studio 2015打开Xamarin University Exercises时,会出现这个错误。已经提交了一个缺陷,他们决定这是预期行为。Xamarin Bug

如果您在Xamarin Studio中设置了此属性,然后在VS中打开它,则可能会遇到此问题,无法编辑/删除项目属性中的entitlement设置。

我猜这些练习是用Xamarin Studio创建的。
可接受的解决方法是打开iOS.csproj文件,并手动编辑Debug|iPhone PropertyGroup中的<CodesignEntitlements></CodesignEntitlements>标记。 Bug workaround enter image description here

2
我也为了将Xamarin(现在是Visual Studio for Mac)成功部署到我的设备上而苦苦挣扎了一整天,使用免费的开发者签名(因为我还是新手,尚未准备好加入开发者计划),最后成功的方法是先使用与XCode相同的Bundle Identifier 部署一个虚拟应用程序,如其他来源所建议的那样,在.csproj文件中保持CodesignEntitlements的设置不变,但是像这里的答案https://dev59.com/ZLbna4cB1Zd3GeqPbnxe=中所述,将CodesignKey的值替换为“ iPhone Developer”。
希望这能帮助未来有需要的人,就像它帮助了我一样!

2
有时候在你刚启动电脑和 Visual Studio 的时候会出现这种情况。不要点击绿色三角形调试 Combobox 按钮,检查一下这个 Combobox 中选择的是什么。如果像图片1中一样选择了“Device”,则需要从列表中选择一个模拟器,如图片2所示,然后开始调试。否则,如果 Combobox 中选择了“Device”,VS 就会尝试在真实设备上开始调试,从而导致出错。

picture 1 picture 2


太好了!!! 这个错误让我省了几个小时。谢谢。 - Olivertech

1

您可以尝试以下任一方法

  1. 从Entitlements.plist中删除任何现有的密钥。
  2. 将proj运行模式更改为debug,选择设备。

1

我需要从头创建签名标识证书,并重新创建(在苹果开发者网站上)配置文件。然后使用Xcode下载。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接