Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么要签署两次分发申请?_Ios_Objective C_Xcode - Fatal编程技术网

Ios 为什么要签署两次分发申请?

Ios 为什么要签署两次分发申请?,ios,objective-c,xcode,Ios,Objective C,Xcode,在xcode中生成项目时,在生成设置中指定配置文件/证书对,在导出存档时,指定要使用的其他配置文件。问两次这个信息的原因是什么 编辑以澄清:我已经浏览了大量生成的.ipa文件的内容,似乎有两个位置与签名/设置有关。_CodeSign文件夹中的文档(似乎包含文件内容的加密哈希,以验证内容/源)和.mobileprovision文件,该文件似乎将在导出生成时添加。此时,我看不到任何东西表明在构建设置中选择的配置配置文件的目的 不确定,但请思考-第一次xCode仅对二进制应用进行签名,第二次对整个.i

在xcode中生成项目时,在生成设置中指定配置文件/证书对,在导出存档时,指定要使用的其他配置文件。问两次这个信息的原因是什么


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

不确定,但请思考-第一次xCode仅对二进制应用进行签名,第二次对整个.ipa存档进行签名。

您可以在生成设置中指定一个配置文件,xCode使用该配置文件对应用进行签名。例如,这使您可以在开发期间在设备上运行应用程序。如果我没记错的话,在过去,项目构建设置是唯一可以指定要使用的概要文件的地方,因此您通常会将调试构建设置为使用开发概要文件,将发布构建设置为使用分发概要文件

在某种程度上(我认为是Xcode 4),引入应用程序归档是为了让开发人员更容易。您创建一个存档,然后以不同的方式分发其中包含的应用。你可以做一个特别的分发发送给你的测试人员,然后你可以使用完全相同的存档提交到应用商店,或者创建一个企业分发版本,这取决于你加入的程序的类型。但是,由于不同的分发方法需要不同的配置文件,Xcode会要求您提供分发时要使用的配置文件

Xcode的归档功能非常方便——它在提交应用程序时省去了大量的复杂性,还负责保存您发布的每个版本的符号文件,以便您能够理解可能收到的任何崩溃日志。这是对开发者需要以不同方式使用同一版本应用程序的认识。如果您指定在两个不同的地方使用配置文件似乎有点奇怪,那么就这样吧——这是一个粗糙的边缘,在未来的Xcode版本中可能会得到清理

我不知道任何关于应用程序签名工作原理的权威信息,但我认为是这样的:

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

忘了“应用程序二进制”和“ipa”分别签名吧——我认为这是一种误导,iOS不太可能验证两个不同的签名。

我不知道你在说什么。在开发人员门户上创建配置文件时,指定要使用的特定分发证书。设置配置文件只有一个证书…这个问题似乎是离题的,因为它实际上不是一个编程问题。@Almo对于iOS开发人员来说,这属于[iOS]软件开发特有的实际、可回答的问题类别,因此应该被视为是主题问题。这一点很好。我还要声明,我认为服务器故障的投票结果也没有意义。我的反对票被取消。我计划做一些额外的测试,你所说的正是我所期望的(这只是一个粗略的优势),但是如果存档的配置文件可以合法更改(即appstore与ad-hoc/enterprise),那么在构建设置中指定的配置文件的用途是什么?澄清一下:如果应用程序二进制文件是使用构建设置中的配置文件(而不是我所期望的证书)签名的,那么如何避免更改ipa配置文件时出现不匹配问题?还是被忽略了?@Nyth我已经试着在我的回答中进一步解释了。如果有可能出现“不匹配问题”,那么您可以肯定,这里会有几百个关于由此产生的错误的问题。