【问题标题】:xcarchive malformed due to missing Info.plist由于缺少 Info.plist,xcarchive 格式错误
【发布时间】:2017-02-07 14:19:59
【问题描述】:

我有两个基于同一个 Rake 脚本构建的项目,该脚本在内部使用 XCode 构建。 用xcodebuild -archivePath 构建它(ARCHIVE 成功),然后我用xcodebuild -exportArchive 打包应用程序。 问题是第一个项目成功完成所有步骤,但第二个项目在xcodebuild -exportArchive 上失败,因为xcarchive 格式错误。 我已经比较了这两个档案,格式错误是由于档案内缺少Info.plist 造成的。 当我手动准备 Info.plist 并将其放入 xcarchive 时,我能够毫无问题地打包应用程序。

任何关于 XCode 构建不会在 xcarchive 文件中生成 Info.plist 的线索吗?

【问题讨论】:

  • 您找到解决问题的方法了吗?我看到了同样的问题,经过一番谷歌搜索后,我看到一些添加这些(在我之前的评论中)解决了这个问题。我想我已经正确设置了这些,但我仍然看到同样的问题。据我所见,在命令行上将 CONFIGURATION_BUILD_DIR="${BUILD_DIR}" 更改为 SYMROOT="${BUILD_DIR} 以修复升级 cocoapods 0.38.2 -> 1.1.1 后的一些其他问题后,我的问题出现了和 Xcode 7.2 -> 8.2.1
  • 这是迄今为止我找到的最直接的答案:developer.apple.com/library/content/qa/qa1273/_index.html 但它对我不起作用。
  • 毕竟我只是通过删除 SYMROOT 并使用默认值来让它工作。应该更快地注意到这一点。

标签: ios xcode8 xcodebuild xcarchive


【解决方案1】:

@diidu 对这个问题的评论是我的问题的解决方案,我相信这与@Fishman 的相同。从我的构建脚本中添加 CONFIGURATION_BUILD_DIR(并删除对 SYMROOT 的使用)导致 Info.plist 写入存档,然后导出成功。

【讨论】:

    【解决方案2】:

    我在一个 iOS 应用程序项目中也遇到了这个错误。该项目使用链接到框架的 GIT 子模块,作为子项目集成到 Xcode 工作区。

    在框架子模块升级为使用 XCFramework 而不是普通框架之前,该项目确实可以正常构建。深挖这个问题,终于找到了问题所在:BUILD_LIBRARY_FOR_DISTRIBUTIONSKIP_INSTALL框架Build Settings

    如果你设置了

    BUILD_LIBRARY_FOR_DISTRIBUTION=是
    SKIP_INSTALL=否

    为了构建框架,应用程序归档任务将生成一个错误的XCArchive,使其Info.plist 中没有ApplicationProperties 条目。 您必须确保至少没有将BUILD_LIBRARY_FOR_DISTRIBUTION 构建属性设置为YES,并且可能没有将SKIP_INSTALL 设置为NO

    【讨论】:

      【解决方案3】:

      在我的例子中,我通过 SPM 包含了一个包含 dSym/BCSymbolmap 文件的 XCFramework。

      这导致丢失的 Info.plist 发生在一个复杂的项目上,而它没有发生在一个更简单的项目上,并且仅在使用 App Store 的配置文件而不是企业配置文件时发生。在 Xcode 中简单地运行 Archive 时也会发生这种情况,完成后 Organizer 没有打开,因为生成的 .xcarchive 在根目录下缺少 Info.plist 文件。

      更改获得 XCFramework 的 SPM(供应商对其进行了更改并发布了新版本)以仅包含框架二进制文件,并且没有任何调试信息使存档再次正常工作。

      这是 Xcode 12.4,有理由认为 Xcode 12.5(或最终 Xcode 13)可能会更好,尽管在这种情况下我无法验证。

      请注意,即使在按照 12.4 发行说明建议的方式添加修复程序以删除 App Plugins 目录中存档进程包含的重复框架之后,也会发生这种情况。

      【讨论】:

        【解决方案4】:

        我的问题是由于将 3rd party library 更新到较新版本而引起的。不确定是什么原因造成的,但您可能会尝试查看在此开始发生之前您是否没有更新某些依赖项。

        【讨论】:

          猜你喜欢
          • 2021-12-14
          • 1970-01-01
          • 2022-06-30
          • 2017-11-28
          • 2019-04-03
          • 1970-01-01
          • 2018-03-04
          • 2018-10-13
          • 2021-09-24
          相关资源
          最近更新 更多