React本机更改默认iOS模拟器设备

执行此命令时:

react-native run-ios

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

Found Xcode project RN.xcodeproj
Launching iPhone 6 (9.2)...

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

208800 次浏览

使用--simulator标志指定一个模拟器。

以下是iOS 14.0之后可用的设备:

npx react-native run-ios --simulator="iPhone 8"
npx react-native run-ios --simulator="iPhone 8 Plus"
npx react-native run-ios --simulator="iPhone 11"
npx react-native run-ios --simulator="iPhone 11 Pro"
npx react-native run-ios --simulator="iPhone 11 Pro Max"
npx react-native run-ios --simulator="iPhone SE (2nd generation)"
npx react-native run-ios --simulator="iPhone 12 mini"
npx react-native run-ios --simulator="iPhone 12"
npx react-native run-ios --simulator="iPhone 12 Pro"
npx react-native run-ios --simulator="iPhone 12 Pro Max"
npx react-native run-ios --simulator="iPhone 13 Pro"
npx react-native run-ios --simulator="iPhone 13 Pro Max"
npx react-native run-ios --simulator="iPhone 13 mini"
npx react-native run-ios --simulator="iPhone 13"
npx react-native run-ios --simulator="iPod touch (7th generation)"
npx react-native run-ios --simulator="iPad Pro (9.7-inch)"
npx react-native run-ios --simulator="iPad (9th generation)"
npx react-native run-ios --simulator="iPad Air (4th generation)"
npx react-native run-ios --simulator="iPad Pro (11-inch) (3rd generation)"
npx react-native run-ios --simulator="iPad Pro (12.9-inch) (5th generation)"
npx react-native run-ios --simulator="iPad mini (6th generation)"

列出所有可用的iOS设备:

xcrun simctl list devices

目前没有办法设置默认值。

< a href = " https://facebook.github。/a> . io/ React - Native /docs/ Running - On - Simulator -ios" rel="noreferrer">React Native docs: Running On Simulator . io

你可以在~/.bash_profile文件中创建一个别名:

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

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

$ rn-ios

你也可以通过在你的package.json文件的scripts元素中添加一个条目来使用npm。如。

"launch-ios": "react-native run-ios --simulator \"iPad Air 2\""

然后使用npm run launch-ios

有一个项目设置,如果你搜索:

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

module.exports下有一些选项,包括:

< p > <代码>选项:[{ 命令:'——simulator [string]', 描述:'显式设置模拟器使用', 默认:'iPhone 7', 代码}< / > < / p >

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

为此我开发了CLI工具。你只需输入“rndcli”。然后选择设备

https://github.com/nazrdogan/rndcli

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

Xcode -> Window -> Devices and Simulators -> Simulators.

enter image description here

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\""
}

4) npm run start-iphone6

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

< p >的例子:
{
"scripts": {
"ios": "react-native run-ios --simulator=\"iPad Air 2\"",
"devices": "xcrun simctl list devices"
}
}

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

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

这里是改变iOS模拟器的新路径,你只需要改变

default: 'iPhone 6' or something else

路径:

<project_root>/node_modules/@react-native-community/cli/build/commands/runIOS/runIOS.js

我有一个问题与XCode 10.2指定正确的iOS模拟器版本号,所以使用:

react-native run-ios --simulator='iPhone X (com.apple.CoreSimulator.SimRuntime.iOS-12-1)'

如果你想更改默认设备,只需要运行react-native run-ios,你可以在finder中搜索关键字“runios”,然后打开文件夹和固定index.js文件,将“iphone X”更改为你需要的设备。

[1]: https://i.stack.imgur.com/BCtR1.png

使用此命令获取设备列表

xcrun simctl list devices

控制台

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

这里以不带ID的选择模拟器字符串为例。

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

最后的命令

iPhone

•iPhone 6s

react-native run-ios --simulator="iPhone 6s"

•iPhone 8

react-native run-ios --simulator="iPhone 8"

•iPhone 8 Plus

react-native run-ios --simulator="iPhone 8 Plus"

•iPhone 11

react-native run-ios --simulator="iPhone 11"

•iPhone 11 Pro

react-native run-ios --simulator="iPhone 11 Pro"

•iPhone 11 Pro Max

react-native run-ios --simulator="iPhone 11 Pro Max"

•iPhone SE(第二代)

react-native run-ios --simulator="iPhone SE (2nd generation)"

iPad

•iPad Pro(9.7英寸)

react-native run-ios --simulator="iPad Pro (9.7-inch)"

•iPad(第7代)

react-native run-ios --simulator="iPad (7th generation)"

•iPad Pro(11英寸)(第二代)

react-native run-ios --simulator="iPad Pro (11-inch) (2nd generation)"

•第四代iPad Pro(12.9英寸)

react-native run-ios --simulator="iPad Pro (12.9-inch) (4th generation)"

•iPad Air(第三代)

react-native run-ios --simulator="iPad Air (3rd generation)"

修改/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js的行代码

线55

  if (
simulator.availability !== '(available)' &&
simulator.isAvailable !== true
) {
continue;
}

取代的:

   if (
simulator.availability !== '(available)' &&
simulator.isAvailable !== true
) {
continue;
}

实现这一目标有多种方法:

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

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

xcrun simctl list devices

这将给出如下输出:

以下是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)

然后,您可以从输出中选择名称或uuid,然后按照自己的意愿进行操作。

  1. 使用--simulator运行:
npx react-native run-ios --simulator="iPhone SE"
  1. 使用--udid标志运行:
npx react-native run-ios --udid 90953319-BF9A-4C6E-8AB1-594394AD26CE

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

第一种情况:
它发生在登录屏幕上,我在TextInput上有autoFocus

.

.

第二种情况:
与世博会!< / p >

更新XCode后,我一直在使用iPhone 12 Max模拟器,但我更喜欢iPhone 8。下面是我采取的步骤:

  1. 当模拟器聚焦时,转到File -> Open Simulator并选择您希望作为默认值的一个。
  2. 关闭旧的模拟器,关闭localhost:19002并使用ctr + C停止终端中的服务器。
  3. 运行npm start,然后按i

现在它在你打开的模拟器上运行。

编码快乐!

用于iPhone Xʀ模拟器

    "iosxr": "react-native run-ios --simulator=\"iPhone Xʀ\"",

只需将此添加到您的脚本包。json文件

字母"ʀ"这里使用的是与" "不同的Unicode;

然后点击$ yarn iosxr在iPhone Xʀ模拟器上启动应用程序

你可以使用

npx react-native run-ios --simulator="iPhone 14"

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

对于RN 0.64.2,配置位于node_modules/@react-native-community/cli-platform-ios/build/commands/runIOS/index.js,您可以修改文件中的默认模拟器