我正在编写一个脚本来构建并生成来自特定目标和方案的.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:错误:项目“项目名称”不包含名为“$ {SCHEME}”的方案
我还是,不明白XCode在后台做什么。但是如果我打开IDE并运行脚本,那就行了。如果我打开并稍后关闭它,并运行脚本工作。如果项目尚未首先使用XCode打开,那么它无效。
任何建议都会被证实
答案 0 :(得分:1)
如果有人面对同样的经历,这就是我发现的。并且工作。
嗯,当您通过命令行创建新方案时显然,默认情况下不是“shared”。所以当你开始链接到文件夹
xcshareddata --> xcschemes
(尝试使用命令行构建)没有什么可以链接的。当您打开项目时,Xcode会自动执行此操作...
来自 CocoaPods 的人们面临同样的问题,因此他们创建了一个共享该方案的Ruby gem,并将该文件放在 xcscheme 文件夹中:
这是回购:https://github.com/CocoaPods/Xcodeproj
另外,感谢this post和this post我发现了如何使用 xcodeproj gem,并使用我放下的脚本更改共享选项:
require 'xcodeproj'
xcproj = Xcodeproj::Project.open("MyProject.xcodeproj")
xcproj.recreate_user_schemes
xcproj.save