15

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

完整的命令是

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

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

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

错误:面料:Info.plist 错误

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

** 存档失败 **

在谷歌搜索和阅读错误描述后,我确实Build phases在 Xcode 中打开了选项卡并进行了设置(将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 构建项目时,它总是成功的。

4

6 回答 6

19

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

在此处输入图像描述

于 2018-10-05T06:11:45.583 回答
16

在“Embed pods Frameworks”和“Copy pods Resources”之后,我将带有 crashlytics 的“Run Script”移到了最后,这有帮助在此处输入图像描述

于 2019-09-30T17:03:10.043 回答
7

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

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

改变“矮人”

在此处输入图像描述

到“带有 dSYM 文件的 DWARF”

在此处输入图像描述

于 2018-12-19T12:36:45.140 回答
7

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

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

  • Legacy Build System比 慢New Build System (Default)

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

于 2018-09-26T10:02:39.453 回答
6

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

于 2020-01-05T09:24:09.167 回答
1

放在你的$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)下面Input FilesBuild Phases Run Script

于 2021-04-12T22:38:53.190 回答