Android実機で開発中アプリのログを確認する
はじめに
どうも、うみぶどうです。エックスポイントワンで働いているエンジニアです。
近頃はモバイルアプリ開発に業務で取り組むようになりました。
先日、開発中アプリをローカルサーバで動かしているうちは問題が起きないのですが、内部配布した開発用ビルドではうまく動かない、という状況に直面しました。
Android端末本体からログを取得したいと考えたのですが、Expoを利用して開発を行なっていた、という事情もあり、ログ出力を確認するまでにいくつかハードルがありました。
確認方法自体はUSB有線接続を利用したシンプルなものですが、一連の流れとしてまとまった記事を見つけづらかったため、記事を残すこととしました。
ログ確認に必要なのは以下の手順です。それぞれ説明していきます。
- Android実機の「開発者向けオプション」「USBデバッグ」を有効にする
- adbコマンドを利用できるように準備 (Platform-Toolsの利用)
- adb logcatコマンドでログ表示、絞り込み
Android実機の「開発者向けオプション」「USBデバッグ」を有効にする
開発中のアプリをAndroid実機で動作確認している場合、「開発者向けオプション」は既に有効になっているケースが多そうです。その場合、該当手順をスキップして大丈夫です。「USBデバッグ」が有効になっているかどうか確認して次に進みましょう。
「設定」から「デバイス情報」を表示し「ビルド番号」の項目を7回タップすることで「開発者向けオプション」を有効化できます。
機種・バージョンによって設定項目の表記が異なる場合があるようなので、見つからない場合Android公式ドキュメントを参照するといいかもしれません。
その後、「設定」「システム」の中に項目として「開発者向けオプション」が追加されるので選択します。
「USBデバッグ」の項目を有効化します。
参考:
adbコマンドを利用できるように準備する
adb(Android Debug Bridge)をCLIから利用し、Androidデバイスと通信できるよう準備します。
Android Studioがインストール済みで、PATHを通してあれば、 adb
コマンドが利用できるはずです。
未インストールの場合、Android SDK Platform-Toolsをダウンロードするのがお手軽です。筆者はこちらを利用しました。
adb.exeの置き場所へのPATHを通すことで adb
コマンドを利用できるようになります。
例えばzshの場合 .zshrc
に以下を追記しましょう。
export PATH="$HOME/Android/sdk/platform-tools:$PATH"
※利用しているシェル、adb.exeを実際に配置した場所に応じてアレンジが必要です。
設定ファイルにPATH追記後に即時反映させたい場合は、以下コマンドが便利です。
source ~/.zshrc
adb logcatコマンドでログ表示、絞り込み
ターミナルから adb
コマンドが実行できるかどうか、以下で確認しましょう。
adb --version
adb
コマンドが認識されていることがわかったら、次に進みましょう。
Android実機をUSBで有線接続した上で以下コマンドを実施するだけでログがじゃんじゃか出てきます。
adb logcat
じゃんじゃか出てきすぎるので絞り込みしましょう。以下のようにして出力をフィルタすることができます。Expoのログ取得のために指定しているタグの部分については、欲しい情報に差し替えれば表示されるログを切り替えられます。
adb logcat -s 'ReactNativeJS:*'
adb logcat
コマンドは接続されたデバイスが単体であれば、対象としてログを出してくれるのですが、うまくいかない場合は、以下で接続中のデバイス一覧を確認するといいかもしれません。
adb devices
複数台接続中の場合、デバイスID指定のオプションを追加して実行すればログが取得できます。
adb -s <デバイスID> logcat
最後に
実機で動かした場合のみ問題発生する、という状況にはなかなか遭遇したくないものです。
どこかの誰かの調査の一助になればと思って手順をご紹介しました。
以上です。
Discussion