这是我在我自己的一个构建系统中解决的问题,目的大致相同……让我们回到当时的“iPhone 开发人员计划”的第一天。如果您当时在社区中,您可能还记得工具链......我们应该说不那么友好......不如今天。
当您想要为 AppStore 或 AdHoc 构建构建时,您必须创建这个奇怪的 entitlements.plist 文件,然后将一个 XML 块粘贴到该文件的主体中。然后您运行构建,当时似乎发生了一些神奇的事情,并且该文件的存在使构建工作,允许您手动构建您的 IPA,并照常进行业务。现在我们已经老了几年,希望比 SDK 的早期更聪明一点,我们已经认识到神奇的 XML blob 实际上并没有那么神奇——“get-task-allow” key 是一个设置,用于指示二进制文件是否应该允许其他进程(比如调试器)附加到二进制文件。使用开发配置文件签署应用程序时,此密钥将设置为“真”
Apple 在Tech Note TN2250中提供了一些关于从 Provisioning Profiles 中读取 XML(以及扩展权利)的更新:
安全 cms -D -i /path/to/the.app/embedded.mobileprovision
这将在 Provisioning Profile 中返回 XML——您可以从那里解析出“get-task-allow”的键值对,并使用该值来确定 Provisioning Profile 是 Development 还是 Distribution。
我绝对同意,如果有一个工具可以直接告诉我们,这样我们就不必通过配置文件来寻找线索,但与此同时,至少我们有一个高度可靠的,虽然迂回的方式在运行和构建我们无法使用的构建之前做出区分。
祝你好运,如果您需要更多说明或有其他问题,请告诉我。