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のバージョンを更新した方が幸せになれる気がする