为啥生成 .app 文件时,xcode 需要打开?
Posted
技术标签:
【中文标题】为啥生成 .app 文件时,xcode 需要打开?【英文标题】:Why when generating .app file, xcode needs to be open?为什么生成 .app 文件时,xcode 需要打开? 【发布时间】:2015-01-19 09:02:53 【问题描述】:我正在编写一个脚本来从特定目标和方案构建和生成一个 .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 打开项目,它就不起作用 ¬¬
任何建议都会被欣赏
【问题讨论】:
为什么需要打开 xcode?span> 我并不是要粗鲁……但是,你读过我写的吗?如果我不打开 Xcode,xcodebuild 会产生错误... 是的,我读到了。脚本是用什么写的? 【参考方案1】:如果有人面临同样的经历,这就是我发现的。并且有效。
好吧,显然当你通过命令行创建新方案时,默认情况下不是“共享”。所以当你开始链接到文件夹时
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
【讨论】:
以上是关于为啥生成 .app 文件时,xcode 需要打开?的主要内容,如果未能解决你的问题,请参考以下文章
xcode构建iOS app时为啥分version和build两个版本号