为什么应用程序签署两次分发?

时间:2014-02-12 01:10:45

标签: ios objective-c xcode

在xcode中构建项目时,可以在构建设置中指定配置文件/证书对,并在导出存档时指定要使用的其他配置文件。两次询问此信息的原因是什么?

编辑以澄清:我已经浏览了一堆生成的.ipa文件的内容,似乎有两个与签名/配置相关的位置。 _CodeSign文件夹中的文档(似乎包含文件内容的加密哈希值,用于验证内容/源)和.mobileprovision文件,它似乎会在导出构建时添加。此时,我没有看到任何表明在构建设置中选择的配置文件的目的。

2 个答案:

答案 0 :(得分:1)

您可以在Xcode用于对应用进行签名的构建设置中指定配置文件。例如,这使您可以在开发期间在设备上运行应用程序。如果我记得正确,过去项目构建设置是您可以指定要使用的配置文件的唯一位置,因此您通常将Debug构建设置为使用开发配置文件,并将Release构建设置为使用分发配置文件。

在某些时候(Xcode 4,我认为),引入了应用程序存档以使开发人员更容易。您创建一个存档,然后以不同的方式分发它包含的应用程序。您可以执行临时分发以发送给测试人员,然后您可以使用相同的存档提交到应用商店,或者创建企业分发版本,具体取决于您加入的程序类型。但由于不同的分发方法需要不同的配置文件,Xcode会要求您分发时要使用的配置文件。

Xcode的归档功能是一个巨大的便利 - 它提交你的应用程序需要很多复杂,并且还负责保存你分发的每个版本的符号文件,这样你就可以理解你的任何崩溃日志可能会收到。这是对开发人员以不同方式使用相同版本的应用程序的需求的认可。如果您指定供应配置文件在两个不同的地方使用似乎有点奇怪,那就这样 - 这是一个粗略的边缘,可能会在未来的Xcode版本中被清理。

我不知道有关应用程序签名的确切工作方式的任何权威信息,但我认为它是这样的:

  • 配置文件包含您的证书(包括您的公钥),并使用Apple的私钥签名
  • 您使用与证书中的公钥对应的私钥对您的应用进行签名
  • 设备使用Apple的公钥对配置文件进行身份验证,然后使用配置文件中的公钥对应用程序签名进行身份验证
  • 如果一切都匹配,设备将运行应用程序;如果没有,该应用程序将无法安装

忘记单独签名的“app binary”和“ipa” - 我认为这是一个红色的鲱鱼,iOS不太可能验证两个不同的签名。

答案 1 :(得分:0)

不确定,但想想 - 第一次xCode签署二进制应用程序,第二次整个.ipa存档。