如何熟悉代码签名问题?

时间:2015-02-10 14:27:38

标签: ios xcode provisioning-profile ios-provisioning

每当我处理代码签名和配置文件时,都会发生奇怪的事情。大多数情况下,我收到错误“找不到代码签名身份”,如果没有,则会出现“找不到匹配的配置文件”和“没有配置文件的配置文件”。

虽然我对代码签名和配置背后的理论和事情很熟悉,但我仍然遇到很多陷阱,我不知道如何处理。有时它在设置新应用程序时失败,有时不会。

enter image description here

有5 * 2种不同的方式来选择代码签名身份。他们之间有什么区别?如果我选择一个用于调试,一个用于发布,那么“任何iOS SDK”的原因是什么?

此外,还有两个地方提供此对话框:项目设置 - > Buildsettings是第一个,也是Build Settings下的Target。两者都不同步,所以如果我在第一个地方更改代码签名,我必须在第二个位置更改它两次。有没有办法让它们保持同步?

哪种代码签名标识最适合各种行(调试,调试 - >任何ios sdk,发布,发布 - >任何ios sdk),因为我可以在开发者身份和分发身份之间做出选择(我可以想象) ,分发一个用于发布,开发一个用于调试,但由于一切都失败了,我不知道。

我做了什么:

我们团队的每个开发人员都有成员中心的有效证书,还有一个用于团队临时分发的证书。 我们还创建了AppID,它反映了项目设置中完全相同的设置。在此期间,我们避免使用变量,并在项目设置中使用完全appid来降低此方面的风险并简化操作。

将配置文件从“自动”切换到此应用程序的特定配置文件时,代码签名标识将更改为不同的值,这些值在项目设置和目标生成设置之间也不同步:

在Target-> Build Settings上,我们得到以下结果: enter image description here

在项目上 - >构建设置我们得到不同的结果: enter image description here

哪一个更准确? 在“产品”之后 - > “档案” - > “验证”我们收到以下错误:

enter image description here

如果我们选择不同的代码签名身份,这并不重要。实际上,只是为了播放“追踪错误”,我们尝试了几乎所有代码签名身份的组合,以了解XCode会做什么。

来自存档的此错误消息 - >验证先前选定的配置文件被替换为由随机生成的字符串命名的另一个配置文件:

enter image description here enter image description here

谁能告诉我这里发生了什么以及如何解决这些问题?

我已经阅读了很多关于这个主题的文件。但是,由于XCode 4和XCode 6之间发生了一些变化,因此围绕此主题的大多数教程已经过时了。即使是苹果文档也提供了基于过时的XCode版本和成员开发人员中心的过时版本的截图。

更新

正如Ian McDonald正确指出的那样,最后一个问题(由最后两个截图覆盖)得到了解答。重新创建供应配置文件后,它不会被随机生成的字符串替换,但IPA创建仍无法使用“未找到代码签名标识”。

现在的样子: enter image description here

2 个答案:

答案 0 :(得分:1)

你有一个很长的问题,但如果你遇到存档问题或发布你的应用程序,你应该遵循一些步骤

  

第一个代码签名

如果您使用Debug构建应用,则调试必须与iPhone开发者签名 - >一般情况下,如果您使用许多或特定的一个"取决于您在钥匙链中的证书"

但如果您使用release构建应用,那么您应该认证iPhone发行版--->一般或特定的

  

第二次配置文件

如果您使用Debug进行构建,那么配置文件Debug应该匹配您的捆绑详细信息并进行开发

release是您在开发者苹果网站

上创建的分发版

我希望这有助于您了解this

答案 1 :(得分:1)

从我正在阅读的内容中您已经更改了目标中的配置文件" xxx.xxx" to" xxx.xxxTests"这实际上是一个不同的包标识符,使错误有效。你真的有两个行动方案:

  1. 将您的包标识符更改回" xxx.xxx"。这是阻力最小的适当途径。

  2. 在门户中创建一个新的包标识符" xxx.xxxTests"以及" xxx.xxxTests"的新配置文件。绑在同一个证书上。关闭XCode后,将新的配置文件拖到您的XCode应用程序图标上,然后打开您的项目。

  3. 您不必更改捆绑包标识符以进行测试。当您去部署时,您只需要更改目标正在编译的配置文件(开发与分发)。

    编辑: 我在此处提供了有关配置配置文件的更多提示:How to become familiar with code signing issues?

    配置的快速和肮脏的一面如下:

    • 当您添加到Apple Provisioning Portal时,证书是城堡的关键。您编译的任何代码都必须与您的证书相关联,否则您将无法正确编译/导出您的代码。
    • 您的捆绑包标识符基本上是iOS识别您的应用程序的方式。从概念上讲,如果您想在同一设备上多次安装您的应用程序,请创建多个软件包标识符。
    • 您的配置文件将所有部分绑定在一起。 prov个人资料告诉XCode您计划使用证书来编译由捆绑包标识符标识的应用。如果它是一个开发版本,那么只有专门分配给门户网站中的prov配置文件的设备才能安装您的应用程序。

    在XCode中,您需要确保目标捆绑包标识符与配置文件中的捆绑包标识符相匹配。同样,请确保您的代码签名标识与您在门户网站中设置的证书相匹配,并与配置文件相关联。最后,从代码签名标识下方的下拉列表中选择适当的配置文件。