如何熟悉代码签名问题?
Posted
技术标签:
【中文标题】如何熟悉代码签名问题?【英文标题】:How to become familiar with code signing issues? 【发布时间】:2015-02-10 14:27:37 【问题描述】:每次我处理代码签名和配置文件时都会发生奇怪的事情。大多数时候我会收到错误“找不到代码签名身份”,如果没有,则会出现“找不到匹配的配置文件”和“没有具有有效签名身份的配置文件”之类的错误。
虽然我对代码签名和配置背后的理论和内容非常熟悉,但我每次都会遇到很多陷阱,我不知道如何处理。设置新应用时有时会失败,有时不会。
有 5*2 种不同的方式来选择代码签名身份。它们之间有什么区别?如果我选择一个用于调试,一个用于发布,“Any iOS SDK”的原因是什么?
此外,有两个地方给出了这个对话框:Project-Settings -> Buildsettings 是第一个位置,也是 Build Settings 下的 Target。两者都不同步,所以如果我首先更改代码签名,我必须在第二位置更改两次。有没有办法让它们保持同步?
哪种代码签名身份最适合各种行(调试、调试 -> 任何 ios sdk、发布、发布 -> 任何 ios sdk),因为我可以在开发人员身份和分发身份之间进行选择(我可以想象,那发行版用于发布,开发版用于调试,但由于一切都失败了,我不知道。
我做了什么:
我们团队的每个开发人员都在会员中心存放了一份有效证书,并为团队临时分发了一份。 我们还创建了反映项目设置中完全相同设置的 AppID。在这两者之间,我们避免使用变量,并在项目设置中使用确切的 appid 来降低这方面的风险并简化事情。
当将配置文件从“自动”切换到此应用的特定配置文件时,代码签名身份会更改为不同的值,这些值在项目设置和目标构建设置之间也不同步:
在 Target->Build Settings 上,我们得到以下结果:
在项目 -> 构建设置上,我们得到不同的结果:
哪个更准确? 在“产品”->“存档”->“验证”之后,我们得到以下错误:
这里是否选择不同的代码签名身份并不重要。实际上,只是为了玩'trail-and-error',我们尝试了几乎所有代码签名身份的多种组合,以了解 XCode 会做什么。
在此错误消息来自 Archive->Validate 之前选择的配置文件被替换为另一个由随机生成的字符串命名的配置文件之后:
谁能告诉我这里发生了什么以及如何解决这些问题?
我已经阅读了很多关于这个主题的文档。但是大多数关于这个主题的教程都已经过时了,因为 XCode 4 和 XCode 6 之间发生了一些变化。即使是苹果文档也提供了基于过时 XCode 版本和会员开发中心过时版本的屏幕截图。
更新
正如 Ian McDonald 正确指出的那样,最后一个问题(由最后 2 个屏幕截图涵盖)得到了回答。重新创建配置文件后,它不会被随机生成的字符串替换,但 IPA 创建仍然无法使用“未找到代码签名身份”。
现在的样子:
【问题讨论】:
有人,请将此 SO 问题转发给 Tim Cook。 那不是“随机生成的字符串”;这是您的机器上不再安装的配置文件的标识符。 感谢您指出这一点,伊恩。我重新创建了一个配置文件,现在它不会被随机字符替换。但是仍然找不到代码签名身份,如问题更新中所述(最后) 【参考方案1】:您有一个很长的问题,但是如果您在归档或发布应用时遇到问题,您应该遵循一些步骤
第一次代码签名
如果您使用 Debug
构建您的应用程序,则调试必须与 iPhone 开发人员签署 --> 一般如果您使用许多或特定的“依赖于您在钥匙链中拥有的证书”
但是如果您使用release
构建您的应用程序,那么您应该认证 iPhone 发行版 ---> 通用或特定的
第二个配置文件
如果您使用 Debug
构建,则配置文件 Debug 应该匹配您的捆绑包详细信息并进行开发
release
是您在开发者苹果网站上创建的发行版
我希望这可以帮助你看看this也请
【讨论】:
【参考方案2】:根据我的阅读内容,您已将目标中的配置文件从“xxx.xxx”更改为“xxx.xxxTests”,这实际上是一个不同的包标识符,使错误有效。您确实有两种行动方案:
将您的捆绑包标识符改回“xxx.xxx”。这是阻力最小的适当路径。
在门户中创建一个新的捆绑标识符作为“xxx.xxxTests”,并为绑定到同一证书的“xxx.xxxTests”创建一个新的配置文件。关闭 XCode 后,将新的配置文件拖到您的 XCode 应用程序图标上,然后打开您的项目。
您不必更改捆绑包标识符即可进行测试。当您进行部署时,您只需更改您的目标正在编译的配置文件(开发与分发)。
编辑: 我有更多关于配置配置文件的提示:How to become familiar with code signing issues?
配置的快速和肮脏的一面是这样的:
当您被添加到 Apple Provisioning Portal 时,您的 证书 就是城堡的钥匙。您编译的任何代码都必须与您的证书相关联,否则您将无法正确编译/导出代码。 您的包标识符本质上是 iOS 识别您的应用程序的方式。从概念上讲,如果您想在同一设备上多次安装您的应用,请创建多个捆绑标识符。 您的配置文件将所有部分联系在一起。 prov profile 告诉 XCode 您计划使用 cert 来编译由 bundle identifier 标识的应用程序。如果是开发版本,则只有专门分配给门户中 prov 配置文件的设备才能安装您的应用。在 XCode 中,您需要确保您的目标包标识符与配置文件中的包标识符匹配。同样,请确保您的 代码签名身份 与您在门户中设置并绑定到配置文件的证书相匹配。最后从代码签名身份下方的下拉列表中选择适当的配置文件。
【讨论】:
以上是关于如何熟悉代码签名问题?的主要内容,如果未能解决你的问题,请参考以下文章