Xcode 6 - 从命令行启动模拟器

Bal*_*kar 94 xcode ios ios-simulator xcode6

我想从命令行启动iPhone模拟器.

直到现在我一直在使用下面的命令

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator -SimulateDevice

-SimulateDevice用于启动特定的设备类型

现在使用Xcode 6,路径和应用程序已更改为

/Applications/Xcode.app/Contents/Developer/Applications/iOS Simulator.app/Contents/MacOS/iOS Simulator

但遗憾的是-SimulateDevice选项现在不能正常工作.我可以启动模拟器,但没有选项来指定要启动哪一个

有人用Xcode 6找到了替代品吗?

Bal*_*kar 205

找到了实现我想要的方法.

Apple推出了一款有趣的Xcode 6工具!

simctl

simclt允许您控制正在运行的模拟器.

运行xcrun simctl以获取可用子命令的列表.有很多新的选择可以玩.

现在做我想要的,这是启动模拟器的命令:

xcrun instruments -w "iPhone 5 (8.0 Simulator)"

-w是提供设备类型并获取可用设备的列表.

只需执行此操作:

xcrun instruments -s

启动模拟器后,您可以使用它来控制它 simctl

要安装您的应用:

xcrun simctl install booted <app path>

要启动应用程序:

xcrun simctl launch booted <app identifier>

希望这可以帮助.

  • <app identifier>是您的应用包ID (8认同)
  • 您应该指定实际的设备 UDID 或名称而不是 `booted`,因为 `booted` 只会在模拟器上任意选择一个启动设备。 (2认同)

Jer*_*oia 59

使用Xcode 6,如果您希望iOS Simulator.app在启动时启动特定设备,您可以从命令行运行:

open -a "iOS Simulator" --args -CurrentDeviceUDID <DEVICE UDID>

您可以在哪里找出要从中引导的设备的UDID:

xcrun simctl list

使用Xcode 7,应用程序重命名为Simulator.app,因此您应该相应地更新以上内容:

open -a Simulator --args -CurrentDeviceUDID <DEVICE UDID>

  • @chrisco没有文档.您可以通过`defaults read com.apple.iphonesimulator`检查默认值,并可以覆盖命令行中的任何默认值.Simulator.app仅使用UDID来唯一标识设备.你不能使用这个名字. (2认同)

Tin*_*oni 17

对于xcode 7:

open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app --args -CurrentDeviceUDID <DeviceUDID>

从你的模拟器udid获取 xcrun simctl list


Est*_*cas 13

启动模拟器:

xcrun simctl boot "iPhone X"
Run Code Online (Sandbox Code Playgroud)

它将作为无头模式启动。要使模拟器可见:

open -a Simulator
Run Code Online (Sandbox Code Playgroud)

xcrun simctl boot比 更简单xcrun instruments -winstruments需要完整的设备名称。


Jav*_*ano 10

要启动启动了特定设备的模拟器,我使用list devices子命令获取所有可用设备的列表

$ xcrun simctl list devices
== Devices ==
-- iOS 11.2 --
iPhone 5s (E3B6EA43-C805-49C2-9502-A44A465D8DF2) (Shutdown)
iPhone 6 (801E9E11-CA86-473A-9879-4B0742B827FB) (Shutdown)
iPhone 6 Plus (24013349-1A6F-489C-9A68-ABB00EBB4BBF) (Shutdown)
iPhone 6s (1A594D75-146C-4BEA-A250-1FADE7886114) (Shutdown)
iPhone 6s Plus (C2730FA0-11CB-49C9-A087-CB3C1BF1CC3D) (Shutdown)
iPhone 7 (F58B3749-3276-49E5-81C8-EBA1AEA7B242) (Shutdown)
iPhone 7 Plus (98167D8C-8F27-404C-AB02-588D9AAFD071) (Shutdown)
iPhone 8 (96322368-F763-4E0A-8576-ADE9F678211F) (Shutdown)
iPhone 8 Plus (E916D1EE-B67B-4C01-B3F5-C5C80CC4CDF8) (Shutdown)
iPhone SE (ABEFEDDF-7A7C-4B94-9E91-E065170FA47F) (Shutdown)
iPhone X (84DAB7AB-3CA2-4F5B-8C4E-A5B54CA15C31) (Shutdown)
iPad Air (DCD8CF4B-2C9F-4BA1-952A-ACB9CAD0A84D) (Shutdown)
iPad Air 2 (A47C9A05-233F-450F-9A39-318258E9ADEA) (Shutdown)
iPad (5th generation) (819C058E-64AC-4E73-8F41-2C0F919F8B56) (Booted)
Run Code Online (Sandbox Code Playgroud)

此命令将输出包含其UDID和状态的可用设备列表

然后我启动模拟器应用程序,指定具有-CurrentDeviceUDID选项的设备

/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator -CurrentDeviceUDID <DEVICE-UDID>
Run Code Online (Sandbox Code Playgroud)

注意:使用列表中的有效UDID替换它.

例如,如果我们想要使用Ipad启动模拟器(启动%代):

/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator -CurrentDeviceUDID 84DAB7AB-3CA2-4F5B-8C4E-A5B54CA15C31
Run Code Online (Sandbox Code Playgroud)

更新23/05/2018

使用Xcode 9.3 CurrentDevice UDID选项对我来说不起作为一种解决方法,我必须使用simctl在打开它之前在模拟器中启动设备.

xcrun simctl boot 2BF01FC0-7E29-4AF1-ADD1-886DF129A9A9
open -a Simulator 
Run Code Online (Sandbox Code Playgroud)

您可以使用simctl创建,擦除,删除,启动,关闭和升级模拟器.

$ xcrun simctl create
Usage: simctl create <name> <device type id> <runtime id>

$ xcrun simctl delete
Usage: simctl delete <device> [... <device n>] | unavailable
Run Code Online (Sandbox Code Playgroud)

获取有效设备类型运行时的列表

xcrun simctl list devicetypes

xcrun simctl list runtimes
Run Code Online (Sandbox Code Playgroud)


Nee*_*enu 8

您可以使用-w标志指定硬件和iOS版本.格式是

instruments -w "simulator-version"
Run Code Online (Sandbox Code Playgroud)

例如:

instruments -w "iPhone Retina (3.5-inch) - Simulator - iOS 7.1".

您将通过使用该instruments -w help 命令获得可用的hardvare-iOS组合.

  • 使用`instruments -s devices`获取设备列表。但是,一旦有了设备名称,在仪器尝试将跟踪写入驱动器根目录时,仅调用`instruments -w &lt;device&gt;`可能会产生错误。您可能要为将成功写入的跟踪指定路径。 (2认同)