Ios Xcode 6存档并收到警告;跳过复制相位条,二进制代码为“带符号”;在加入“时”;“股份延期”;瞄准

Ios Xcode 6存档并收到警告;跳过复制相位条,二进制代码为“带符号”;在加入“时”;“股份延期”;瞄准,ios,xcode,code-signing,ios-app-extension,ios8-share-extension,Ios,Xcode,Code Signing,Ios App Extension,Ios8 Share Extension,当我将共享扩展添加到我的项目并将其存档时,我收到了这个警告 警告:跳过复制阶段带,二进制代码已签名:/Users/xxxx/xxx/xxxx/Build/xxxx/Build/Intermediates/ArchiveIntermediates/xxxx/IntermediateBui ldfilepath/UninstalledProducts/xxx.appex/xxxx 老问题并没有提供纠正这一问题的信息和见解。所以我决定再问一次。 有人能解释一下为什么会这样吗?是否因为扩展目标已进行代

当我将共享扩展添加到我的项目并将其存档时,我收到了这个警告 警告:跳过复制阶段带,二进制代码已签名:/Users/xxxx/xxx/xxxx/Build/xxxx/Build/Intermediates/ArchiveIntermediates/xxxx/IntermediateBui ldfilepath/UninstalledProducts/xxx.appex/xxxx

老问题并没有提供纠正这一问题的信息和见解。所以我决定再问一次。

有人能解释一下为什么会这样吗?是否因为扩展目标已进行代码签名?如果是,如何解决


我知道将“复制期间带调试符号”设置为“否”可以清除此警告。但这并不能真正解决问题。不“剥离调试符号”的缺点是什么?因为我的存档大小仍然相同,无论我将其设置为是还是否,我都遇到了相同的警告,并通过在包含应用程序(而不是扩展)的内部版本设置中将“复制期间剥离调试符号”设置为“否”解决了此问题

另一方面,更改相同的分机设置没有效果。这明确了警告的实际含义。也就是说,剥离符号并不意味着“目标”的符号将被剥离,而是意味着目标将尝试剥离“嵌入二进制文件”的符号

因此,我认为警告的实际含义是Xcode在归档容器应用程序时不能去掉扩展二进制文件的调试符号,因为需要嵌入容器应用程序中的扩展二进制文件“是”在Xcode试图在归档容器应用程序时去掉扩展二进制文件中的符号之前,已通过代码签名编译并冻结


似乎需要正确更新与嵌入式扩展二进制文件的条带化调试符号相关的Xcode默认生成设置,以避免显示此警告。

Donot在应用程序项目中复制期间禁用
条带化调试符号。这将使你的应用程序膨胀(如果你有其他未签名的依赖项)

之所以会发生这种情况,是因为构建应用程序项目试图剥离框架,但由于框架已经进行了代码设计,所以无法剥离。然而,框架在构建过程中已经被剥离,因此警告是无害的。Xcode似乎没有检测到代码签名框架已经被剥离

你应该保持原样

“编译后的代码通常包含调试信息。这些调试内容是 有助于检查调试器中运行的代码,但对于 您将在分发版本中发布的优化代码 在执行归档构建时被剥离

这里的问题是PBXCp无法去除调试符号 因为这会使数字文件无效 签名。因此,如果您有一个在Xcode 6.3之前创建的项目 您现在将收到这样的警告

若要修复警告,只需将两个值都更改为“否”。删除它们会导致错误 不起作用,因为两者的默认值仍然为“是”。项目 默认情况下,Xcode 6.3附带的模板已关闭这些功能。 只有使用旧模板启动的项目仍然具有“是”选项 释放线。”


来源:

在我的例子中,它与2个AppIcon有关(我忘记了填充它们),请检查xxx.xcsets文件中是否有所有AppIcon以及正确的xxpt。
从这里,我恳求苹果改进这个检查,或者启用一个自动工具来完成所有AppIcons设置。这太疯狂了。

如果您使用的是Xcode 9.34.1,请单击项目设置。使用筛选器查找正确的设置:键入“strip debug”。您将找到“复制相位”条的设置。可能设置为“是”。设置为“否”以删除警告。

将“复制期间删除调试符号”设置为“否”,是否会有为应用程序的某些组件发送调试符号的风险?谢谢您的回答。您能否详细说明在复制过程中对条带调试符号设置“否”会使应用程序膨胀的细节?我认为您混淆了(在Xcode构建设置中显示为“复制过程中的条带调试符号”)和(“条带链接产品”)。前者只影响复制的二进制文件,而不影响链接产品本身。从文档中可以看到:“是:复制的二进制文件会去除调试符号。这不会导致链接器生成的二进制文件被去除。使用
STRIP\u INSTALLED\u PRODUCT
让链接器去除二进制文件。”。在我看来,Daniel就在这里。现在Xcode项目的默认设置是在调试和发布时将COPY_PHASE_STRIP设置为NO。但对于调试和发布,STRIP_INSTALLED_PRODUCT都设置为YES。此设置会使错误静音,并且仍然会删除发布版的调试信息。如果Daniel是对的,我们需要将STRIP_INSTALLED_PRODUCT设置为NO进行调试。默认情况下,STRIP_INSTALLED_PRODUCT(STRIP Linked PRODUCT)对所有人都是YES,但调试符号仍然存在。