С момента обновления до Xcode 10.2 я больше не могу запускать реактивные-выпуски через клиент - PullRequest
12 голосов
/ 26 марта 2019

Сегодня я обновился до Xcode 10.2, так как я не могу запустить react-native run-ios через cli:

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

Found Xcode workspace a.xcworkspace

Could not find iPhone X simulator

Error: Could not find iPhone X simulator
    at resolve (/Users/user/Documents/work/a/a-light-ui/node_modules/react-native/local-cli/runIOS/runIOS.js:149:13)
    at new Promise (<anonymous>)
    at runOnSimulator (/Users/user/Documents/work/a/a-light-ui/node_modules/react-native/local-cli/runIOS/runIOS.js:134:10)
    at Object.runIOS [as func] (/Users/user/Documents/work/a/a-light-ui/node_modules/react-native/local-cli/runIOS/runIOS.js:106:12)
    at Promise.resolve.then (/Users/user/Documents/work/a/a-light-ui/node_modules/react-native/local-cli/cliEntry.js:117:22)    

Если я запускаю xcrun simctl list devices, все симуляторы показывают (Shutdown) (unavailable, runtime profile not found):

iPhone X (7AADFA50-7B57-4A40-8434-9A86F345D7ED) (Shutdown) (unavailable, runtime profile not found)

Кто-нибудь еще имел эту проблему с RN после обновления xcode до 10.2? Это все еще работает через Xcode .. но это означает открытие Xcode.

Ответы [ 5 ]

22 голосов
/ 27 марта 2019

Я решил так;

Во-первых, вам нужно пройти по этому пути

node_modules / реагировать-нативный / local-cli / runIOS / findMatchingSimulator.js

и затем;

Вам нужно изменить этот код

if (!version.startsWith('iOS') && !version.startsWith('tvOS'))

на

if (!version.startsWith('com.apple.CoreSimulator.SimRuntime.iOS') && !version.startsWith('com.apple.CoreSimulator.SimRuntime.tvOS'))

Надеюсь, это будет полезно,

ref: https://github.com/facebook/react-native/issues/21498#issuecomment-476621627

0 голосов
/ 17 июня 2019

, если не удалось найти, симулятор все еще сохраняется после замены следующих строк кода в runSimulator.js.

Путь для runSimulator.js -> / node_modules / реагировать-native / local-cli / runIOS /findMatchingSimulator.js

if (!version.startsWith('iOS') && !version.startsWith('tvOS')) { continue; }

с этим

if ( !version.startsWith('com.apple.CoreSimulator.SimRuntime.iOS') && !version.startsWith('com.apple.CoreSimulator.SimRuntime.tvOS') ) { continue; }

комментируйте следующие строки после замены

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

и 2-го подходапосле обновления до XCode 11

Xcode 11 xcrun возвращает true или false, а не YES или NO для свойства isAvailable, как раньше.Вы можете проверить, что с помощью следующей команды

xcrun simctl list devices --json 

выше команда напечатает все доступные устройства, например:

 com.apple.CoreSimulator.SimRuntime.iOS-12-2" : [
  {
    "state" : "Booted",
    "isAvailable" : true,
    "name" : "iPhone X",
    "udid" : "E53748D1-628B-4A99-A419-4D7AE7CE4745"
  }
]

Замените YES на true вследующий код

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

вот так

if ( simulator.availability !== '(available)' && simulator.isAvailable !== true ) { continue; }
0 голосов
/ 05 мая 2019

Я думал, что добавлю свое решение и здесь, в надежде помочь кому-нибудь.Я только что обновился до Mac OS Mojave и также обновился до Xcode 10.2.Весь мой реагирующий родной проект сломался, очень плохо.Тогда я опустил Xcode до 10.1.Затем я начал видеть эту ошибку, в которой после запуска response-native run-ios сказано:

Не удалось найти симулятор iPhone X

исправленный выше «взлом»это путем редактирования файла findMatchingSimulator.js с обновлениями выше.

Затем, run-ios реагирует на родину, следующая ошибка была:

: CFBundleIdentifier, не существует

Я исправил это:

  1. cd node_modules / реакции-нативный / сторонний / glog * Tab Введите
  2. . / Configure

Теперь реагирует на родной run-ios.Надеюсь, это кому-нибудь поможет, это было больно в @ ss.

0 голосов
/ 04 апреля 2019

Эта ошибка была исправлена ​​с RN v0.58.0, см. Коммиты здесь

IIRC эта ошибка была введена в Xcode 10.1

Кроме того, вы можете исправить это, просто заменив startsWith() на includes(). Но делать это каждый раз, когда вы обновляете node_modules, не идеально, поэтому я бы порекомендовал обновить вашу версию RN, если это возможно.

0 голосов
/ 28 марта 2019

Вы даже просто делаете что-то подобное

if (version.indexOf('iOS') === -1) ...

...