我该如何从终端启动iOS模拟器?

176

我可以使用Xcode命令行工具构建,有没有办法能够使用它们来运行应用程序?(例如,相当于在Xcode中按下Cmd+R)


打开 /Applications/Xcode.app/Contents/Applications/iOS\ Simulator.app 吗? - The Paramagnetic Croissant
12个回答

311
在终端中输入以下内容:
open -a Simulator.app

214

首先决定要使用哪个设备:

xcrun simctl list

这将给你一个设备列表:

-- iOS 9.0 --
    iPhone 4s (56632E02-650E-4C24-AAF4-5557FB1B8EB2) (Shutdown)
    iPhone 5 (ACD4DB7B-9FC9-49D5-B06B-BA5D5E2F5165) (Shutdown)
    iPhone 5s (A8358B76-AD67-4571-9EB7-FFF4D0AC029E) (Shutdown)
    iPhone 6 (1D46E980-C127-4814-A1E2-5BE47F6A15ED) (Shutdown)
    iPhone 6 Plus (FD9F726E-453A-4A4C-9460-A6C332AB140B) (Shutdown)

选择你想要的ID(例如FD9F726E-453A-4A4C-9460-A6C332AB140B),如果需要,可以使用xcrun simctl create创建自己的设备。

使用该设备启动模拟器(用ID替换YOUR-DEVICE-ID)

/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator -CurrentDeviceUDID <YOUR-DEVICE-ID>

现在您应该可以使用simctl安装和启动命令。

xcrun simctl install <YOUR-DEVICE-ID> <PATH-TO-APPLICATION-BUNDLE>
xcrun simctl launch <YOUR-DEVICE-ID> <BUNDLE-ID-OF-APP-BUNDLE>

xcrun simctl help获取更多详细信息。请注意,使用simctl启动设备目前(Xcode 7.2)不能让您执行其他与该设备相关的操作,例如启动或安装应用程序。要实际执行任何有趣的操作,您需要在模拟器中启动设备。此外,您无法删除正在模拟器中使用的设备,因此在尝试删除任何内容之前,您必须退出/关闭模拟器。


9
小提示:设备启动后,您可以使用关键字“booted”代替“<YOUR-DEVICE-ID>”。 - Palleraccio
1
你可以在以下路径找到已编译的应用程序包:/Users/username/Library/Developer/Xcode/DerivedData/YourApp-cuozdynseabctdefrjsejhldxden/Build/Products/Debug-iphonesimulator - kosiara - Bartosz Kosarzycki
@kosiara-BartoszKosarzycki 有没有一个命令行可以显示该路径? - code-8
24
open -a Simulator --args -CurrentDeviceUDID <YOUR-DEVICE-ID> 这个命令也可以用于启动模拟器。 - sgdesmet
1
什么是<PATH-TO-APPLICATION-BUNDLE>和<BUNDLE-ID-OF-APP-BUNDLE>? - MNFS
显示剩余4条评论

156
open -a simulator 

它对我起作用了


@Benjith Kizhisseri,这个答案已经在这里发布了:https://dev59.com/a10Z5IYBdhLWcg3wrR8r#49992522 请避免重复回答。 - MAhipal Singh
@MAhipalSingh,我在评论中没有看到任何“不合适”的词语。作为审阅者,有预定义的选项,您只能从中选择。 - Kuldeep
4
我不明白为什么这个回答“不能解答问题”。这是本页面上最短的答案,因此这个答案很有用。 - yshahak
它没有回答问题,因为它没有运行应用程序。发帖者想要的是能够为他们运行应用程序的东西,而不仅仅是启动模拟器。 - dmaclach
1
@MAhipalSingh "simulator" != "Simulator.app" // true -> @MAhipalSingh "模拟器" != "Simulator.app" // 真" - ICW

62

这是您要寻找的答案:

  1. 打开终端

  2. xcrun simctl list

  3. 获取您想要启动的设备的 UDID

  4. 将其粘贴到终端中

  5. open -a Simulator --args -CurrentDeviceUDID 0566AC33-9B91-2DR2-B5BB-C916D3BA8MD3


直接在选定的设备上运行即可。 - Alann Maulana

33

打开您的终端并粘贴此代码:

open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

iOS 模拟器文件夹路径


20

使用xcrun simctl list获取模拟器及其UDID列表。 然后使用xcrun simctl boot <UDIDs>打开特定的模拟器。


3
需要注意的是,这确实会启动模拟器,但并不会实际打开用户界面。为此,您仍然需要使用 open -a Simulator 命令。 - friederbluemle
我的列表显示错误 xcrun simctl list 2021-12-06 18:20:20.358 xcodebuild[12224:520286] [MT] DVTAssertions:在 /Library/Caches/com.apple.xbs/Sources/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-18132/Xcode3Core/LegacyProjects/Frameworks/DevToolsCore/DevToolsCore/Foundation/Specifications/XCSpecification.m 的第1504行发生了断言失败。 细节:propertyList 应该是从 TSPropertyListDictionary 继承的实例,但它是 nil。 对象:<XCSpecificationProxy: 0x7fca68666110> 方法:-loadedSpecification 线程:<NSThread: 0x7fca667098d0>{number = 1, name = main} 提示: - sejn

9
open /Applications/Xcode.app/Contents/Developer/Applications/iOS\ Simulator.app/

那只会启动模拟器,我正在寻找一种在终端中执行与 Cmd+R 相同操作的方法,即启动模拟器并运行应用程序。 - Alex Chesters
该应用必须通过Xcode安装到模拟器上。一旦您至少完成了一次安装,您的应用程序将保存在模拟器上,并且可以从Xcode或终端访问。您无法在没有Xcode的情况下编译代码。@AlexChesters - Llogari Casas
@Llorgi,你可以在终端中构建你的代码,而不需要使用Xcode。 - Alex Chesters
当然可以通过终端编译您的代码。但是您仍在使用Xcode命令行工具。例如:xcodebuild test -scheme MyiOSApp -destination 'platform=iOS,name=iPod touch' @AlexChesters - Llogari Casas

6

最佳解决方案之一:

  • 通过提供设备名称,从终端启动iOS模拟器

xcrun simctl boot $(xcrun simctl list devices | grep -m 1 'iPhone 12 Pro' |grep -E -o -i '([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})')

  • 这个命令将无缝地为“iPhone 12 Pro”设备启动iOS模拟器

5

总结

open -a Simulator && xcrun simctl boot 'iPhone 8 Plus'


这个方法非常适用于更新Alfred工作流。将会扩展成一个小型的shell脚本,作为一个独立的解决方案。 - undefined

3

这里有一个方便的命令,可以构建项目并在终端中运行它:

xcodebuild -scheme <scheme_name> -destination <destination_name> build && xcrun simctl launch booted <bundle_identifier>

<scheme_name> - 特定模式的名称,例如 "MyApp (开发环境)"

<destination_name> - 要运行的模拟器的名称。例如 "name=iPhone 14 Pro"

<bundle_identifier> - 您项目的包标识符。示例: com.johnne.myapp


执行结果:

  1. 首先将构建该项目;
  2. 如果构建成功,您的项目将在选择的模拟器上运行。

以上数据的最终命令如下:
xcodebuild -scheme "MyApp (Dev Environment)" -destination "name=iPhone 14 Pro" build && xcrun simctl launch booted com.johnne.myapp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接