XCode 6和Ad-Hoc分发无需XC:配置文件

20
昨天我下载了Xcode 6,现在遇到一个问题解决不了。我的会员中心里有有效的证书和Ad-hoc预配(分发)。直到昨天,在Xcode 5中,如果我想将我的.ipa添加到TestFlight中,我会使用Archive并选择我的有效的Ad-hoc配置文件。我甚至没有在Xcode中登录我的开发者帐户。

现在-在Xcode 6中-根本什么都不起作用。好吧,我已经登录了偏好设置,Xcode在Mac上下载了所有的预配,但每当我选择导出时,它都说我没有匹配的预配文件,并且正在创建具有XC前缀的新预配文件-我不想使用它,因为它包含我在会员中心拥有的所有设备-即使我不想在我的应用程序中包含它们!

我尝试了这个主题的所有内容:

Xcode 6-如何为Ad-Hoc分发选择签名证书/预配文件?

Xcode 6 GM创建存档

但对我来说,什么都没用。也许我没有正确理解它的工作方式,需要做一些诀窍,但我想使用我定义的配置文件。我尝试创建新的配置文件,重命名旧的配置文件,从Mac中删除所有内容,将配置文件从桌面拖到Xcode图标中,再次在Build Setting中选择正确的配置文件,但我卡住了。

这里有截图:

enter image description here

enter image description here

我的Ad-hoc配置文件是分发配置文件。


我也遇到了这个问题。我删除并重新创建了所有证书,包括Xcode神奇地为您创建的“XC”证书。但是,Xcode仍会自动重新创建并选择XC证书进行IPA ad hoc分发。我不知道发生了什么事情,而且所有其他解决方案似乎也不起作用。在此问题得到解决之前,我将降级回Xcode 5.1.1。 - Chun
清空你的钥匙串,开发者.apple上的许可证,然后按照这些步骤操作:https://dev59.com/QoLba4cB1Zd3GeqPlO7v#25569735 - E-Riddie
1
这真的很烦人。我也见过这种情况。有没有开发者文档可以解释整个事情?基本上,这意味着如果XCode会自动创建一个AdHoc provision profile,那么创建自己的AdHoc provision profile就没有意义了。此外,我注意到每当我为AdHoc导出存档时,它会选择一个相对随机的XC* provision。有时它与项目供应商有关,有时它只是通配符。这是怎么回事? - rattkin
为什么,苹果?这不是VB6,我可以自己做配置文件... - Alex Nolasco
@rattkin 正确;自己制作AdHoc配置文件没有意义。Xcode的选择并不是随机的。如果您的应用程序使用任何需要非通配符应用程序ID的功能,则会使用具有特定应用程序ID的配置文件。否则,它将使用带有通配符应用程序ID的配置文件。 - clarkcox3
与其说配置文件、证书、命令行工具和解决方案,不如说成为程序员的主要工作。克拉克,你做得不对... - FrizzTheSnail
10个回答

5

无法让Xcode 6.x使用不包含团队所有设备的adhoc配置文件;这是出于设计考虑。


有相关的专业链接吗?我之前没有看到过这些信息。 - Andrew Slabko
11
我没有其他证据,除了我是编写Xcode这部分的工程师之一。 - clarkcox3
1
为什么要这样设计?为什么会在应用程序中引起未记录的混乱?为什么要通过半个措施来关闭它,当这里已经发布了其他(烦人的)解决方法?这让我们处于何种境地? - Jared Thirsk
基本思想是配置文件应该是实现细节。没有人需要关心它们。当我们在开发Xcode 6时,从未想过人们会关心哪些设备在他们的配置文件中;实际上没有任何有效的理由去关心这个问题。人们似乎认为配置文件中设备列表是一种安全措施,可以防止他们的应用程序被安装到其他设备上。但事实并非如此。 - clarkcox3
在这种情况下,预配配置文件仅提供从设备到签名标识的映射。如果我有两个来自同一团队的应用程序,一个使用包含我的设备的配置文件构建,另一个使用不包含我的设备的配置文件构建,那么只要我安装了前者,我仍然可以安装后者。 - clarkcox3
3
这个问题在根本上存在;苹果的工程师们不使用他们编写的工具和框架,而这些工具和框架是第三方开发者日常使用的(这是我的看法)。他们遇不到我们遇到的问题。这是一个很好的例子。(另一个例子是像SpriteKit这样的东西 - 你曾经看过苹果发布的使用它的游戏吗?) - Jonny

4
我有一个解决方案,适用于我。
我同时安装了Xcode 6和Xcode 5.1.1,Xcode 6在Applications文件夹中,而Xcode 5.1.1在另一个目录中。当我想要进行构建时,我使用Xcode 6创建Archive。但你也可以在Xcode 5.1.1中看到创建的Archive,所以我使用Xcode 5.1.1使用我想要使用的配置文件来分发Ad Hoc .ipa。因此,使用Xcode 6进行构建,但使用Xcode 5.1.1进行分发。这对我很有效。

2
我会继续使用这个解决方案,直到有人解释清楚Xcode 6中的AdHoc分发到底是怎么回事... - Sendoa
目前看来,这似乎是最佳选项。我认为他们在推动我们使用包含在iOS中的新版本beta测试。我认为这是一个很棒的工具,但是对于那些与旧TF连接的老客户端和构建怎么办呢? XCode 5.1.1 是唯一的解决方案。 - Roval
只要您的应用程序中没有使用Swift代码并且没有任何应用程序扩展,这将起作用。 - clarkcox3
即使在5.1.1版本中,我仍然只能看到XC配置文件。我尝试了很多次刷新签名身份。 - nOOb iOS
我也是用这种方法。但是,我在应用程序文件夹中保留了Xcode的两个版本。这会有问题吗? - Rashmi Ranjan mallick
注意:这似乎不再是一个问题,最新的Xcode已经解决了这个问题,现在我只使用它来提交应用程序。 - Adam Freeman

3

Xcode6现在在为测试(例如Hockey App)导出存档时,将始终创建一个以“XC”为前缀的新AdHoc预配配置文件。为此,您必须始终在钥匙串中拥有最新的App Store分发证书和私钥。

注意:您不必在构建存档的预配配置文件中选择此最新的分发证书。此外,请记住,您无需拥有AdHoc预配配置文件即可导出AdHoc ipa。

第一次导出时,您可能会收到错误消息,指示您没有包含以下设备/人员的AdHoc预配配置文件。只需点击“重试”,它就可以正常工作。

另一点需要记住的是,在导出ipa时,由于使用新的自动生成的“Distribution XC:AdHoc”预配配置文件,因此您被强制通过其分发/生产服务器测试推送通知。

如果像我们一样使用Urban Airship,则无法使用开发密钥进行测试。如果您在导出步骤中查看“授权”,则会显示“aps-environment”设置为“production”。如果有人找到了替代解决方案,请让我知道。


生产 = Prod,开发 = Dev。临时构建始终用于生产测试。 - Donato Perconti
在 Xcode 5 中,您以前可以导出适用于 Hockey App 的 Ad-hoc 构建,但它的行为不像“分发”构建那样,因为您仍然可以使用开发 APNS 进行测试。现在似乎在导出时您被锁定为使用生产 APNS。 - Chris Murphy

2
我之前也遇到过分发证书的问题,原因是有一个"XC"配置文件和我的bundle id完全一致。
我的解决办法是从苹果开发者门户和Xcode的偏好设置中删除这个名为"XC"的配置文件——进入Apple ID ->查看详细信息 -> XC:配置文件 -> 右键单击转到Finder -> 删除。
希望这可以帮到你。

1
我遇到了相同的问题。在您提供的 StackOverflow 帖子中,有一个解决方案 最近被添加了,对我有效。
创建存档后,您可以使用特定的预配配置文件从命令行导出它:
xcodebuild -exportArchive -archivePath "~/Library/Developer/Xcode/Archives/{某个日期}/{应用程序名称 日期,时间.xcarchive" -exportPath {应用程序名称} -exportFormat ipa -exportProvisioningProfile "{预配配置文件名称}"
请注意,预配配置文件名称只是名称,不包括任何路径或文件扩展名。

1

我今天也遇到了这个问题。

最终我从开发者门户网站中删除了XC配置文件,并重新创建了其他的Ad-hoc和App Store配置文件,并再次下载了它们。

在我这样做之后,当我构建并尝试提交到应用商店时,正确的App Store配置文件显示出来,而且当我导出Ad-hoc时,正确的Ad-hoc配置文件也显示出来。

耶;)


0

我遇到了这个问题。

这里没有任何解决方案可用。

最终我转向使用nomad cli shenzen进行命令行构建。这是另一个由mattt开发的伟大的开源项目。

现在我只需进入shell并键入:

ipa build

完成了。

他们甚至有选项将ipa发送到您想要的任何Ad Hoc服务。太棒了。


0
在Xcode 6(至少我现在使用的是6.1)中,当您进行adhoc导出时,Xcode 6将自动扫描是否有任何配置文件包含开发人员帐户中注册的所有设备,并同时匹配捆绑标识符。如果没有,则会使用XC配置文件。因此,如果您想使用自己的配置文件,例如用于推送通知的目的,您需要在苹果开发者门户上选择您配置文件中的所有设备。我猜这就是为什么有些人重新创建配置文件会起作用而有些人则不会的原因。

0
我遇到了类似的问题,并发现即使您在Xcode中指定了正确的配置文件,Xcode6系统也希望您拥有最新的(来自成员中心)配置文件(针对您的每个团队)。它似乎会依次检查每个团队的配置文件,然后再使用您需要的那个,并且如果您缺少任何团队所需的配置文件,则会被阻止。

0

我的方法要简单得多:
我前往开发者-预配资料并通过选择“编辑”然后“生成”,重新创建我的Ad Hoc资料,下载它并双击安装。在导出.ipa时,选择了正确的(我的)资料。
苹果显然只使用最近构建的预配资料。


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