web-dev-qa-db-ja.com

Xcode 10へのアップグレード後にiPhone 6シミュレーターが見つかりませんでした

Xcode 10に更新しましたが、それを行ったため、コマンドreact-native run-iosを使用してターミナルでシミュレーターを実行できません。私はこのエラーを受け取ります:

IPhone 6シミュレーターが見つかりませんでした

[Xcode]> [ウィンドウ]> [デバイスとシミュレータ]に移動すると、シミュレータがあり、xcrun simctl list devicesを実行すると、シミュレータのリストも表示されます。

携帯電話でreact-native run-ios --deviceを使用してXcodeからアプリを実行できます。複数のアプリを試してみたので、アプリではありません。

Xcode> Preferences> Locationsに移動すると、コマンドラインツールでXcode 10.0(10A255)が選択されています。

Xcodeを削除して再インストールするだけでなく、コンピューターを再起動してみました。

どんなアイデアがありますか?

私のセットアップは次のとおりです。

  • MacOs High Sierra 10.13.6
  • Xcodeバージョン10.0
  • 反応ネイティブCLI:2.0.1
  • 反応ネイティブ:0.57.1
15
Martin Leroux

同様の問題がありました。 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

私のバージョンのいずれも、この状態でtrueを返しません...持っている場合

  • version.indexOf('iOS') !== 0!version.includes('iOS')に置き換えると、この問題が解決されます。
18
Damian

Node_modules/react-native/local-cli/runIOS/findMatchingSimulator.jsに行きました

そして私は置き換えました:

if (version.indexOf('iOS') !== 0 )

if (!version.includes("iOS" ))

そして

if (simulator.availability !== '(available)')

if (simulator.isAvailable !== true)

12
samernady

バグはreact-nativeで修正されているため、package.jsonでパッケージを更新できます。

npm install -g npm-check-updates
ncu -u react-native
npm install
10
Danny Sullivan

私の問題を解決した何かを見つけました。
react-nativeノードモジュールの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

8
Martin Leroux

どうやってそれを修正したかを皆さんと共有したいのですが、誰かを助けることができるかもしれません。

このファイルを編集: node_modules/react-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)を使用して、変数から得たものを確認しましたversionで、値が期待どおりではありませんでした。

4
R. Calhau

以下のファイルを修正することで解決できます。

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

この行を置き換えます

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

if (!version.includes('iOS') && !version.includes('tvOS')) {
3
Padam Prajapati

XCode 1で反応ネイティブバージョン0.55.3を使用すると、react-native run-iosを実行するにはtwo変更を行う必要がありました。

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

  1. @ martin-lerouxで説明されている変更:

    変化する

    // Skipping non-available simulator
    if (simulator.availability !== true) {
    

    // Skipping non-available simulator
    if (
        simulator.availability !== '(available)' &&
        simulator.isAvailable !== 'YES'
    ) {`
    
  2. @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')) {
    
2
Andru

Node_modules/react-native/local-cli/runIOS /に移動し、findMatchingSimulator.jsで30行目を次のように置き換えます

if (version.indexOf('com.Apple.CoreSimulator.SimRuntime.iOS') !== 0) {
0
Robert Alvarez

私のために働いた1つのオプション

Macにインストールされているシミュレーターのリストを使用して確認します

xcrun simctl list --json devices

シミュレーターのリストで、任意のシミュレーター名を選択し、次のように実行します

react-native run-ios --simulator 'iPhone 6s'

これがあなたのために働くことを願っています

0
krishnazden