Реагировать на собственное изменение устройства iOS по умолчанию


158

Когда я запускаю эту команду:

react-native run-ios

Мое приложение по умолчанию работает на симуляторе iPhone6:

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

Как по умолчанию запустить приложение на другом симуляторе (например, iPhone5s)?


Xcode -> Продукт -> Направление ??
zipzit

2
Я не знаю, как настроить устройство по умолчанию, но после запуска react-native run-iosвы можете изменить устройство в Simulator > Hardware > Device > iOS x.x > iPhone 5. Это будет работать, пока вы не выйдете из симулятора.
sealskej

Ответы:


396

Укажите симулятор с помощью --simulator флаг.

Это доступные устройства для iOS 12.0 и выше:

npx react-native run-ios --simulator="iPhone 5s"
npx react-native run-ios --simulator="iPhone 6"
npx react-native run-ios --simulator="iPhone 6 Plus"
npx react-native run-ios --simulator="iPhone 6s"
npx react-native run-ios --simulator="iPhone 6s Plus"
npx react-native run-ios --simulator="iPhone 7"
npx react-native run-ios --simulator="iPhone 7 Plus"
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="iPad Pro (9.7-inch)"
npx react-native run-ios --simulator="iPad (7th generation)"
npx react-native run-ios --simulator="iPad Pro (11-inch)"
npx react-native run-ios --simulator="iPad Pro (12.9-inch)"
npx react-native run-ios --simulator="iPad Air (3rd generation)"
npx react-native run-ios --simulator="iPad Pro (11-inch) (1st generation)"

Список всех доступных устройств iOS:

xcrun simctl list devices

В настоящее время нет способа установить значение по умолчанию.

React Native Docs: Запуск на симуляторе


Спасибо, это очень помогло
Лакшая Махешвари

2
И если ты хочешь; react-native run-ios --simulator="iPad Air"
Бурак Токак

22
Чтобы увидеть все доступные устройства, вы можете использовать xcrun simctl list devicesбольше информации здесь
robd

1
На всякий случай, если у вас есть несколько симуляторов с одинаковыми именами, например iPhone 6s для ios 11, iPhone 6s для ios 12 и т. Д., Вы можете установить определенное имя для симулятора из Xcode -> Window -> Устройства и симуляторы
Chirag Purohit

Почему несколько iPad Pro?
kojow7

48

Вы также можете использовать npm для этого, добавив запись в scriptsэлемент вашего package.jsonфайла. Например

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

Затем использовать это: npm run launch-ios


3
ИМХО, это лучший ответ, так как он позволяет хранить настройки в коде / управлении версиями. Означает, что вам не нужно помнить синтаксис командной строки.
Ник

1
Я согласен с этим ответом. Вы также можете обойтись с одинарными кавычками: "launch-ios": "react-native run-ios --simulator 'iPad Air 2'"
lfkwtz

24

Существует настройка проекта, если вы выслеживаете:

{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нее действительный установленный симулятор и запустите его, чтобы запустить этот симулятор по умолчанию.


5
Это действительно сработало, хотя файл был скрыт внутри {project} / node_modules / реагировать-нативный / local-cli / runIOS /
Матей Укмар

Отличное решение. Спасибо!
Ахмет Ардал

На самом деле у меня нет этого модуля в папке узловых модулей.
Абдул Садик Ялчин

1
Да, добавление "runArguments": [ "--simulator", "iPhone 5s" ]к моей конфигурации запуска работало отлично.
Может Пойразоглу

22

Вы можете создать псевдоним в вашем ~/.bash_profileфайле:

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

А затем запустите Reaction-native, используя созданный псевдоним:

$ rn-ios


15

1) Переименуйте ваш симулятор, если симулятор с тем же именем, но другой версией iOS

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

введите описание изображения здесь

2) Откройте папку своего собственного реактивного проекта

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


5

Как ответил Ян Л, я также использую NPM для управления своими сценариями.

Пример:

{
  "scripts": {
    "ios": "react-native run-ios --simulator=\"iPad Air 2\"",
    "devices": "xcrun simctl list devices"
  }
}

Таким образом, я могу быстро получить то, что мне нужно:

  1. Список всех устройств: npm run devices
  2. Запустите симулятор по умолчанию: npm run ios

3

Вот новый путь для изменения симулятора iOS, который вам просто нужно изменить

default: 'iPhone 6' or something else 

Дорожка:

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


0

У меня была проблема с XCode 10.2, указав правильный номер версии симулятора iOS, поэтому использовал:

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

0

Если вы хотите сменить устройство по умолчанию и вам нужно только запускать реагирующий родной ios, вы можете выполнить поиск в поисковике по ключевому слову «runios», затем откройте папку и исправьте файл index.js, изменив «iphone X» на нужное ваше устройство.

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


0

Получить список устройств с помощью этой команды

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) 

Выберите строку симулятора без идентификатора, вот пример.

iPad Pro (12,9 дюйма) (4-го поколения)

Последняя команда

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 (2-го поколения)

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 дюймов) (2-го поколения)

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

• iPad Pro (12,9-дюймовый) 4-го поколения

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

• iPad Air (3-го поколения)

react-native run-ios --simulator="iPad Air (3rd generation)"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.