将 xcodebuild 与 iOS 项目和 iOS 模拟器一起使用

Posted

技术标签:

【中文标题】将 xcodebuild 与 iOS 项目和 iOS 模拟器一起使用【英文标题】:Using xcodebuild with an iOS Project and the iOS Simulator 【发布时间】:2013-12-10 20:45:52 【问题描述】:

这个question 是相关的,但不能解决我遇到的具体问题。

我在 OS X 10.7.5 下使用 Xcode 4.6.3。

我只是为单视图 ios 应用程序创建了默认项目,并且没有更改项目设置。当然,该项目在 Xcode 中为 iOS 模拟器构建。但是,当我尝试从命令行使用 xcodebuild 时,xcodebuild 会失败。

项目名称只是:temp

我试过了:

xcodebuild -scheme temp -sdk iphonesimulator6.1

这产生了结果:

Build settings from command line:
    SDKROOT = iphonesimulator6.1

=== BUILD NATIVE TARGET temp OF PROJECT temp WITH CONFIGURATION Debug ===
Check dependencies
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).


** BUILD FAILED **


The following build commands failed:
    Check dependencies
(1 failure)

基于另一个 SO 问题,我尝试了:

xcodebuild ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -scheme temp -sdk iphonesimulator6.1

得到了类似的结果:

Build settings from command line:
    ARCHS = armv7 armv7s
    ONLY_ACTIVE_ARCH = NO
    SDKROOT = iphonesimulator6.1

=== BUILD NATIVE TARGET temp OF PROJECT temp WITH CONFIGURATION Debug ===
Check dependencies
No architectures to compile for (ARCHS=armv7 armv7s, VALID_ARCHS=i386).


** BUILD FAILED **


The following build commands failed:
    Check dependencies
(1 failure)

我需要执行什么 xcodebuild 命令才能使用 xcodebuild 进行构建?

谢谢。

【问题讨论】:

【参考方案1】:

更新: 似乎很多人在 xcode 4 中遇到了这种问题,一般的解决方案似乎是强制你需要的架构并禁用“仅活动”,这是你试图做的......但是对于模拟器,你需要指定 i386 而不是 arm*,像这样:

xcodebuild ARCHS="i386" ONLY_ACTIVE_ARCH=NO -scheme temp -sdk iphonesimulator6.1

* 原始回复产生了下面的评论线程,并且仍然有一些有价值的参考: 听起来您的项目我没有设置为 64 位。您应该能够在构建设置中将 arm64 添加到您的有效架构中,我相信 xcode 会自动将其视为 x86_64 用于模拟器构建。

对于您尝试的第二件事,您正在将您的架构硬编码为 iPhone 架构,同时针对模拟器,我相信这就是架构不可用的原因。

【讨论】:

Xcode 应用程序可以构建它而对模拟器没有任何问题。只有当我尝试从命令行使用 xcodebuild 时它才会失败。如果 Xcode 应用程序可以构建它,那么 xcodebuild 应该可以。我只需要知道要传递给 xcodebuild 的参数。 嗯 - 好吧,从您遇到的最初问题来看,它似乎是在尝试为没有为此设置的项目构建 64 位目标。也许尝试使用 -arch i386 来强制使用有效的架构? 是的,我也尝试过,但仍然失败,结果相似。使用 Xcode 5,这一切似乎都更加稳定,但我需要它与 Xcode 4.6.3 一起使用。 您在使用时得到的确切错误是什么:xcodebuild ARCHS="i386" ONLY_ACTIVE_ARCH=NO -scheme temp -sdk iphonesimulator6.1 是的...我离开了 ONLY_ACTIVE_ARCH=NO。如果您想使用此信息更新您的答案,我会将其标记为已回答。

以上是关于将 xcodebuild 与 iOS 项目和 iOS 模拟器一起使用的主要内容,如果未能解决你的问题,请参考以下文章

iOS Xcodebuild

使用没有代码设计的 xcodebuild 构建 iOS 应用程序

错误 无法构建 iOS 项目。运行“xcodebuild”命令,但它以错误代码 65 退出

错误无法构建 iOS 项目。我们运行了“xcodebuild”命令,但它以错误代码 65 退出

错误 无法构建 iOS 项目。我们运行了“xcodebuild”命令,但它以错误代码 65 退出

在同一 iOS 设备上使用 xcodebuild 运行并行测试