メモメモメモ

ほんとうにめも

【ReactNative】Expo製アプリが本番でのみクラッシュする問題を調査・解決した。【adb logcat】コマンドの使い方メモ

状況

  • Androidで特定画面を開くとクラッシュすると報告があった
  • 本番環境でのみ発生し、エミュレーターでは発生しなかった
  • Sentryにissueは報告されていなかった ※これはまだ謎

原因追求方法

adb logcat を使った。

adb logcatとは

adbコマンドは、 Android Debug Bridgeの略でデバイスと通信するためのコマンドです。今回のように実際に目の前の端末内で何がおきてるのかを知りたい場合のデバッグに重宝します。

adb logcatコマンドは、その名の通りlogをcat(catenate)するコマンドで、接続した端末ののバイスログを表示できます。

adb logcatの使い方

  1. Android端末をUSBでつなぐ
  2. adb devicesでちゃんと端末が認識されているか確認する
  3. adb logcat -cで一旦ログをクリアする(しなくても良いが、該当ログを発見しやすくするためにやっておく)
  4. adb logcatでログを表示する

といった流れ。

adbコマンドを実行しても「waiting for device」と表示されて何も進まない場合は、 - adb kill-server - adb start-server して再起動するとうまくいきました。

参考: [Android] USBデバッグモードで端末が認識しないとき/adb installが「waiting for device」から進まないときの対処法

備考・コツ

adb logcatの結果を見るだけだと調査しにくいので、adb logcat > log.txtのようにしてからファイルを調べるとおくと落ち着いて調査できます。

Android端末が認識されない場合

らへんの問題に関しては別で記事を書きます。