Не удалось найти симулятор iPhone 6 после обновления до Xcode 10
Я обновил до Xcode 10, и с тех пор, как я это сделал, я не могу запустить симулятор в терминале с помощью команды react-native run-ios
. Я получаю эту ошибку:
Не удалось найти симулятор iPhone 6
Когда я захожу в Xcode> Window> Devices and Simulator, там есть симулятор, и когда я делаю xcrun simctl list devices
я также вижу список симулятора.
Я могу запустить приложение на своем телефоне с помощью react-native run-ios --device
и из react-native run-ios --device
, и я пробовал использовать несколько приложений, так что это не приложение.
Когда я иду в Xcode> Preferences> Locations, Xcode 10.0 (10A255) выбирается в Инструментах командной строки.
Я попытался перезагрузить компьютер, а также удалить и переустановить Xcode.
Есть идеи что это может быть?
Вот моя установка:
- MacOs High Sierra 10.13.6
- Xcode Version 10.0
- response-native-cli: 2.0.1
- реактивный: 0.57.1
Ответы
Ответ 1
У меня была похожая проблема. React Native - 0.52.3, XCode - 10.2 beta 2
function findMatchingSimulator(simulators, simulatorName) {
if (!simulators.devices) {
return null;
}
const devices = simulators.devices;
var match;
for (let version in devices) {
// Making sure the version of the simulator is an iOS (Removes Apple Watch, etc)
if (!version.includes('iOS')) {
continue;
}
[...]
}
}
-
Открыть файл: node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
-
Проверьте правильность версии вашего устройства, например: в строке 29 console.log(version)
-
Сравните его с условием в строке 30: if (version.indexOf('iOS') !== 0) {
У меня был список версий, как это:
com.apple.CoreSimulator.SimRuntime.watchOS-5-0 -1
com.apple.CoreSimulator.SimRuntime.tvOS-12-1 -1
com.apple.CoreSimulator.SimRuntime.tvOS-12-2 -1
Ни одна из моих версий не возвращает истину в этом состоянии... Если у вас есть
- Замените
version.indexOf('iOS') !== 0
на !version.includes('iOS')
и это решит эту проблему для меня.
Ответ 2
Я пошел в node_modules/реагировать-нативный /local-cli/runIOS/findMatchingSimulator.js
И я заменил:
if (version.indexOf('iOS') !== 0 )
с
if (!version.includes("iOS" ))
А также
if (simulator.availability !== '(available)')
с
if (simulator.isAvailable !== true)
Ответ 3
Ошибка была исправлена в react-native
поэтому вы можете обновить пакет в package.json:
npm install -g npm-check-updates
ncu -u react-native
npm install
Ответ 4
Нашел что-то, что решило мою проблему.
Вам нужно зайти в local-cli/runIOS/findMatchingSimulator.js
в модуле узла-реагирования и изменить строку 37 для
if (
simulator.availability !== '(available)' &&
simulator.isAvailable !== 'YES'
) {'
Больше информации о решении и проблеме на реакции-родной github:
https://github.com/facebook/react-native/commit/1031872
https://github.com/facebook/react-native/issues/21571
Ответ 5
Я просто хочу поделиться с вами, ребята, как я это исправил, может быть, это может кому-то помочь.
Отредактируйте этот файл: node_modules/Reaction-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;
}
Это сработало для меня.
Я использовал console.log(version), чтобы увидеть, что я получил от версии переменной, а значение не было ожидаемым, как и должно быть.
Ответ 6
это может быть решено, чтобы исправить файл ниже.
/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
заменить эту строку
if (!version.startsWith('iOS') && !version.startsWith('tvOS')) {
с
if (!version.includes('iOS') && !version.includes('tvOS')) {
Ответ 7
При использовании собственной 0.55.3
-версии 0.55.3
с XCode 10 мне пришлось сделать два изменения, чтобы запустить react-native run-ios
.
Внутри node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
:
-
Изменение, как описано @martin-leroux:
+ Изменить
// Skipping non-available simulator
if (simulator.availability !== true) {
в
// Skipping non-available simulator
if (
simulator.availability !== '(available)' &&
simulator.isAvailable !== 'YES'
) {'
-
Измените строку, упомянутую @samernady:
+ Изменить
// Making sure the version of the simulator is an iOS or tvOS (Removes Apple Watch, etc)
if (!version.startsWith('iOS') && !version.startsWith('tvOS')) {
в
// Making sure the version of the simulator is an iOS or tvOS (Removes Apple Watch, etc)
if (!version.includes('iOS') && !version.startsWith('tvOS')) {
Ответ 8
один вариант, который работал для меня
Проверьте список симуляторов, установленных на вашем Mac, используя
xcrun simctl list --json devices
в списке симулятора выберите любое имя симулятора и запустите так
react-native run-ios --simulator 'iPhone 6s'
Надеюсь, что это работает для вас
Ответ 9
Перейдите в node_modules/Reaction-native/local-cli/runIOS/и в findMatchingSimulator.js замените строку 30 на
if (version.indexOf('com.apple.CoreSimulator.SimRuntime.iOS') !== 0) {
Ответ 10
Я решил мою проблему с помощью этого сценария. Пожалуйста, посмотрите
fooobar.com/questions/17028096/...
Ответ 11
xcrun simctl list --json devices
Редактируйте node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
самостоятельно.
Убедитесь, что функция findMatchingSimulator
возвращает объект match
, например
{
udid: simulator.udid,
name: simulator.name,
version
}
Ответ 12
Что я должен был сделать:
npm install -g npm
Ответ 13
удалите эти строки из package.json
"реагировать": "XXXXXXXX",
"реагировать-родной": "ГГГГГГГГ",
тогда беги
npm install --save реактивная реакция