我有用于自动构建具有两个目标的iOS项目的Jenkins服务器。
使用命令行实用程序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之前,它可以正常工作。但是每次更新后,我都会看到错误
错误:结构:Info.plist错误
无法处理路径/Users/Shared/Jenkins/Library/Developer/Xcode/DerivedData/Our_project-xxxx/Build/Intermediates.noindex/ArchiveIntermediates/我们的项目/ BuildProductsPath / Release-iphoneos / First应用程序中的Info.plist。 app / Info.plist 这可能是一个计时问题,请确保Fabric运行脚本构建阶段是最后一个构建阶段,并且没有其他脚本将Xcode生成位置的我们的application.app移走了。您还可以为Fabric运行脚本构建阶段添加“ $(BUILT_PRODUCTS_DIR)/ $(INFOPLIST_PATH)”作为“输入文件”依赖项。
**归档失败**
在谷歌搜索并阅读错误描述后,我确实在Xcode中打开了Build phases
标签并进行了设置(将Run script
项移至底部,选中Run script only when installing
并将$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
添加到Input文件,并删除空的Run script
项目)。
现在可以从命令行手动构建-看来问题已解决。甚至詹金斯也确实建立了第一个目标!但是secong目标没有相同的错误。
我确实打开了项目,查看“构建阶段”选项卡,发现Run script
项移至上方,并且出现了新的空白Run script
。
之后,我进行了实验:设置Build阶段,在Xcode GUI中重建项目,然后看到这些阶段再次重新排序。因此,它发生在构建期间或构建之后。
如何解决此错误?
可以,我可以从命令行手动订购构建阶段吗?如果是的话,我只需在詹金斯步骤中追加一行。
此外:此错误仅在命令行构建中出现。当我从Xcode GUI构建项目时,它总是成功。
答案 0 :(得分:5)
我找到了类似拐杖的解决方案:在Xcode GUI中的Legacy Build System
-> File
-> Workspace Settings
中选择Build System
。
为什么这是不好的解决方案?由于:
Legacy Build System
比New Build System (Default)
慢。
这不是Xcode设置,而是工作区。即在清理Jenkins中的工作区文件夹或某些版本控制系统操作后,此设置将重置为默认设置,并且将再次选择非工作选项。
答案 1 :(得分:5)
好的,我从Fabrics得到了解决方案。 对于Xcode 10,将此路径添加到XCode的Build阶段的Input Files中。 $(BUILT_PRODUCTS_DIR)/ $(INFOPLIST_PATH)
答案 2 :(得分:4)
使用以下方法完成Crashlytics和/或Fabric设置的解决方案: 1.转到构建设置 2.搜索“调试信息格式” 3.将“调试”的值从“ DWARF”更改为“带有dSYM文件的DWARF” 4.再次构建您的项目。
更改“ DWARF”
到“带有dSYM文件的DWARF”
答案 3 :(得分:1)
答案 4 :(得分:1)
将 $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
放在 Input Files
下的 Build Phases
Run Script
答案 5 :(得分:0)
我删除了项目的派生数据并解决了问题