原因不明のエラーが、再起動したらあっさり動いた。我々が初心者の頃からよくあることだと思う。
react-nativeの再起動のやり方を実務でreact-nativeを使ってる人間がまとめてみた。
基本1
シュミレーターとターミナルを終了。
(ターミナルも必ず終了する)
react-native run-ios
基本ですね。まずこれを試したい。
基本 2
rm -rf node_modules
npm cache clear
watchman watch-del-all
npm install
よくエミュレーターで表示される手順ですね。とりあえず困ったらこれをやってもいい。
iosのシュミレーターを初期化する。
シュミレーターを開いている時、上にSimulator>Reset Content and Settingsでシュミレーターにインストールされたアプリを削除できる。
例を挙げると、
1 debugを開始すると、Runtime is not ready for debuggingと出てエラーになってしまう時
2 シュミレーター上のExpoでCRNAを動している時に、Expoの画面上で、白い画面のエラーが出る時。
などだ。こういったエラーはシュミレーターの環境をリセットすると直る。
シュミュレーターは定期的にリセットしたい。
xcodeからリビルドする
rebuildを選択、実行
その後、左上の▷でシュミレータを起動
iosシュミレーターのホームからアプリを削除する。
command + shift + H
で、現在のアプリからホームに戻れるので、削除したいアプリを、長くクリックしましょう。そうすると左上にxが現れるのでタップする。
実機テスト編
実機にアプリをインストールした後、スマホを振ることでメニューを開くことが出来る。
android実機の場合ターミナルから
adb shell input keyevent 82
でメニューを開けるので、エイリアスを作っておくと便利。
そこでリロードで擬似再起動が出来る。
またandroidの実機だと、キャッシュを削除することでアプリをインストールした時の状態に戻せる
android実機での再起動は
cd android && gradlew clean
このコマンドは実機にインストールする時生成した、android/build, android/app/buildという二つのファイルを削除してくれる。
その後は
cd .. && react-native run-androidだ。
またusbケーブルを外すと、 サーバーとの接続が切れてリロードが出来なくなる。
usbを外してデバッグしたい時は、スマホを振ってメニューを出し、devSettingsをタッチ次にDebug server host & port for deviceをタップして、
199.166.0.1:8081などとパソコンのipアドレスを入力しよう。
これでリロードが出来るようになる。
一度usbケーブルを外してしまうと、再接続してもリロードは出来ない。
もう一度react-native run-androidをしよう。
ios編
pod関連でおかしい時
iosフォルダの中のPods ディレクトリ削除
Podfile.lockも削除
modified my Podfile to target iOS 9
cd ios && pod install
cd ../
react-native link
ただし、気軽なpod updateとreact-native-linkは全てを破壊するので注意
番外編
react-native link忘れてないよね?
yarnは?
スマホのブラウザからPCのAPIサーバーにアクセスできる?
(アクセスできなかったらスマホとPCが同じwifiを使っているか確認)
僕はこれで3時間無駄にしたよ。
他にもいいやり方があればコメントで教えてください。