React Native Change默认iOS模拟器设备

Won*_*nka 128 react-native

当我运行此命令时:

react-native run-ios
Run Code Online (Sandbox Code Playgroud)

我的应用程序默认在iPhone6模拟器设备中运行:

Found Xcode project RN.xcodeproj
Launching iPhone 6 (9.2)...
Run Code Online (Sandbox Code Playgroud)

如何在默认情况下让应用程序在不同的模拟器设备(如iPhone5s)中运行?

Dan*_*dow 329

使用--simulator标志指定模拟器.

这些是适用于iOS 12.0的可用设备:

react-native run-ios --simulator="iPhone 5s"
react-native run-ios --simulator="iPhone 6"
react-native run-ios --simulator="iPhone 6 Plus"
react-native run-ios --simulator="iPhone 6s"
react-native run-ios --simulator="iPhone 6s Plus"
react-native run-ios --simulator="iPhone 7"
react-native run-ios --simulator="iPhone 7 Plus"
react-native run-ios --simulator="iPhone 8"
react-native run-ios --simulator="iPhone 8 Plus"
react-native run-ios --simulator="iPhone SE"
react-native run-ios --simulator="iPhone X"
react-native run-ios --simulator="iPhone XR"
react-native run-ios --simulator="iPhone Xs"
react-native run-ios --simulator="iPhone Xs Max"
react-native run-ios --simulator="iPad Air"
react-native run-ios --simulator="iPad Air 2"
react-native run-ios --simulator="iPad"
react-native run-ios --simulator="iPad Pro"
react-native run-ios --simulator="iPad Pro"
react-native run-ios --simulator="iPad Pro"
react-native run-ios --simulator="iPad Pro"
react-native run-ios --simulator="iPad"
Run Code Online (Sandbox Code Playgroud)

列出所有可用的iOS设备:

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

目前无法设置默认值.

React Native Docs:在模拟器上运行

  • 要查看所有可用的设备,您可以使用`xcrun simctl list devices`更多信息[这里](https://facebook.github.io/react-native/docs/running-on-simulator-ios.html) (22认同)
  • 如果您需要特定的操作系统版本,请将其添加在括号中: `react-native run-ios --simulator="iPhone 11 Pro Max (13.4)"` (6认同)
  • 如果你愿意的话 `react-native run-ios --simulator =“ iPad Air”` (2认同)
  • 以防万一,如果您有多个具有相同名称的模拟器,例如 iPhone 6s for ios 11 、iPhone 6s for ios 12 等,那么您可以从 Xcode -> Window -> Devices and Simulators 为模拟器设置特定名称 (2认同)

Ian*_*n L 45

您还可以通过向文件元素添加条目来使用npm.例如scriptspackage.json

"launch-ios": "react-native run-ios --simulator \"iPad Air 2\""
Run Code Online (Sandbox Code Playgroud)

然后使用这个: npm run launch-ios

  • 恕我直言这是最好的答案,因为它允许您将配置存储在代码/版本控制中.意味着您不需要记住命令行语法. (3认同)
  • 我同意这个答案。您也可以使用单引号:`"launch-ios": "react-native run-ios --simulator 'iPad Air 2'"` (2认同)

sva*_*all 23

如果你追捕,有一个项目设置:

{project}/node_modules/react-native/local-cli/runIOS/runIOS.js

其中有一些选项module.exports包括:

options: [{ command: '--simulator [string]', description: 'Explicitly set simulator to use', default: 'iPhone 7', }

我是第231行,只需将其设置为有效的已安装模拟器并运行 react-native run-ios它将默认运行到该模拟器.

  • 这实际上有效,尽管文件隐藏在{project}/node_modules/react-native/local-cli/runIOS /中 (5认同)

Bru*_*mos 22

您可以在~/.bash_profile文件中创建别名:

alias rn-ios="react-native run-ios --simulator \"iPhone 5s (10.0)\""

然后使用创建的别名运行react-native:

$ rn-ios


Lij*_*pin 11

1)重命名您的模拟器,如果模拟器具有相同的名称但不同的iOS版本

Xcode -> Window -> Devices and Simulators -> Simulators.
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

2)打开您的react本机项目文件夹

3)编辑package.json

"scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest",
    "flow": "node_modules/.bin/flow",
    "start-iphone6": "react-native run-ios --simulator \"iPhone 6 11.3\""
}
Run Code Online (Sandbox Code Playgroud)

4) npm run start-iphone6


Pra*_*rma 9

有多种方法可以实现这一点:

  1. 通过使用--simulator标志
  2. 通过使用--udid标志

首先,您需要列出所有可用的设备。列出所有运行的设备

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

这将给出如下输出:

以下是适用于 iOS 13.0 及更高版本的可用设备:

== Devices ==
-- iOS 13.6 --
    iPhone 8 (5C7EF61D-6080-4065-9C6C-B213634408F2) (Shutdown) 
    iPhone 8 Plus (5A694E28-EF4D-4CDD-85DD-640764CAA25B) (Shutdown) 
    iPhone 11 (D6820D3A-875F-4CE0-B907-DAA060F60440) (Shutdown) 
    iPhone 11 Pro (B452E7A1-F21C-430E-98F0-B02F0C1065E1) (Shutdown) 
    iPhone 11 Pro Max (94973B5E-D986-44B1-8A80-116D1C54665B) (Shutdown) 
    iPhone SE (2nd generation) (90953319-BF9A-4C6E-8AB1-594394AD26CE) (Booted) 
    iPad Pro (9.7-inch) (9247BC07-00DB-4673-A353-46184F0B244E) (Shutdown) 
    iPad (7th generation) (3D5B855D-9093-453B-81EB-B45B7DBF0ADF) (Shutdown) 
    iPad Pro (11-inch) (2nd generation) (B3AA4C36-BFB9-4ED8-BF5A-E37CA38394F8) (Shutdown) 
    iPad Pro (12.9-inch) (4th generation) (DBC7B524-9C75-4C61-A568-B94DA0A9BCC4) (Shutdown) 
    iPad Air (3rd generation) (03E3FE18-AB46-481E-80A0-D37383ADCC2C) (Shutdown) 
-- tvOS 13.4 --
    Apple TV (41579EEC-0E68-4D36-9F98-5822CD1A4104) (Shutdown) 
    Apple TV 4K (B168EF40-F2A4-4A91-B4B0-1F541201479B) (Shutdown) 
    Apple TV 4K (at 1080p) (D55F9086-A56E-4893-ACAD-579FB63C561E) (Shutdown) 
-- watchOS 6.2 --
    Apple Watch Series 4 - 40mm (D4BA8A57-F9C1-4F55-B3E0-6042BA7C4ED4) (Shutdown) 
    Apple Watch Series 4 - 44mm (65D5593D-29B9-42CD-9417-FFDBAE9AED87) (Shutdown) 
    Apple Watch Series 5 - 40mm (1B73F8CC-9ECB-4018-A212-EED508A68AE3) (Shutdown) 
    Apple Watch Series 5 - 44mm (5922489B-5CF9-42CD-ACB0-B11FAF88562F) (Shutdown) 
Run Code Online (Sandbox Code Playgroud)

然后从输出中您可以选择名称或 uuid,然后根据需要继续操作。

  1. 使用--simulatorrun 运行:
npx react-native run-ios --simulator="iPhone SE"
Run Code Online (Sandbox Code Playgroud)
  1. 使用--udid标志运行运行:
npx react-native run-ios --udid 90953319-BF9A-4C6E-8AB1-594394AD26CE
Run Code Online (Sandbox Code Playgroud)

我希望这个答案对你有帮助。

  • 这是最好的答案,也是最直接的答案....谢谢 (2认同)

Viv*_*vek 8

更新:

\n
npx react-native run-ios --simulator="iPhone 14"\nnpx react-native run-ios --simulator="iPhone 13"\n
Run Code Online (Sandbox Code Playgroud)\n
\n

使用此命令获取设备列表

\n
xcrun simctl list devices\n
Run Code Online (Sandbox Code Playgroud)\n

安慰

\n
== Devices ==\n-- iOS 13.5 --\n    iPhone 6s (9981E5A5-48A8-4B48-B203-1C6E73243E83) (Shutdown) \n    iPhone 8 (FC540A6C-F374-4113-9E71-1291790C8C4C) (Shutting Down) \n    iPhone 8 Plus (CAC37462-D873-4EBB-9D71-7C6D0C915C12) (Shutdown) \n    iPhone 11 (347EFE28-9B41-4C1A-A4C3-D99B49300D8B) (Shutting Down) \n    iPhone 11 Pro (5AE964DC-201C-48C9-BFB5-4506E3A0018F) (Shutdown) \n    iPhone 11 Pro Max (48EE985A-39A6-426C-88A4-AA1E4AFA0133) (Shutdown) \n    iPhone SE (2nd generation) (48B78183-AFD7-4832-A80E-AF70844222BA) (Shutdown) \n    iPad Pro (9.7-inch) (2DEF27C4-6A18-4477-AC7F-FB31CCCB3960) (Shutdown) \n    iPad (7th generation) (36A4AF6B-1232-4BCB-B74F-226E025225E4) (Shutdown) \n    iPad Pro (11-inch) (2nd generation) (79391BD7-0E55-44C8-B1F9-AF92A1D57274) (Shutdown) \n    iPad Pro (12.9-inch) (4th generation) (ED90A31F-6B20-4A6B-9EE9-CF22C01E8793) (Shutdown) \n    iPad Air (3rd generation) (41AD1CF7-CB0D-4F18-AB1E-6F8B6261AD33) (Shutdown) \n-- tvOS 13.4 --\n    Apple TV 4K (51925935-97F4-4242-902F-041F34A66B82) (Shutdown) \n-- watchOS 6.2 --\n    Apple Watch Series 5 - 40mm (7C50F2E9-A52B-4E0D-8B81-A811FE995502) (Shutdown) \n    Apple Watch Series 5 - 44mm (F7D8C256-DC9F-4FDC-8E65-63275C222B87) (Shutdown) \n
Run Code Online (Sandbox Code Playgroud)\n

选择不带 ID 的 Simulator 字符串,这里是一个示例。

\n

iPad Pro(12.9 英寸)(第四代)

\n

最终命令

\n
\n

iPhone

\n
\n

\xe2\x80\xa2 iPhone 6s

\n
react-native run-ios --simulator="iPhone 6s"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 iPhone 8

\n
react-native run-ios --simulator="iPhone 8"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 iPhone 8 Plus

\n
react-native run-ios --simulator="iPhone 8 Plus"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 iPhone 11

\n
react-native run-ios --simulator="iPhone 11"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 iPhone 11 Pro

\n
react-native run-ios --simulator="iPhone 11 Pro"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 iPhone 11 Pro Max

\n
react-native run-ios --simulator="iPhone 11 Pro Max"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 iPhone SE(第二代)

\n
react-native run-ios --simulator="iPhone SE (2nd generation)"\n
Run Code Online (Sandbox Code Playgroud)\n
\n

iPad

\n
\n

\xe2\x80\xa2 iPad Pro(9.7 英寸)

\n
react-native run-ios --simulator="iPad Pro (9.7-inch)"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 iPad(第七代)

\n
react-native run-ios --simulator="iPad (7th generation)"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 iPad Pro(11 英寸)(第 2 代)

\n
react-native run-ios --simulator="iPad Pro (11-inch) (2nd generation)"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 iPad Pro(12.9 英寸)第四代

\n
react-native run-ios --simulator="iPad Pro (12.9-inch) (4th generation)"\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 iPad Air(第 3 代)

\n
react-native run-ios --simulator="iPad Air (3rd generation)"\n
Run Code Online (Sandbox Code Playgroud)\n


Kha*_*war 5

正如 Ian L 所回答的,我也使用 NPM 来管理我的脚本。

例子:

{
  "scripts": {
    "ios": "react-native run-ios --simulator=\"iPad Air 2\"",
    "devices": "xcrun simctl list devices"
  }
}
Run Code Online (Sandbox Code Playgroud)

这样,我可以快速得到我需要的东西:

  1. 列出所有设备: npm run devices
  2. 运行默认模拟器: npm run ios


Tan*_*byn 5

这是更改 iOS 模拟器的新路径,您只需更改

default: 'iPhone 6' or something else 
Run Code Online (Sandbox Code Playgroud)

小路:

<project_root>/node_modules/@react-native-community/cli/build/commands/runIOS/runIOS.js
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用

npx react-native run-ios --simulator="iPhone 14"
Run Code Online (Sandbox Code Playgroud)

或者转到 xcode 并添加一个名为“iPhone 6 (9.2)”的新模拟器(如果您不想 --simulator="iPhone 14"每次都添加)