【问题标题】:Xcode 10 command-line building: Archive failed with Fabric Info.plist ErrorXcode 10 命令行构建:存档失败,Fabric Info.plist 错误
【发布时间】:2019-03-01 19:26:01
【问题描述】:

我有用于自动构建具有两个目标的 iOS 项目的 Jenkins 服务器。 使用命令行实用程序 xcodebuild 构建项目。

完整的命令是

/usr/bin/xcodebuild -workspace “我们的项目.xcworkspace” -方案“第一个目标” -配置发布 档案 DEVELOPMENT_TEAM=团队代码 -allowProvisioningUpdates

/usr/bin/xcodebuild -workspace “我们的项目.xcworkspace” -方案“第二个目标” -配置发布 档案 DEVELOPMENT_TEAM=团队代码 -allowProvisioningUpdates

在我将 Xcode 更新到版本 10 之前,它运行良好。但是每次更新后我都看到错误

错误:Fabric:Inf​​o.plist 错误

无法处理路径 /Users/Shared/Jenkins/Library/Developer/Xcode/DerivedData/Our_project-xxxx/Build/Intermediates.noindex/ArchiveIntermediates/Our project/BuildProductsPath/Release-iphoneos/First application 的 Info.plist。应用程序/Info.plist 这可能是时间问题,请确保 Fabric 运行脚本构建阶段是最后一个构建阶段,并且没有其他脚本将我们的 application.app 从 Xcode 生成的位置移动。您还可以添加 '$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)' 作为 Fabric 运行脚本构建阶段的“输入文件”依赖项。

** 存档失败 **

在谷歌搜索和阅读错误描述后,我确实在 Xcode 中打开了Build phases 选项卡并进行了设置(将Run script 项移到底部,检查Run script only when installing 并将$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) 添加到输入文件并删除空的Run script项目)。

现在可以从命令行手动构建 - 似乎问题已解决。甚至 Jenkins 也确实建立了第一个目标!但是 secong 目标没有出现同样的错误。

我确实打开了项目,查看构建阶段选项卡,看到 Run script 项目移到上方,并且出现了新的空 Run script。 之后我做了实验:设置构建阶段,在 Xcode GUI 中重建项目,然后看到这些阶段再次重新排序。因此,它发生在构建期间或之后。

我该如何修复这个错误?

说,我可以从命令行手动订购构建阶段吗?如果是,我只是在 Jenkins 步骤中追加行。

另外:这个错误只出现在命令行构建中。当我从 Xcode GUI 构建项目时,它总是成功。

【问题讨论】:

    标签: ios xcode xcode10 auto-build


    【解决方案1】:

    我找到了类似拐杖的解决方案:在 Xcode GUI 中选择 File 处的 Legacy Build System -> Workspace Settings -> Build System

    为什么这个解决方案不好?因为:

    • Legacy Build SystemNew Build System (Default) 慢。

    • 这不是 Xcode 设置,而是工作区。 IE。在 Jenkins 中清理工作区文件夹或某些版本控制系统操作后会将此设置重置为默认值,并且将再次选择非工作选项。

    【讨论】:

    • 您有其他解决方案吗?
    • 很遗憾还没有
    【解决方案2】:

    好的,我从 Fabrics 获得了解决方案。 对于 Xcode 10,将此路径添加到 XCode 中 Build 阶段的 Input Files $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

    【讨论】:

    • 但我也添加了它:“在谷歌搜索和阅读错误描述后,我确实在 Xcode 中打开了Build phases 选项卡并进行了设置(将Run script 项目移动到底部,检查Run script only when installing 并添加@ 987654326@ 输入文件并删除空的Run script 项)。”
    • 在将旧的 Xcode 10 项目移动到 Xcode 10.2.1 并删除旧的派生数据时为我工作。
    • 我遇到了这个问题,结果证明我运行脚本太早了。最好接近最后一次。
    【解决方案3】:

    使用以下方法完成 Crashlytics 和/或 Fabric 设置的解决方案:

    1. 转到构建设置
    2. 搜索“调试信息格式”
    3. 将“Debug”的值从“DWARF”更改为“DWARF with dSYM File”
    4. 再次构建您的项目。

    改变“矮人”

    致“使用 dSYM 文件的 DWARF”

    【讨论】:

    • 我已经有DWARF with dSYM File 用于Debug Information Format 选项
    • @GeneralFailure 你能检查一下吗,它可能会帮助stackoverflow.com/a/53852817/3122406
    • @GeneralFailure 你找到解决方案了吗?
    • 对不起,我现在不能检查,因为我改变了工作项目。
    • 这对我有用。看起来 Fabric 需要该 dSYM 文件来检测和前进。谢谢@BhavikModi
    【解决方案4】:

    在“嵌入 pods 框架”和“复制 pods 资源”之后,我将带有 crashlytics 的“运行脚本”移到了末尾,这对

    很有帮助

    【讨论】:

      【解决方案5】:

      我删除了项目的派生数据,它解决了问题

      【讨论】:

        【解决方案6】:

        $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) 放在Input Files 下的Build Phases Run Script

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-02-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-24
          • 2011-10-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多