为什么生成.app文件时,需要打开xcode?

Why when generating .app file, xcode needs to be open?

我正在编写一个脚本来从特定目标和方案构建和生成 .app 文件(与模拟器一起使用)。我正在使用类似的东西:

DEVELOPER_DIR=$xcode_app_path/Contents/Developer xcodebuild -sdk iphonesimulator -scheme "${SCHEME}" -target "${TARGET}" ONLY_ACTIVE_ARCH=NO CONFIGURATION_BUILD_DIR="${build_folder}" clean build

问题是,我需要打开 XCode 才能使上面的代码工作,否则会显示一条消息告诉我:

xcodebuild: error: The project 'Project-name' does not contain a scheme named "${SCHEME}"

我还是不明白 XCode 在后台做什么。但是如果我打开 IDE 和 运行 脚本,就可以了。如果我打开并稍后关闭它,并且 运行 脚本有效。如果项目没有先用 XCode 打开,它就不会工作 ¬¬

如有任何建议,我们将不胜感激

如果有人面临同样的经历,这就是我发现的。并且有效。

嗯,显然当你通过命令行创建新方案时,默认情况下不是"shared"。所以当你开始link到文件夹

xcshareddata --> xcschemes 

(例如,尝试使用命令行构建)link 没有什么可做的。 Xcode 当您打开项目时,会在后台自动执行此操作...

来自 CocoaPods 的人面临着同样的问题,所以他们创建了一个 Ruby gem 共享方案并将文件放在他的 xcscheme 文件夹:

这是回购协议:https://github.com/CocoaPods/Xcodeproj

此外,多亏了 this post and this post,我发现了如何使用 xcodeproj gem,并使用我在此处放置的脚本更改共享选项:

require 'xcodeproj'
xcproj = Xcodeproj::Project.open("MyProject.xcodeproj")
xcproj.recreate_user_schemes
xcproj.save