我有一个 Jenkins 服务器,用于自动构建 iOS 项目,该项目有两个目标。
项目使用命令行实用程序 xcodebuild
进行构建。
完整的命令如下:
/usr/bin/xcodebuild -workspace "Our project.xcworkspace" -scheme "First target" -configuration Release archive DEVELOPMENT_TEAM=TEAMCODE -allowProvisioningUpdates
以及
/usr/bin/xcodebuild -workspace "Our project.xcworkspace" -scheme "Second target" -configuration Release archive DEVELOPMENT_TEAM=TEAMCODE -allowProvisioningUpdates
在我更新 Xcode 到版本 10 后,它就无法正常工作了。但每次都会出现错误:
Error: Fabric: 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 的 Info.plist。 这可能是一个时间问题,请确保 Fabric 运行脚本构建阶段是最后一个构建阶段,并且没有其他脚本将 Our application.app 从 Xcode 生成的位置移动。您还可以将 '$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)' 添加为 Fabric 运行脚本构建阶段的 “Input Files” 依赖项。
** 归档失败 **
通过搜索和阅读错误描述后,我打开了 Xcode 中的 Build phases 选项卡并进行了设置(将 Run script 项目移到底部,勾选只有在安装时运行脚本,并将 $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) 添加到输入文件中,同时删除空的 Run script 项目)。
现在,手动从命令行构建工作正常 - 看起来问题已解决。即使 Jenkins 第一个目标也构建成功!但是第二个目标出现了相同的错误。
我打开项目,查看 Build phases 选项卡,发现 Run script 项目移动到了上方,并出现了新的空的 Run script 项目。 之后我进行了实验:在 Xcode GUI 中设置 Build phases,重新构建项目,发现相位被重新排序。因此,这似乎是在构建期间或之后发生的。
我该如何修复这个错误?
请问,我能否通过命令行手动排序构建阶段?如果可以,我只需在 Jenkins 步骤中添加一行。
此外:此错误仅在命令行构建时出现。当我在 Xcode GUI 中构建项目时,它总是成功的。