如何生成我的客户端可以签署的iOS版本构建?

Ric*_*kDT 64 xcode itunesconnect code-signing ios

我的情景

我为客户编写了一个iOS应用程序.该项目即将结束,现在是他们将它放入App Store的时候了.我一直在开发过程中向他们发送开发版本.这些构建有一个基于我的公司的捆绑ID和我的客户的项目如下:com.mycompany.clientname.projectname.我使用我在自己的Provisioning Portal帐户中创建的Ad Hoc Distribution Provisioning Profile签署了这些Ad Hoc版本.

现在是时候去App Store了,我需要做一个Release Build并发送给他们用他们自己的App Store Distribution Provisioning Profile签名.这也意味着为项目设置一个新的Bundle ID.

我的问题

我需要将一个已编译的应用程序提供给客户端,以便他们使用其配置文件进行签名.但是,我需要将Bundle ID设置为他们将首先使用的内容.让我们说吧com.bestclientever.appname.Xcode 4现在不允许我存档项目,因为这样做需要代码签名.我无法对其进行代码签名,因为我无法创建具有与其Provisioning Portal中设置的捆绑ID相同的捆绑ID的配置文件(供应门户强制实施唯一性 - 应该如此).

我在这里做出了不正确的假设或误解吗?即.我是否真的必须将Bundle ID设置为他们要签署的内容?

问题

有没有办法存档或以其他方式构建一个没有代码签名的iOS应用程序?就像"以后的标志"设置或什么?

或者,有没有办法构建具有一个包ID的应用程序,但是其他人能够使用其他包ID的配置文件签名(通过更改已编译应用程序的包ID或其他一些签名方法)?

如何构建最终版本构建,但让其他人签署应用程序以分发到App Store?

我尝试或探索过的

  • 代理客户.
    • 对于其他不那么精明的客户,我最终只获得了他们的Provisioning Portal和iTunesConnect凭据,并且只是做了最终的构建.这不会与这个客户一起飞行.这是一家拥有严格安全准则和大量繁文缛节的大公司.
  • 作为客户欺骗.
  • 向客户端发送我的项目源代码并让他们进行发布构建.
    • 源代码的许可证不在我们的协议中.此外,该客户端不希望涉及源代码(因此将其外包).我认为这是最后的选择,但必须有更好的方法!
  • 在其开发者成员中心中设置为管理员级开发人员.
    • 不幸的是,只有代理级用户才能创建供应配置文件(据我所知).看起来应该有办法让我创建一个我可以用来签署构建或为我生成配置文件的配置文件.我找不到任何一种选择.

Ric*_*ble 27

这些答案中的大多数似乎都很复杂且过时.我认为简单的答案是使用Developer配置文件进行存档.

这是我目前正在为自己的目的进行调查的解决方案(未经过全面测试):

您只需要开发人员访问(而不是团队代理)到他们的帐户并创建一个开发配置文件,授权您构建指定的App ID(您需要指定App ID,因为它已编译).然后使用开发配置文件存档应用程序,并与您的客户共享存档.然后,他们可以使用自己的分发配置文件重新签名存档.

一个复杂的问题是,当您使用开发人员配置文件构建存档时,权利属性get-task-allow设置为true,但需要设置为false以进行分发,因此您必须通过手动设置您的权利来解决这个问题. .plist - 请在此处查看我的问题:我可以使用开发人员证书进行存档,然后在提交期间使用分发证书重新签名吗?

  • 这是最简单有效的一般要点.我知道我以前试过这个并没有用,但我刚刚在WWDC上完成了一个完整的场景,它就像一个魅力.我发布了一个完整的逐步解答,以获取更多详细信息:http://stackoverflow.com/a/11038792/5421 (2认同)

Ric*_*kDT 27

我刚刚在WWDC 2012上确认以下技术有效.它最能满足我对客户参与度低,客户专业知识低,签名过程简单和源代码所有权的限制.

  1. 客户邀请开发人员作为管理员在会员中心的团队中
  2. 开发者接受邀请(应该在您的电子邮件中)
  3. 开发人员在右下角打开Xcode的管理器 - >设备选项卡 - >配置文件和点击刷新.确保选择合适的团队,你应该得到一些新项目.
  4. 在Xcode中,将代码签名标识设置保留为其默认值(或将其重置为iPhone Developer for Any iOS SDK)
  5. 归档应用程序
  6. 在管理器中,右键单击存档,然后选择"在Finder中显示"
  7. 将.xcarchive文件发送到您的客户端
  8. 客户端必须安装Xcode
  9. 客户端双击.xcarchive文件,该文件应在管理器中打开
  10. 客户点击分发并使用其身份对应用进行签名
  11. 利润

这确实需要客户端使用developer.apple.com上的成员中心并稍微使用Xcode(但只是组织者!).如果您的客户在此级别存在技术能力问题,那么我建议您接管并为他们执行此操作(并为其充电!).询问他们的开发人员登录名和密码,并代表他们行事,就像您是员工一样.

编者提示:交易密钥是一种可怕的折衷方案,因为它对客户来说更具技术性和参与性,对开发人员而言更具风险和风险.鉴于这两个更好的选择,它应被视为非选择.

  • 这不是一个好的解决方案,因为管理员可以从客户端下载私钥.我知道这是一个信任的事情,但这不是一个好的过程.编辑:好的,你确实说这是一个冒险的选择. (2认同)

jim*_*myg 6

我有同样的问题.这就是我最终解决它的方式:

  1. 客户创建了开发证书.
  2. 客户端使用与分发配置文件相同的App ID 创建了开发配置文件.
  3. 客户端导出的开发证书(.p12).
  4. 客户端向我发送了.p12文件和开发移动配置文件.
  5. 我将客户端p12文件导入到我的钥匙串中
  6. 我将客户端的配置文件导入Xcode.
  7. 为我的构建配置设置代码签名标识以使用客户端的配置文件.
  8. 我存档了应用程序.
  9. 我将存档发送给客户端.
  10. 客户端通过使用其分发配置文件对应用程序进行签名来创建其分发版本.(他们在内部分发应用程序进行测试.)

客户并不那么关心共享开发证书,因为他们将共享他们的分发证书.

我还必须创建entitlements.plist"Can be debugged"(get-task-allow)设置为NO,并在构建配置中引用它(在Code Signing,Code Signing Entitlements下).