Xcode 10 命令行构建:存档失败,出现 Fabric Info.plist 错误

问题描述 投票:0回答:8

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

xcodebuild

完整命令是

/usr/bin/xcodebuild -workspace "我们的项目.xcworkspace"
    - 计划“第一目标”
    -配置发布
    档案
    DEVELOPMENT_TEAM=团队代码
    -允许配置更新

/usr/bin/xcodebuild -workspace "我们的项目.xcworkspace"
    - 计划“第二个目标”
    -配置发布
    档案
    DEVELOPMENT_TEAM=团队代码
    -允许配置更新

在我将 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.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
项目) .

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

我确实打开了项目,查看“构建阶段”选项卡,看到

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

如何修复这个错误?

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

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

ios xcode xcode10 auto-build
8个回答
20
投票

我将带有 crashlytics 的“运行脚本”移至“嵌入 pod 框架”和“复制 pod 资源”之后的末尾,这有帮助enter image description here


19
投票

好的,我从 Fabrics 那里得到了解决方案。 对于 Xcode 10,将此路径添加到 XCode 中构建阶段的输入文件中 $(BUILT_ProductS_DIR)/$(INFOPLIST_PATH)

enter image description here


8
投票

我找到了类似拐杖的解决方案:在 Xcode GUI 中的

Legacy Build System
->
File
->
Workspace Settings
处选择
Build System

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

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

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


6
投票

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

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

更改“矮人”

enter image description here

前往“带有 dSYM 文件的 DWARF”

enter image description here


6
投票

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


1
投票

Xcode 15.0:

将运行脚本项移至底部,选中仅在安装时运行脚本并将 $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) 添加到输入文件


0
投票

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


0
投票

我的问题是我正在使用 flutter 并更改了版本。 我通过运行 flutter doctor 来解决这个问题,让我的 IDE 引用我的 flutter 版本的正确文件夹,它成功了。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.