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を削除して再インストールするだけでなく、コンピューターを再起動してみました。
どんなアイデアがありますか?
私のセットアップは次のとおりです。
同様の問題がありました。 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')
に置き換えると、この問題が解決されます。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)
バグはreact-native
で修正されているため、package.jsonでパッケージを更新できます。
npm install -g npm-check-updates
ncu -u react-native
npm install
私の問題を解決した何かを見つけました。
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
どうやってそれを修正したかを皆さんと共有したいのですが、誰かを助けることができるかもしれません。
このファイルを編集: 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で、値が期待どおりではありませんでした。
以下のファイルを修正することで解決できます。
/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
この行を置き換えます
if (!version.startsWith('iOS') && !version.startsWith('tvOS')) {
と
if (!version.includes('iOS') && !version.includes('tvOS')) {
XCode 1で反応ネイティブバージョン0.55.3
を使用すると、react-native run-ios
を実行するにはtwo変更を行う必要がありました。
内部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')) {
Node_modules/react-native/local-cli/runIOS /に移動し、findMatchingSimulator.jsで30行目を次のように置き換えます
if (version.indexOf('com.Apple.CoreSimulator.SimRuntime.iOS') !== 0) {
私のために働いた1つのオプション
Macにインストールされているシミュレーターのリストを使用して確認します
xcrun simctl list --json devices
シミュレーターのリストで、任意のシミュレーター名を選択し、次のように実行します
react-native run-ios --simulator 'iPhone 6s'
これがあなたのために働くことを願っています