Xcode 6 beta 2导出.ipa的问题:"您的账户已经拥有有效的iOS分发证书"

194
我在 Xcode 6 beta 2 上遇到了应用程序无法进行 Ad Hoc 分发的问题:

未能找到或生成匹配的签名资产

当我尝试将项目导出为 Ad Hoc 开发时,收到此警告。我已经尝试在 Xcode 5 上导出,并且保存 .ipa 没有任何问题。还有其他人也遇到了这个问题吗?


2
@christopher.ryan.cruz 我也遇到了同样的问题。我仍然可以在我的Mac上使用Xcode5导出,但是尝试使用新的Xcode6时会收到相同的错误消息。你解决了这个问题吗? - Gal
8
刚刚在使用 XCode6 的 GM 版本时遇到了这个问题。:-{ - Kendall Helmstetter Gelner
1
@KendallHelmstetterGelner,你是如何解决这个问题的?我也遇到了同样的问题,尝试撤销证书但没有任何结果。 - John Tracid
4
即使使用正式版的xCode 6,我仍然遇到了这个问题。我尝试了多次撤销、从钥匙串中删除、重新登录xcode帐户,但是都没有取得积极的结果!有什么帮助吗? - Steven
1
你遇到了这个错误,是因为xCode尝试创建一个新的分发证书和Ad Hoc配置文件,而你已经有一个有效的。苹果已经改变了Ad Hoc构建的方式。现在你不能使用开发证书来制作Ad Hoc分发构建。你应该使用一个带有“Ad Hoc”配置文件的分发证书。 - Son Nguyen
显示剩余12条评论
27个回答

66

我两天前遇到了同样的问题。事实证明问题出在:

  1. 我有自己的开发人员分发证书,并且拥有正确的私钥
  2. 我的客户有企业开发人员分发证书,但没有私钥
  3. 我试图为我的客户制作企业级分发包
  4. Xcode 对我抛出含糊的错误:您的账号已经拥有有效的iOS分发证书

解决方案是:获取客户企业账户的私钥。有两种可能的选项:

  1. 向你的客户索取访问其苹果网站企业开发者账户的凭据。撤销旧证书并重新创建一个,你将在此流程中创建私钥。 注意: 撤销一个企业分发证书会使所有使用该证书签名和部署的应用程序失效 (官方信息)。
  2. 请你的客户从他的Keychain Access应用程序中导出他的私钥为*.p12文件并带上密码发送给你。你无法从苹果网站下载现有的私钥。获取它的唯一方法是向您的客户询问。我这么做了,最终我能够制作出该软件包。

如何查找您是否拥有证书的私钥:打开Keychain Access应用程序。选择证书。找到您的证书。如果您在证书左侧看到小灰色三角形,请单击它以查看您的私钥。没有三角形=没有私钥。

如何查找您是否拥有证书的私钥


1
我今天遇到了这个错误,完全被难住了,直到我看到了你的出色答案。非常感谢你!+1 - Dalbir Singh
2
这是对一个极其棘手的问题的绝妙回答。 - shmim
1
非常好。谢谢。 - Wade Anderson
@AlexanderVasenin 我尝试过这个方法,但问题仍然存在。现在有解决方案吗? - Zalak Patel

52

这是对我有效的方法。

  1. 在我的电脑上同时保留了Xcode 5和Xcode 6 beta。

  2. 从Xcode 6 beta中存档该项目。关闭Xcode 6。

  3. 打开Xcode 5,进入组织器并使用正确的预配文件导出Ad Hoc版本。

就是这样!


9
我需要在GM上处理这个问题。由于Xcode 6和iOS8本周发布,这不会再是一个有效的解决方案。请注意不要改变原意,尽可能让翻译通俗易懂。 - bergy
20
在 Xcode 6.0.1 上,这个问题已经解决了。苹果公司改变了开发者的 Ad Hoc 分发方式。现在,您无法使用开发证书来创建 Ad Hoc 分发版本。您需要使用“Ad Hoc”预配配置文件的分发证书(而不是开发预配配置文件)来创建 Ad Hoc 构建。这真是令人头疼,您也不能再在多台 Mac 上使用一个苹果开发者帐户进行归档 TF (TestFlight) 构建。看起来每个开发者都应该单独支付 $99/年!苹果的 TestFlight 听起来很有前途,但是 beta 版本将由 App Review 团队审查。 :( - Adnan
3
后来,我撤销并重新生成了与开发者账号相关的所有证书和配置文件,问题最终得到解决。 - Graham Dawson
1
在 Xcode 6.1 上,这个问题已经不存在了。但是,如果你想要为 TestFlight(testflight.com)分发制作Ad Hoc版本的构建包,则必须使用Ad Hoc分发授权。开发授权将不再允许您为Ad Hoc分发进行存档。这不是苹果公司一个好的决策。 - Adnan
我尝试了这个方法,但是当我试图将应用程序安装为Ad-hoc分发时,安装过程中出现了代码签名错误。最终,我不得不从另一台机器导入开发者配置文件,将应用程序包重命名以匹配活动证书,并确保团队名称在“常规”选项卡上正确命名。 - Jack BeNimble
显示剩余3条评论

48

2
非常感谢!那个方法起作用了,已经发送了一个临时构建。 - JocelynH
1
我通过这种方式成功生成了*.ipa文件,但无法安装(应用程序只停留在“正在安装...”界面)。Xcode中的设备日志显示代码签名错误。 - Alexander Vasenin
1
在我尝试并失败地在Xcode 6.1/iOS 8.1的开发者门户网站和本地上删除和撤销证书、密钥和配置文件之后,这是唯一有效的解决方案。 - user300285
1
我在这篇文章中找到了相似的解决方案,其中详细列出了步骤,对于初学者来说非常有帮助。http://datacalculation.blogspot.in/2014/10/making-ad-hoc-build-from-command-line.html - iOS Test
我使用Application Uploader更新iPa文件时,遇到了“未找到合适的软件。请确保该软件归您的开发组织所有。”的错误提示。 - Allen
显示剩余4条评论

28

在我的情况下,解决问题的方法是从我的苹果开发者帐户中删除所有发布证书。然后,Xcode成功地再次创建了开发和发布证书,并解决了问题。


1
这也意味着您必须重新制作所有的临时分发配置文件。 - Kendall Helmstetter Gelner
1
@Kendall,我没有重新制作所有的临时分发配置文件。只是从钥匙串和苹果开发者门户中删除了证书。然后Xcode就能自己解决所有问题了。 - lucaslt89
12
这对我也奏效了...每个版本的Xcode都存在这个一贯的问题,我真的希望苹果公司能够花点时间重新设计这个可怕的过程。 - Raconteur
2
我也试过了(使用Xcode Beta 6),只需确保从Apple开发者网站和钥匙串中删除证书,然后让Xcode修复问题。 - Claus
当你说你删除了所有的分发证书时,是指你从电脑上删除了它们并重新安装了Xcode,还是说你从会员门户中删除了它们,然后Xcode创建了新的代替它们? - Jacksonkr
从我的电脑和会员门户中删除 - lucaslt89

19

我得到了一个解决方案,而不需要更新证书:

1 - 使用适当的 代码签名身份配置文件 打包目标应用

2 - 在 组织者 中创建的文件上右键单击--> 在 Finder 中显示

3 - 右键单击 xcarchive 文件 --> 显示包内容

4 - 在那里,在 Finder 中,进入 Products/Applications/

5 - 上传文件 Products/Applications/appName 到 iTunes

6 - 当应用程序出现在 iTunes 中时,右键单击它--> 在 Finder 中显示. 这就是 ipa 文件

7 - 通过 App Loader 3.0 发送此 ipa

我认为这不是一种持久的解决方案,但我不想删除我的证书。


2
请问在这里为什么要使用应用程序加载器?我真的不太了解它。 - Mejdi Lassidi
什么是“适当的”代码签名身份和配置文件?我尝试将发布代码签名身份设置为“iOS分发”,但没有帮助。如果我将发布配置文件设置为除“自动”以外的任何其他选项,Xcode会搞砸代码签名身份。 - Greg
非常感谢!我不知道这个。 - Mihriban Minaz

17

问题终于解决了!

1)通过developer.apple.com创建一个新的生产证书,需要使用Keychain Access在您的计算机上创建一个新的私钥。

2)在同一开发者门户网站中,打开您用于此应用程序的分发配置文件,并选择您刚刚创建的新生产证书。生成该证书后下载并运行它。

3)运行您的应用程序,对其进行归档,然后导出存档。

完成了

我花了数天甚至数周的时间才想出解决方法,希望它能帮到您。


1
看起来你的“voilà”被自动更正了;这个变化不足以让 Stack Overflow 让我编辑。 - user652038

14

创建新的 iOS 分发证书并选择生产 App Store & AdHoc 部分。同时不要忘记将 Target > Build Settings > Code Signing 全部更改为 iOS 分发(但在创建 ipa 后将其设置回 iOS Developer),这才解决了我的问题。


1
那个选项变灰了。我错过了什么? - Greg
这可能会对你有所帮助:https://dev59.com/7mQm5IYBdhLWcg3wowWw - Yucel Bayram

11

今天我在使用Xcode 6.1.1时遇到了同样的问题。

当我试图通过Xcode添加iOS发布证书时,出现了同样的错误。会员中心已经发放了几个发布证书,我不想使它们失效,因为如果它们用于企业环境下的Ad Hoc分发,这也会使已安装在设备上的应用程序失效(至少这是我读到的)。

我所做的是:
1.通过密钥链生成了一个来自认证机构的证书请求,并将请求保存到文件中;
2.登录到会员中心证书区域的生产部分,请求新的“App Store和Ad Hoc”生产证书,并提供来自步骤1的证书请求文件;
3.下载新的证书并导入到密钥链,此时它已经有了私钥。

之后,我清除了Xcode,重启了它,检查我的帐户中配置文件是否可见,并构建了一个新的存档。现在我能够验证存档了。

现在,如果我尝试请求新的“App Store和Ad Hoc”证书,我会发现这个选项对我而言是灰色的,我想这是因为我的账户已经拥有了该证书。如果您的情况也是如此,那么您很可能需要使之前的证书失效才能发放新证书。这就是为什么苹果推荐备份您的证书。但是很可能您不需要使所有生产证书失效,因为我的配置文件中已经有了一些这样的证书。

希望这对某些人有所帮助 :)


谢谢你提供的信息,Angel。我有Xcode 6.1.1,昨天和今天我已经尝试过了,但可能由于某个脆弱的步骤出错了,因为我仍然无法验证我的存档。(顺便说一下,根据我在SO上阅读到的内容,你的选项灰色不可用的原因是你已经拥有两个生产证书,这显然是苹果的秘密限制)。 - ultrageek
你是否通过钥匙串访问看到了分发证书的私钥。如果看到了,你可以尝试以下步骤:1. 删除组织器中此项目的所有存档。2. 在构建存档之前,请确保选择了项目目标,并且目标设备是真实设备,而不是模拟器。3. 通过 Xcode 的产品菜单执行“清理构建文件夹”操作,这与清理选项相同,但需要按住 Alt 键。4. 在实际设备上运行你的项目,并确保一切正确。5. 创建你的存档。6. 尝试验证它。 - Angel Naydenov
但是如果您看不到私钥,您将无法验证,因为您无法签署包。昨天我们与我的一位同事尝试了这个过程,我不得不通过选择iOS分发的Xcode帐户导出我的私钥。然后我们通过钥匙串访问导入它,他能够验证并上传构建到iTunes Connect。对我来说,我需要了解这个过程的是,您确实需要2个证书:iOS开发和iOS分发。它们在不同情况下使用,并且对于iTunes Connect,您需要分发证书 :) - Angel Naydenov
谢谢,Angel。我终于弄清楚哪个证书缺少私钥了,删除了Xcode > 账户和开发中心中的每个证书和配置文件,然后重新开始。这个过程太脆弱了,而且据说在同一台Mac上拥有两个开发者帐户似乎在问题中起到了部分因素。 - ultrageek
1
很高兴听到你解决了这个问题! - Angel Naydenov

7

苹果已经改变了Ad Hoc构建的方式。现在,您不能使用dev证书进行Ad Hoc分发构建。您应该使用一个带有“Ad Hoc”配置文件的分发证书。


你有这个的文档链接吗? - Keab42
2
你可以尝试自己删除所有证书和配置文件,让XCode处理剩下的部分,你会发现它会自动创建发布证书和Ad-hoc预配配置文件。 - Son Nguyen
2
我知道了,谢谢。只是想知道苹果是否已经在任何地方宣布了这一点,还是让我们自己去猜测。 - Keab42

6
我相信你进入这个界面的原因是想要将.ipa文件分发给你的测试人员和客户。 在Xcode 6中,获取.ipa文件的方法可以使用旧版iPA生成方法:
  1. 在Xcode中选择“Organiser”。在“Archives”选项卡中选择需要生成iPA文件的存档。
  2. 右键单击并选择“Show in Finder”选项
  3. 您会看到.xarchive文件。右键单击并选择“Show Package Contents”
  4. 您将看到文件夹:dSYMs、Info.plist和Products。
  5. 打开Products>Applications,您将看到您的.app文件。
  6. 将此.app文件拖放到Mac上的iTunes中。
  7. 您的.app文件将列在iTunes的“我的应用程序”下。
  8. 右键单击您的应用程序并选择“Show in Finder”。
现在,您已经获得了.ipa文件,可以将其发送给测试人员进行测试。 希望这能帮到你。

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