ios - 如何生成我的客户可以签署的 iOS Release Build?

标签 ios xcode code-signing app-store-connect

我的场景

我为客户编写了一个 iOS 应用程序。该项目快结束了,现在是他们将其放入 App Store 的时候了。在整个开发过程中,我一直在向他们发送开发版本。这些构建有一个基于我的公司和我客户的项目的 bundle id,如下所示:com.mycompany.clientname.projectname。我使用在我自己的供应门户帐户中创建的临时分发供应配置文件签署了这些临时构建。

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

我的问题

我需要为客户提供一个已编译的应用程序,以便他们使用他们的配置文件进行签名。但是,我需要将 Bundle ID 设置为他们首先要使用的 ID。假设它是 com.bestclientever.appname。 Xcode 4 现在不允许我存档项目,因为这样做需要代码签名。我无法对其进行代码签名,因为我无法创建与他们在其供应门户中设置的 Bundle ID 相同的供应配置文件(供应门户强制执行唯一性——它应该如此)。

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

问题

有没有办法在没有代码签名的情况下存档或构建 iOS 应用程序?比如“稍后签名”设置之类的?

或者,有没有一种方法可以使用一个 bundle id 构建应用程序,然后其他人可以使用另一个 bundle id 的配置文件对其进行签名(通过更改已编译应用程序的 bundle id 或其他一些签名方法)?

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

我尝试或探索的内容

  • 代表客户。
    • 对于其他不太精明的客户,我最终只是获得了他们的 Provisioning Portal 和 iTunesConnect 凭据,并像他们一样进行了最终构建。这不会与这个客户一起飞行。这是一家拥有严格安全准则和大量繁文缛节的大公司。
  • 伪装成客户。
  • 向客户发送我的项目源代码并让他们进行发布构建。
    • 我们的协议(protocol)中没有源代码许可。此外,该客户不想参与源代码(因此将其外包)。我会将此作为最后的选择,但必须有更好的方法!
  • 在他们的开发者成员(member)中心设置为管理员级别的开发者。
    • 不幸的是,只有代理级别的用户才能创建配置文件(据我所知)。似乎应该有一种方法可以让我创建一个我可以用来签署构建的配置文件或为我生成一个配置文件。我找不到任何一个选项。

最佳答案

这些答案中的大多数看起来都很复杂且已过时。我认为简单的答案是使用开发者资料制作存档

这是我目前出于自己的目的正在研究的解决方案(未经过全面测试):

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

一个复杂的问题是,当您使用开发人员配置文件构建存档时,权利属性 get-task-allow 被设置为 true,但需要设置为 false 才能分发,因此您必须通过设置它来解决这个问题手动您的 Entitlements.plist - 在这里查看我的问题:Can I archive with a Developer certificate, then re-sign it during submission with a Distribution certificate?

关于ios - 如何生成我的客户可以签署的 iOS Release Build?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7449087/

相关文章:

iphone - iOS代码签名失败: "A sealed resource is missing or invalid."

uwp - 为 Windows UWP 签名 appx 文件时出现错误 0x80080209

ios - 错误 - 应用程序安装失败

ios - 像表格一样显示具有动态大小的标签,但不重叠

ios - 如何使用 firebase Auth 恢复密码 在 firebase 数据库中重置密码邮件

iphone - 从 plist 中提取 NSDates 时出错

ios - 通过 Xcode 中的源代码管理将 Storyboard 提交到 SVN

ios - 使用 NSLog 打印地址簿到控制台

ios - 应用程序崩溃并出现错误 : "this class is not key value coding-compliant for the key tableView". 如何修复?

ios - 重新签名 iOS 应用程序 .iPA 文件而不更改 BundleId