【问题标题】: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 会产生错误...
  • 是的,我读到了。脚本是用什么写的?

标签: ios xcode compilation xcodebuild


【解决方案1】:

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

好吧,显然当你通过命令行创建新方案时,默认情况下不是“共享”。所以当你开始链接到文件夹时

xcshareddata --> xcschemes 

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

CocoaPods 的人也面临同样的问题,因此他们创建了一个 Ruby gem 来共享该方案并将文件放在他的 xcscheme 文件夹中:

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

另外,感谢this postthis post,我发现了如何使用 xcodeproj gem,并使用我放在这里的脚本更改共享选项:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 2011-08-11
    • 1970-01-01
    • 2010-10-05
    • 2012-09-28
    相关资源
    最近更新 更多