为啥生成 .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 不为静态库生成 dSYM

xcode构建iOS app时为啥分version和build两个版本号

Xcode 9.4 无法打开文件“my_app”,因为您无权查看它

为啥 Xcode 5 助手编辑器默认为 .m 文件

IOS Xcode验证Xcode.app [重复]

清理mac的硬盘空间,清理Xcode,清除“其他”