使用通配符配置文件签署应用程序的问题

Posted

技术标签:

【中文标题】使用通配符配置文件签署应用程序的问题【英文标题】:Issue with signing app with wildcard profile 【发布时间】:2014-02-25 06:27:03 【问题描述】:

我为客户开发了一个 iPad 应用程序。我的客户拥有 Apple Enterprise 许可证。但他们不允许我用他们的证书签署应用程序。他们只是要求我提供 .xarchive 文件,以便他们可以签署应用程序并创建 ipa 文件。 我就是这样做的

1. Create a appid with com.mycompany.myapp.abc
2. Create a adhoc profile using above appid with my developer portal
3. set the bundle ID of my app com.mycompany.myapp.abc
4. Set the code signing identity to above profile in my app's target
5. archive the file using xcode 4.6.1
6. export the xarchive file and send to the client
7. Ask client to create a inhouse Dis profile with com.mycompany.myapp.* appid
8. Ask client to open the xarchive file using xcode and sign the app with inhouse profile and create the ipa file

他们在 7,8 中遵循了上述说明并创建了 ipa 文件。但是当我们尝试使用 xcode 将 ipa 文件安装到设备时,它会出现以下错误。

以上程序有问题吗。谁能解释一下这个问题。

编辑:

出于测试目的,我使用 com.mycompany.* 创建了临时配置文件,并通过在 xarchive 文件上方签名创建了一个 ipa 文件,它给出了相同的错误消息。但是,如果我使用带有 com.mycompany.myapp.abc 捆绑 ID 的配置文件对 xarchive 文件进行签名,则可以正常工作。

【问题讨论】:

您有登录 developer.apple.com 的凭据吗?或者您的钥匙串中是否有带私钥的有效证书? 是的。我有开发者许可证,并且我的钥匙串中也有该帐户的有效私钥 内部证书不应使用通配符应用 ID。 @CoolMonster 那我怎样才能达到上述要求.. 我需要提供一个 xarchive 文件,以便客户可以使用企业许可证对其进行签名并创建一个 ipa 文件 为什么我会在内部提供通配符应用程序。 【参考方案1】:

TL;DR: 找出客户(配置文件的)权利是什么,并确保您匹配它们。

错误是试图说明您的配置文件中的权利与其配置文件不同。不同之处可能是钥匙串组、推送通知环境或其他。

Xcode 要求您选择配置文件的原因两次(存档时一次,分发时一次)是所有配置文件权利在存档阶段被拾取,并且在分发中大部分被忽略阶段。

这使得分发错误的权利变得非常容易,尤其是当您的存档阶段不小心选择了通配符配置文件时。不是你的情况,但这就是为什么你应该用火烧通配符配置文件。

有一些聪明的重新签名脚本(又名“分发...”按钮替换)会尝试通过将最终用户配置文件中找到的内容混合到您的二进制文件中来使权利正确,但我认为最好的解决方案是以确保您的配置文件的权利以及您添加到应用程序的任何额外权利与他们的配置文件相匹配。

我发现 Xcode 的配置文件/授权系统容易出错。你手头上的权利基本上是你的应用程序身份的一部分,也可能是一成不变的(TODO:让你的 CI 服务器检查它们)。另一方面,您可以在 Xcode 的构建阶段根据其自动/随机配置文件选择兴高采烈地更改应用程序的权利。傻。

【讨论】:

正如您所建议的,我使用了辞职脚本,但 github 中存在一些更改。 gist.github.com/Weptun/5406993【参考方案2】:

您应该按照以下步骤为客户端制作临时分发 .ipa

    在目标 info.plist 中设置包标识符 在目标和项目中选择临时分发配置文件 选择 ios 设备,然后选择产品-> 存档

    组织者将弹出然后选择存档并选择“distribute” -> Adhoc Enterprise 分发

    选择正确的临时分发配置文件,然后保存此 .ipa 文件。

    然后将其发送给客户,让他知道在归档或构建应用程序之前,我们需要正确的临时配置文件。因此,您无需在最后重复该过程来设置配置或其他内容,只需分发它即可。

How to distribute your iOS app over the air:

只需将 .ipa 文件和 plist 放在服务器上,并在上面的链接示例中设置路径。

【讨论】:

客户不喜欢给我个人资料。那就是问题所在。这就是为什么我给他们 xarchive 文件,以便他们可以自己创建 ipa 文件。 其实我不知道如果有这样的选项我愿意研发的话,你怎么能在不设置配置文件的情况下制作存档 正如我在问题中提到的,我创建了一个带有捆绑 ID com.mycompany.myapp.abc 的配置文件,并将该配置文件设置为创建 .xarchive 文件。这对你有意义吗? 是的,我有一个开发人员临时个人资料。我用它来创建 xarchive 文件并要求客户使用他们的企业内部通配符配置文件来创建 ipa 文件

以上是关于使用通配符配置文件签署应用程序的问题的主要内容,如果未能解决你的问题,请参考以下文章

了解配置文件和 Airwatch MDM

如何在 apache 配置中使用通配符别名作为文件名?

我们可以在 iPhone 中使用单个通配符 App ID 安装多个应用程序吗?

Struts:action配置文件之通配符映射

autofs使用indirect mount时,配置通配符,并且目录来自于多个文件系统时如何配置

从通配符更改为显式应用程序 ID 的问题