【问题标题】:Xcode 6 Archiving and get a warning "Skipping copy phase strip ,binary is code signed" when add "share extension" to targetXcode 6存档并在将“共享扩展”添加到目标时收到警告“跳过复制阶段条,二进制是代码签名”
【发布时间】:2015-02-08 15:52:48
【问题描述】:

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

旧问题没有提供更正此问题的见解。所以我决定再问一次。 Warning during archive App with iOS 8 Extension in Xcode 6

有人可以解释为什么会这样吗?是因为扩展目标已经是代码签名的吗?如果是这样,如何解决?

我知道将“Strip debug symbols during copy”设置为“NO”可以清除此警告。但实际上并不能解决问题。不“剥离调试符号”的缺点是什么?因为无论我将其设置为 YES 还是 NO,我的存档大小仍然相同

【问题讨论】:

    标签: ios xcode code-signing ios-app-extension ios8-share-extension


    【解决方案1】:

    如果您使用的是 Xcode 9.34.1,请单击项目设置。使用过滤器找到正确的设置:输入“strip debug”。您将找到设置 COPY_PHASE_STRIP。可能设置为“是”。设置为“否”以删除警告。

    【讨论】:

      【解决方案2】:

      不要不要在您的应用程序项目中禁用Strip Debug Symbols During Copy。这会使您的应用膨胀(如果您有其他未签名的依赖项)。

      它发生是因为构建应用程序项目试图剥离框架,但它不能因为框架已经被代码签名。然而,框架在构建过程中已经被剥离,所以警告是无害的。 Xcode is not 似乎没有检测到代码签名的框架已经被剥离。

      你应该保持原样。

      【讨论】:

      • 感谢您的回答。您能否详细说明在复制期间在剥离调试符号上设置“否”会导致应用膨胀的细节?
      • 我认为您混淆了COPY_PHASE_STRIP(在 Xcode 构建设置中显示为“复制期间剥离调试符号”)和 STRIP_INSTALLED_PRODUCT(“剥离链接产品”)。
      • 前者只影响复制的二进制文件,而不影响链接的产品本身。从文档中:“是:复制的二进制文件被剥离了调试符号。这不会导致链接器生成的二进制文件被剥离。使用STRIP_INSTALLED_PRODUCT 让链接器剥离二进制文件。”。
      • 在我看来 Daniel 就在这里。现在 Xcode 项目的默认设置是将 COPY_PHASE_STRIP 设置为 NO 用于调试和发布。但是对于 Debug 和 Release,STRIP_INSTALLED_PRODUCT 都设置为 YES。此设置会消除错误,但仍会删除版本的调试信息。
      • 我丹尼尔是对的,我们需要将 STRIP_INSTALLED_PRODUCT 设置为 NO 以进行调试。默认情况下,STRIP_INSTALLED_PRODUCT(带状链接产品)对所有都是 YES,但调试符号仍然存在。
      【解决方案3】:

      在我的情况下,与 2 个 AppIcons 相关(我忘了填写它们),检查 xxx.xcassets 文件中的所有 AppIcons 是否具有正确的 xxpt。 从这里我请求苹果改进这个检查或者启用一个自动工具来完成所有的 AppIcons 集。太疯狂了。

      【讨论】:

        【解决方案4】:

        "编译后的代码通常包含调试信息。这个调试的东西是 有助于在调试器中检查正在运行的代码,但对 您将在分发版本中发布的优化代码。因此它 在进行存档构建时被剥离。

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

        要修复警告,只需将两个值都更改为 NO。删除它们确实 不起作用,因为两者的默认值仍然是 YES。该项目 Xcode 6.3 附带的模板默认关闭这些。 只有使用旧模板开始的项目仍然有 YES 发布行。”

        来源:https://www.cocoanetics.com/2015/04/skipping-copy-phase-strip/

        【讨论】:

          【解决方案5】:

          如您所知,我遇到了同样的警告,并通过在包含应用程序(不是扩展程序)的构建设置中将“复制期间去除调试符号”设置为“否”来解决它。

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

          因此,我相信警告的实际含义是 Xcode 在归档容器应用程序时无法去除扩展二进制文件的调试符号,因为需要嵌入容器应用程序的扩展二进制文件“是”在 Xcode 在归档容器应用程序时尝试去除扩展二进制文件的符号之前,已经通过代码签名编译和冻结。

          似乎需要正确更新与嵌入扩展二进制文件的条带化调试符号相关的 Xcode 默认构建设置才能不显示此警告。

          【讨论】:

          • 将“复制期间去除调试符号”设置为“否”,是否会为应用程序的某些组件发送调试符号?
          猜你喜欢
          • 2023-04-04
          • 2015-06-18
          • 1970-01-01
          • 2019-02-19
          • 1970-01-01
          • 2012-08-21
          • 1970-01-01
          • 1970-01-01
          • 2019-06-22
          相关资源
          最近更新 更多