代码之家  ›  专栏  ›  技术社区  ›  hotmeatballsoup

解释了iOS应用程序证书、配置配置文件、目标和代码签名

  •  0
  • hotmeatballsoup  · 技术社区  · 2 年前

    我是iOS应用程序开发的新手,很难理解两者之间的一些关系 证书 , 分配 , 配置配置文件 , 目标 以及整个代码签名过程(实际上是自动代码签名)。

    我有一个简单的用例,有两种类型的流需要讨论:

    1. 当地发展: 在这里,我将使用XCode的CLI工具在我的机器上构建一个IPA(或构建的存档),并在某种iOS设备模拟器中进行测试
    2. Beta测试: 在这里,我将使用XCode的CLI工具在CI/CD机器上构建(并可能进行代码签名)IPA,并将其发布到TestFlight,或者以某种只有我的五名内部/授权测试人员才能访问的方式发布。理想情况下,他们可以从内部轨道/工具(如TestFlight)将应用程序下载到他们的设备上,并进行测试,直到太阳下山。
    3. 生产 在这里,我将使用XCode的CLI工具在CI/CD机器上构建(并可能进行代码设计)IPA,并将其发布到应用商店(当然还有待审查)

    如果有人能帮助我了解所有这些资源(资源调配配置文件等)是什么,它们与另一个领域的关系是什么,以及它们与Beta测试和生产流程的基数是什么,这将对我的总体理解非常有帮助。如果有某些事情必须在Apple Developer控制台(web)或XCode中完成,请指出。

    理想情况下,这里的答案会向我解释我需要采取的所有步骤(在XCode、Apple Developer控制台或通过命令行),以生成所有这些资源,这样我就可以完成上面描述的所有3个流程(本地开发、Beta和Prod)。它还将解释Apple/iOS代码签名是如何工作的,自动代码签名是怎样工作的,以及这些步骤如何适用于所有3个流程。提前感谢您的帮助!

    1 回复  |  直到 2 年前
        1
  •  1
  •   Scott Thompson    2 年前

    签名证书代表开发人员。上面写着“与此证书签署的代码是由此人或公司开发的”。对于开发人员证书,通常是一个人。对于分销证书,它代表接受与苹果公司协议的具有法律责任的法人实体(也可能是一个人)。

    我不是律师。

    您希望确保所有证书的安全,并对分发签名证书格外小心,因为在我的 非律师 意见,它有点体现了你与苹果的法律合同。

    可执行代码(包括应用程序)通常被收集到具有束标识符的束中。它们通常采用“com.someproducer.somesoftware”的形式。应用程序是一种可执行程序,由其主捆绑包的标识符标识,该标识符也可以称为其应用程序id(Android也有类似的概念,如果我记得的话,它被称为应用程序id)。

    Provisioning配置文件获取签名证书(谁创建了此软件)、一个或多个捆绑包标识符(此配置文件包含哪些软件)和一组设备(此软件可以在哪里运行),并将它们连接在一起。供应配置文件通常最终嵌入到软件内部。在部分简介中说“这个软件,由这个人创建,可以在这些设备上运行”。(比这更复杂,但这是一般的想法)

    “开发”概要文件通常表示“该开发人员可以(基本上)在他们的调试设备上运行该软件”。因此,您可以在手机上运行应用程序进行调试,但不能将构建的应用程序安装在任何随机设备上。

    当您进行测试时,您可以创建所谓的“临时”配置文件。在特设配置文件中,您可以准确地确定哪些设备可以运行该软件。你可以从你的测试组中收集设备ID,将它们放在你的开发者帐户上,然后创建一个临时配置文件。您使用证书和配置文件对应用程序进行签名,然后将其发送给这些设备的所有者。该配置文件允许该软件在这些设备上运行,而不允许在其他设备上运行。一年内你的账户上可以拥有多少设备有严格的限制。

    分发证书和分发配置文件具有特殊属性。主要是当你与他们签署软件,然后将该软件发送到应用商店时,应用商店可以验证你的身份,然后重新签署和重新配置应用程序,使其在任何设备上运行。这就是你将应用程序投入生产的方式。你将应用程序发送给苹果,苹果会重新配置该应用程序并在商店中提供。

    至于如何创建所有这些东西,需要大量的指令才能进入堆栈溢出的答案,并且可能会发生变化。我将从苹果关于分发的文档开始:

    https://developer.apple.com/documentation/xcode/distribution

    如果你真的想深入了解个人资料,请查看:

    https://developer.apple.com/documentation/technotes/tn3125-inside-code-signing-provisioning-profiles