XCode 中代码签名“调试”或“发布”的意义何在?

Posted

技术标签:

【中文标题】XCode 中代码签名“调试”或“发布”的意义何在?【英文标题】:What is the point of Code signing "Debug" or "Release" in XCode? 【发布时间】:2013-03-21 15:43:48 【问题描述】:

参考图片,如果我尝试研究无用,我不明白选择“调试”或“发布”的选项有什么意义。我们唯一需要签名的是“Any ios SDK”。我还做了一个二进制差异来检查签名 Debug 和 Release 在 _CodeSignature/CodeResources 文件中是否没有区别。

有人吗?

【问题讨论】:

你在没有代码签名的设备上调试过吗? 是的,即使我不只对调试进行代码签名,它也可以工作。但是,必须对 Any iOS SDK 进行签名才能使其正常工作。但这就是问题所在,这个签名调试是为了什么? 【参考方案1】:

要在设备上运行任何应用,它需要由授权开发者签名并包含有效的配置文件(由 Apple 签名)授予在设备上运行的权限。

为了将调试器附加到您的应用(或使用 Instruments),配置文件需要包含允许这样做的权利。

您在门户中生成的“开发”配置文件和证书允许您执行此调试,而发布配置文件(用于应用商店)禁用它。这就是为什么您为项目同时拥有“发布”和“调试”配置的原因,每个配置都选择了不同的配置文件/身份对。

“任何 iOS SDK”部分只是根据编译环境进一步更改构建设置的一种方式。例如,您可能希望在模拟器上运行时更改编译器设置(以禁用/启用某些测试功能)。

从技术上讲,签名身份不需要此“任何 iOS SDK”部分,并且默认情况下,当您创建 iOS 项目时,其他任何构建设置都没有此额外字段。你甚至可以删除它,但我不确定 Xcode 是否会正常运行。

【讨论】:

如果我将“不要代码签名”用于调试,它怎么会为我调试? 我不确定您是否正确理解了我的问题,我在问为什么当我不对调试进行代码签名时它仍然有效? (我不是说 Any IOS SDK 的 debug,我指的是 Debug)。 因为“任何 IOS SDK”设置正在启动并覆盖父(调试)设置。 所以你告诉我根据你的理解选择答案。

以上是关于XCode 中代码签名“调试”或“发布”的意义何在?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode中代码注释编写小技巧

哈希的意义何在?

Frame skipped from debugging during step-in. VSCode调试无法定位其它库中代码的解决办法

Frame skipped from debugging during step-in. VSCode调试无法定位其它库中代码的解决办法

实际上,NSAssert 的意义何在?

无法解决错误:可执行文件在 xcode 4.2 中使用无效的调试权利签名