Xcode 试图定位或生成匹配的签名资产,但未成功。

64

我正在尝试在Mavericks上使用Xcode 6.0.1使用现有的配置文件创建即席构建,但在尝试导出该存档后,我不断收到以下错误:

我需要重新创建我的证书和配置文件,还是有更好的解决方案?谢谢!


那是另外一个错误。我正在使用Xcode 6.0.1,正如我在问题中提到的那样。 - liquidpenguins
你能解决这个问题吗? - marcos1490
尝试重新创建“生产”证书和新的配置文件。 - Resty
9个回答

47

作为“团队成员”角色,我也遇到了这个问题。 “您无权执行此操作”的警告让我相信,XCode正在更严格地执行在此处定义的角色:https://developer.apple.com/programs/roles/

尽管我可以访问签名资产(证书和配置文件),但XCode不允许我指定它们。尝试将您的角色升级为Team Admin。

更新于2014-09-29: 经过广泛的研究,我发现即使作为“团队成员”角色,也可以使用以下方法从命令行使用xcodebuild生成.ipa:

xcodebuild -exportArchive -archivePath $projectname.xcarchive -exportPath $projectname -exportFormat ipa -exportProvisioningProfile "Provisioning Profile Name"

感谢1提供的帮助。

注意:正如链接文章中指出的那样,“Provisioning Profile Name”是证书中名称字段中指定的名称(可从developer.apple.com中查看)。

您可以通过将调用包含到项目构建脚本中来自动化xcode的过程。


哇,这个(使用命令行)技巧真的救了我一命,非常感谢!是的,只需复制并粘贴在开发门户中显示的配置文件名称即可。不要使用导出配置文件的文件名。 - John G
非常感谢您的分享 :) - Christoph
这太棒了。我不确定失败的验证是否会在用户从服务器安装时引起问题。但仍然是解决问题最令人满意的答案。 - Alok C
我在哪里可以找到.xarchive文件?我已经归档了我的项目,但似乎在我的项目文件夹中找不到任何文件。 - Andre Cytryn
1
要找到 .xcarchive 文件,请在“组织者”窗口中右键单击存档,然后选择“在查看器中显示”。将文件拖入终端窗口中,以快速获取完整路径字符串。 - Tico Ballagas

11
尝试打开控制台并进入您的Xcode项目文件夹,然后键入这些命令:
清理您的项目
xcodebuild clean -project YourProjectName.xcodeproj -configuration Release -alltargets

构建和归档您的应用程序

xcodebuild archive -project YourProjectName.xcodeproj -scheme YourSchemaName -archivePath YourProjectName.xcarchive

你可以在 Xcode > Product > Scheme > Edit Scheme... 中找到 YourSchemaName,然后就可以创建你的应用程序 .ipa 文件了。

xcodebuild -exportArchive -archivePath YourProjectName.xcarchive -exportPath YourProjectName -exportFormat ipa -exportProvisioningProfile 'Your Provisioning Profile Name'

要找到您的配置文件名称,请登录Apple开发人员会员中心,然后转到证书、标识符和配置文件,接着点击iOS应用程序的配置文件。在那里,您将找到您的配置文件名称。

如果不起作用,请尝试将单引号替换为双引号(' with ")。

您将在Xcode项目文件夹中找到.ipa文件。

完成这些步骤后,您就可以在iTunes中打开.ipa文件并在iOS设备上安装它。

希望能对您有所帮助!


2
很令人沮丧的是,你通过命令行成功创建了IPA文件(以上方法对我来说完美无缺!),但XCode却用一个毫无意义的错误信息让你感到困惑。 - patschiboy
它会成为损坏的IPA还是OK? - Logic
这个应该有更多的赞,因为它完美地工作了,谢谢你! - Markus
--- xcodebuild: 警告:-exportArchive 未使用 -exportOptionsPlist 已被弃用。 - Brandon A

7
发生了什么:Xcode需要使用有效的证书对构建进行签名。它正在尝试查找没有成功的证书。为什么?因为在Xcode6之前,您可以使用自己的开发人员证书对AdHoc构建进行签名。而且您能够这样做,因为您拥有其私钥。但现在,您需要使用生产证书对Ad Hoc构建进行签名。而且您没有其私钥。
使从Xcode6构建变得可能需要以下步骤(来自https://dev59.com/8mAf5IYBdhLWcg3woj7N#26061067):
1. 获取生产证书的私钥。(您需要将其从Mac钥匙链导出并导入到您的钥匙链中,或者撤销当前证书并创建新的生产证书。在创建期间,您将获得一个。引用上面链接中的内容:

注意:撤销企业分发证书会使所有使用该证书签名和部署的应用程序无效(官方信息)。

2. 创建特殊的XC Ad Hoc:分发配置文件(如果您在developer.apple.com上的团队中具有管理员角色,则Xcode将为您执行此操作)。 3. 在项目的目标->构建设置->代码签名中设置配置文件为第2步中创建的配置文件。
完成!
或者,如果上述内容无法实现,您可以使用命令行工具进行构建:https://dev59.com/8mAf5IYBdhLWcg3woj7N#25979784。但是这对我来说似乎是安全漏洞,我不相信这会长时间有效。

我根据这个答案,将我的生产证书添加到钥匙串中,并且能够重新签名。谢谢。 - masonk
很酷,很高兴这有所帮助。 - bucherland

2

对我而言,原因是我没有按照这个答案设置项目的配置文件属性。


2
我们成功地解决了这个问题,只需要让管理员从开发中心下载“XC Ad Hoc: Distribution”配置文件,然后将其发送给想要进行构建的“团队成员”,并让他手动导入。由于他已经拥有证书,这就是他能够完成构建并停止出现此错误所需的全部内容。现有的答案都是正确的,但这是一个低摩擦的方式,可以为我们许多人提供最后一块拼图。
总之,您需要这个配置文件和带有私钥的证书在您的钥匙串中。

对我而言情况恰好相反。我拥有发布配置文件,但需要一个发布证书以便签名应用并上传到应用商店。查看我的钥匙链,发现我缺少发布私钥,于是找人将其发送给我,从而解决了原始错误消息。 - Joncom

1
在我的情况下,问题出在App ID上。当然,该应用程序确实存在于我的成员中心帐户中。问题出在功能面板上。一些功能没有解决问题,但是构建成功了。这导致了这样的情况,即我的成员中心和Xcode中的App ID具有不同的功能设置。
消除这种不协调就解决了我的问题。 如果您有类似的问题,请仔细检查两次。

0

我也遇到了这个错误,因为我正在构建的机器上的开发者证书已过期。

即使更新了该证书,我仍然无法导出用于App Store发布的构建版本。即使按照被接受答案中的说明并将该开发者帐户升级为管理员后,仍然无法导出。

事实证明,由于在开发者证书过期时创建了存档,因此该开发者无法使用分发配置文件进行代码签名。我不得不在更新开发者证书后重新创建存档,以便允许该机器使用分发证书(已安装并先前工作)对新存档进行代码签名并上传到应用商店。

分享一下,以防其他人遇到这种情况。


0

您的分布式账户与团队不匹配。

您必须在 xcodeproj->Identity->Team 中定义您的账户 -> 添加一个账户。


0

您必须在Xcode->首选项->帐户中定义您的帐户。 看起来您已经定义了一个不允许访问IOS开发者帐户的appleId。

尝试使用该用户在https://developer.apple.com/devcenter/ios/index.action上登录,查看该用户是否被允许加入IOS开发者计划。

如果您已经使用iTunes Connect进行了签名,则可能会出现此问题。它们是不同的帐户。

希望这可以帮助您!


你用什么角色登录的?开发者? - Eva Madrazo
是的,不是作为管理员登录。但是在我用管理员帐户登录后,我可以同时使用管理员和我的账户进行签名。奇怪的事情... - Igor Konoplyanko
尝试使用此链接修复Xcode:https://github.com/thecodepath/ios_guides/wiki/Fixing-Xcode 当出现奇怪的行为时非常有用。 - Eva Madrazo

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