问题描述
我的场景
我为客户编写了一个 iOS 应用.该项目快结束了,现在是他们将其放入 App Store 的时候了.在整个开发过程中,我一直在向他们发送开发版本.这些构建有一个基于我的公司和我客户的项目的包 ID,如下所示:com.mycompany.clientname.projectname
.我使用我在自己的配置门户帐户中创建的 Ad Hoc 分发配置文件签署了这些 Ad Hoc 版本.
I wrote an iOS app for a client. The project is almost over and now it's time for them to put it in the App Store. I've been sending them development builds throughout the development process. Those builds had a bundle id based on my company and my client's project like so: com.mycompany.clientname.projectname
. I signed those Ad Hoc builds with an Ad Hoc Distribution Provisioning Profile that I created in my own Provisioning Portal account.
现在是去 App Store 的时候了,我需要做一个 Release Build 并将其发送给他们,以便他们使用他们自己的 App Store Distribution Provisioning Profile 进行签名.这也意味着为项目设置一个新的 Bundle ID.
Now that it's time to go to the App Store, I need to do a Release Build and send that for them to sign with their own App Store Distribution Provisioning Profile. This also implies setting a new Bundle ID for the project.
我的问题
我需要为客户端提供一个编译的应用程序,以便他们使用他们的配置文件进行签名.但是,我需要将 Bundle ID 设置为他们首先要使用的 ID.假设它是 com.bestclientever.appname
.Xcode 4 现在不允许我归档项目,因为这样做需要代码签名.我无法对其进行代码签名,因为我无法创建与他们在其供应门户中设置的捆绑 ID 相同的供应配置文件(供应门户强制执行唯一性 - 应该如此).
I need to get a compiled app to the client for them to sign with their provisioning profile. However, I need to set the Bundle ID to what they're going to use first. Let's say it's com.bestclientever.appname
. Xcode 4 won't let me archive the project now because doing so requires code signing. I can not code sign it because I can not create a provisioning profile with the same Bundle ID as what they have set up in their Provisioning Portal (the Provisioning Portal enforces uniqueness—as it should).
我是否在这里做出了任何不正确的假设或误解?IE.我真的必须将 Bundle ID 设置为他们将要签名的内容吗?
问题
有什么方法可以存档或构建 iOS 应用程序而无需对其进行代码签名?像稍后签名"设置之类的?
Is there any way to archive, or otherwise build, an iOS app without code signing it? Like a "sign later" setting or something?
或者,有没有办法使用一个包 ID 构建应用程序,但其他人可以使用另一个包 ID 的配置文件对其进行签名(通过更改已编译应用程序的包 ID 或其他一些签名方法))?
Or, is there a way to build the app with one bundle id but then someone else be able to sign it with a provisioning profile for another bundle id (either by changing the bundle id of the compiled app or some other signing method)?
如何构建最终发布版本但让其他人签署应用程序以分发到 App Store?
我尝试或探索的内容
- 为客户代理.
- 对于其他不太精明的客户,我最终只获得了他们的 Provisioning Portal 和 iTunesConnect 凭据,并像他们一样进行了最终构建.这不会与这个客户一起飞行.这是一家拥有严格安全准则和大量繁文缛节的大公司.
- 这与上面的类似,但由于相同的原因不起作用.问我的客户你能导出你的私钥并将它们发送给我"听起来很可疑吗?此技术在此答案中有所描述:如何将 iOS 应用发送给客户端,让他们进行代码签名
- This is similar to the one above and won't work for the same reasons. It sounds really fishy to ask my client "can you export your private keys and send them to me"? This technique is described in this answer: How can I send iOS app to client, for them to code-sign
- 源代码的许可不在我们的协议中.此外,该客户不想参与源代码(因此将其外包).我认为这是最后的选择,但一定有更好的方法!
- 不幸的是,只有代理级用户可以创建配置文件(据我所知).似乎应该有一种方法可以让我创建一个配置文件,我可以用它来签署构建或为我生成一个配置文件.我找不到任何一个选项.
推荐答案
这些答案中的大多数看起来都很复杂且过时.我认为简单的答案是使用开发者资料制作存档.
Most of these answers seem complicated and out dated. I think the simple answer is to make an archive with a Developer profile.
这是一个我目前正在研究的解决方案(未完全测试):
This is a solution which I am currently investigating for my own purposes (not fully tested):
您只需要开发者访问他们的帐户(而不是团队代理)并创建一个开发配置文件来授权您构建指定的 App ID(您需要指定 App ID,因为它会被编译).然后使用开发配置文件存档应用程序,并与您的客户共享存档.然后,他们可以使用自己的分发配置文件重新签署存档.
You just need developer access (not team agent) to their account and create a Development provisioning profile that authorizes you to build the specified App ID (you need to specify the App ID, because it gets compiled in). Then Archive the app with the Development profile, and share the archive with your client. They can then re-sign the archive with their own Distribution profile.
一个复杂的问题是,当您使用开发人员配置文件构建存档时,权利属性 get-task-allow 将设置为 true,但需要将其设置为 false 以进行分发,因此您必须通过设置来解决该问题手动您的 Entitlements.plist - 在此处查看我的问题:我可以使用开发者证书存档,然后在提交期间使用分发证书重新签名吗?
One complication is that when you build an archive with a developer profile, the entitlement attribute get-task-allow gets set to true, but needs to be set to false for distribution, so you have to work around that by setting it manually your Entitlements.plist - see my question here: Can I archive with a Developer certificate, then re-sign it during submission with a Distribution certificate?
这篇关于我如何生成我的客户可以在他们的终端上签名的 iOS 发布版本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!