【问题标题】:Warning during archive App with iOS 8 Extension in Xcode 6在 Xcode 6 中使用 iOS 8 扩展归档应用程序时发出警告
【发布时间】:2014-11-14 22:40:59
【问题描述】:

我在归档应用时遇到问题。

我为 iOS 8 扩展创建了一个新目标。

当我归档应用程序时,我会收到一条警告。

警告是

"PBXCp 警告", "警告:跳过复制阶段条,二进制是代码 签: /Users/Library/Developer/Xcode/DerivedData/App/Build/Intermediates/ArchiveInter 中介/AppName/IntermediateBuildFilesPath/UninstalledProducts/AppExtappex/AppE xt"

应用程序使用 Objective-C。

【问题讨论】:

  • 我也明白了。不知道会不会在提交过程中出现问题。
  • 我也收到了有关应用小部件的警告,但应用提交正常并且在应用商店中运行良好。
  • 不,我找到了任何解决方案...
  • 是的,应用提交没问题,应用通过了。

标签: ios xcode code-signing debug-symbols ios-app-extension


【解决方案1】:

选中 Xcode 目标的构建设置中的“在复制期间剥离调试符号”选项。它说它不能去除调试符号,因为扩展已经签名。

【讨论】:

  • 我无法理解该设置的含义,但它起作用了。谢谢!
  • 对调试版本保留 NO,对 Adhoc/Release 保留。
  • @Locutus 你是否真的通过比较大小检查了应用程序包中的应用程序二进制文件?在我的测试中,将值设置为 NO 在使用 Product Archive 时没有任何效果。
  • 如果由于某种原因你引用了一个未签名的、未剥离的依赖项,它会膨胀。
【解决方案2】:

如果您在 Xcode 6.2 中创建全新的示例项目和 Today Extension,则默认值设置为 NO 以去除调试符号。

【讨论】:

    【解决方案3】:

    复制自:https://stackoverflow.com/a/30459703/736384

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

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

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

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

    【讨论】:

    • 我在 Apple Watch 扩展上遇到了类似的问题,这个解决方案对我有用。
    【解决方案4】:

    默认情况下,框架/扩展已经被剥离和代码签名。应用程序项目无法检测到框架已被剥离并抛出无害警告。您应该禁用它,否则您的应用程序将不会被剥离。

    【讨论】:

    • 这似乎是正确的解释,因为其他答案都没有解决这个问题。但是您是否有任何文档表明“框架/扩展已被剥离并默认签名代码?”
    • 工作区中的项目(框架和应用程序)是单独构建的。应用程序项目仅引用框架项目的输出二进制文件。在发布配置中,框架二进制文件将被剥离(如果启用该设置)并进行代码签名。应用程序项目也会发生同样的事情,除了框架二进制文件使用应用程序项目证书重新签名。从技术上讲,您可以为应用程序项目提供未剥离和未签名的调试框架二进制文件,并且应用程序项目将剥离并签署它。
    • 当你说你不应该禁用它时,你的意思是我们应该将它的值保留为NOYES
    【解决方案5】:

    Strip Debug Symbols During Copy 构建设置的效果似乎有些混乱,我建议阅读这篇文章以获取更多信息:Skipping Copy Phase Strip

    以下是我研究这个问题的主要收获:

    • 当您使用 Xcode 6.2 或更高版本创建新项目时,值 插入到项目文件中是 NO 对于两个默认值 为此设置构建配置(调试和发布)。
    • 在 Release 配置中将值设置为 YES 和 执行产品存档对生成的 应用程序二进制大小(我鼓励您通过 测试您自己的项目)。
    • 用于Sybolication of iOS crash reports的调试符号来了 来自与应用程序分开的外部 .dsym 文件 bundle 所以我不希望符号表包含在 二进制。

    【讨论】:

      【解决方案6】:

      检查 Xcode 目标的构建设置中的“条形样式”选项。如果是“非全局符号”,则将其更改为“所有符号”。这样可以解决问题,但是不知道这个改动会不会导致其他问题。

      【讨论】:

        【解决方案7】:

        在目标构建设置的“部署”部分中,查找 Strip Debug Symbols During Copy 并将其设置为 YES 以用于任何生产构建。

        【讨论】:

        • 我在 WatchKit Extension 和 WatchKit App 中将 Release 设置为 Yes,得到了更多相同的警告,这次是针对 Extension 和 App 本身。我也没有在部署部分看到 AppStore 行。
        • @AndrewDuncan AppStore 配置不是由 XCode 创建的,它是由开发人员或其他工具添加的。这是我在查看 iOS 项目时经常看到的。它在进行自动 App Store 构建时提供了更大的灵活性。
        【解决方案8】:

        对我有用的是:

        我编辑了我正在归档的方案。在那个窗口中,我选择了“运行”,然后选择了“信息”选项卡。在“构建配置”中,我已将其更改为“发布”。我只是将其更改为“调试”(默认选项)并且该警告消失了。

        我希望这会有所帮助。

        【讨论】:

          【解决方案9】:

          这可能是因为您使用 DEBUG 方案存档。 如果您选择 RELEASE 方案,则选项“在复制期间剥离调试符号”设置为 YES,您不会收到此警告。

          我建议使用 DEBUG 设置存档以进行 beta 测试,但使用 RELEASE 设置存档以在 App Store 中发布。

          【讨论】:

          • 我也收到此警告,但我使用 RELEASE 方案存档。
          • 嗨,彼得。请参阅下面保罗的回答。
          猜你喜欢
          • 2019-01-29
          • 1970-01-01
          • 2015-12-29
          • 1970-01-01
          • 2016-01-27
          • 1970-01-01
          • 2017-08-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多