Help us understand the problem. What is going on with this article?

「react-native run-ios」で「Could not find iPhone X simulator」

2019年10月3日追記(krimpedanceさん指摘)

xcode11.0でiPhoneXがリストから消えたようです。
https://github.com/react-native-community/cli/issues/739#issuecomment-533885641

Workaround solution awaiting fix (is was no able to find where is the default in the cli source code…) :
- yarn react-native run-ios --simulator "iPhone 11 Pro Max"
- npx react-native run-ios --simulator "iPhone 11 Pro Max"
- react-native run-ios --simulator "iPhone 11 Pro Max"
- ./node_modules/.bin/react-native run-ios --simulator "iPhone 11 Pro Max"

iPhone 11 Pro Maxなら問題なさそうですね!

2019年9月27日追記

この記事は2019年04月03日に書いたものです。
その時はxcodeを10.2にアップデートしたことが原因でした。

2019年9月20日にxcodeを11.0がリリースされています。
11.0でもビルドできないようです。

botいわくReactNativeのバージョンアップで解決らしい

 "react": "^16.9.0",
 "react-native": "^0.61.1",

詳細はissueをご確認ください。
https://github.com/facebook/react-native/issues/26594

バージョンアップは辛いという方はこちら
https://github.com/facebook/react-native/pull/25146#issuecomment-533995604

概要

昨日までsimulatorが立ち上がったのに、急に立ち上がらなくなった。

~/r/sample ❯❯❯ react-native run-ios
Found Xcode project sample.xcodeproj

Could not find iPhone X simulator

Error: Could not find iPhone X simulator

心当たりは、Xcodeを10.2にアップデートしたこと。

環境

xcode 10.2
ReactNative 0.57.4
※多分0.57.4以外でも発生します。

解決方法

解決策がすでにありました。
https://github.com/facebook/react-native/issues/21498#issuecomment-476621627

パターン1 findMatchingSimulator.jsの書き換え

node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js

42行目~

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

下記に書き換え

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

パターン2 ReactNativeのバージョンアップ

0.59.0以上にバージョンアップすると動作します。

ただ、0.59.1にバージョンアップするのに詰まったので、下記を参考にさせていただきました。
https://github.com/saghul/rn-diff/compare/rn-0.57.4...rn-0.59.1

おまけ

ReactNativeのバージョンを変更したくなかったので、findMatchingSimulator.jsの書き換えでいこうと思ったが、
node_modulesをインストールする度に書き換えるのは面倒なのでシェルスクリプトを用意しようと考えた。

gnu-sedをインストール

brew install gnu-sed
#!/bin/sh

rm -rf node_modules
npm install 

gsed -i -e '42d' ./node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
gsed -i -e "42i if (!version.startsWith('com.apple.CoreSimulator.SimRuntime.iOS') && !version.startsWith('com.apple.CoreSimulator.SimRuntime.tvOS')) {" ./node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js

初めてシェルスクリプトを書いたけど置換でいいはず...勉強します。

最後に

Android64bit対応も必要ならこれを機にReactNativeのバージョンを更新した方が幸せになれる気がする

ryunosuke0922
Webエンジニア2年目
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした