2020-08-19

React Native + Expoで始めたらPCがクラッシュし続けた

npm start もしくは expo start を実行すると100%の確率でモニターがブラックアウト。PC がフリーズ。強制的に電源を落として再起動するしかなくなった。

環境紹介

  • Windows10
  • wsl
  • Visual Studio Code
  • Android Studio

どんな経緯をたどったか

expo init でプロジェクト作成。npm startを行うとブラウザでExpo Developer Toolsが表示される。そしてその後クラッシュする。以前ためしに公式の手順に従ってreact-native initでプロジェクト作成した時は問題なく表示されていた。しかし、おそらくこの以前プロジェクトを作成していたことがクラッシュの原因。

エラーの内容1(Couldn't start project on Android: Error running adb)

image

Couldn't start project on Android: Error running adb: No Android connected device found, and no emulators could be started automatically.
Please connect a device or create an emulator (https://docs.expo.io/versions/latest/workflow/android-studio-emulator).
Then follow the instructions here to enable USB debugging:
https://developer.android.com/studio/run/device.html#developer-device-options. If you are using Genymotion go to Settings -> ADB, select "Use custom Android SDK tools", and point it at your Android SDK directory.

とりあえずリンク先を確認してみる。

image

「adb システムに複数のバージョンがあると、エラーが発生する可能性があります」らしい。

エラー解決手順

そのまま紹介されている手順通りにすすめる。

ターミナルから adb システムのバージョンを確認する

$adb version

image

Command 'adb' not found, but can be installed with:
sudo apt install adb

コマンドが使えないのでadbを「sudo apt install adb」でインストールする。 インストールできたら再度adb versionをたたく。

image

無事表示された

ディレクトリをコピーする

cd ~/Android/sdk/platform-tools

エラーの内容2(Unable to connect to adb daemon on port:5037)

Android Studio から AMD Manager でエミュレーターを起動してみる。

image

adb サービスを再起動する

AdbHostServer,cpp:102: Unable to connect to adb daemon on port:5037

ポート:5037が使えない・・・?のでadbサービスを再起動する。

adb kill-server
cannot connect to daemon at tcp:5037: Connection refused

エラーが出てしまったので管理者実行する。

adb kill-server

image

再起動できた。 Android Studio から AVD Manager でエミュレーターを再度起動する。

image

エラーが消えたことを確認できたので、ここでようやくexpo startをして、Expo Developer ToolsからRun on Android device/emulatorをしてみる。

image

エラーがでてると思いきや、エミュレーターでUSB debuggingを聞かれているのでAllowを選択する。

そしてもう一度ブラウザのExpo Developer ToolsでRun on Android device/emulatorをクリックする

image

ようやくこれでビルドが完了しました!!!

おまけ:うまくエミュレーターが動いてない

エミュレーターを下から上へスワイプするとメニュー画面が出るので、Expoをクリック(タップ)

image

ブラウザのExpo Developer Toolsにある URL をエミュレーターの入力欄にコピペする。

image

表示できた!