Android Studio-3.2.1のLogcatを使う

Android Studioについては/tag/androidStudioに投稿があるので参照されたい。

AndroidエミュレータのChromeを使って何らかのテストをしたい場合には、そのコンソール出力を見たい。これはエミュレータの中で行う方法があるようだが、しかし画面が小さいのでPC画面に出したい。

Logcatがこの目的のために使用できる。

Logcatウインドウを表示する

これには、View>Tool Windows>Logcatを選択すればよい。

Please configure Android SDK

しかし、このエラーが出ることがある。

どうもこれは、Android StudioにインストールされているSDKのバージョンと、Logcatに設定されているバージョンが異なるために起こるらしい。同じAndroid Studioの中なのに、なぜ自動で取得できないのかが謎なのだが、ともあれ、以下を行う。

File>Settingsを開き、以下をみてみる(おそらくこれで良いと思うのだが、確信は無い)

SDK Platform は28のみをインストールしている。

Android SDK Toolsは26.1.1だ。

「Please configure Android SDK」をクリックし以上の値を設定する。

※画面をキャプチャし忘れたのだが、再度表示させる方法がわからない。

最後に、File>Invalidate Caches…を行う。

エミュレータを動作させる

エミュレータを動作させ、その中でChromeを使うと、Logcatにログが流れる。

ただし、最新のPie(API 28)を使ったエミュレータではどうしてもうまく行かなかった。Logcat側にエミュレータと接続できないなどの表示がされ、しまいにはエミュレータ側の動作が不安定になったり、Android Studio全体がエラーで落ちてしまう。

上記の画面はNaugat(24)を使ったものだ。

エラーで落ちてしまう場合、以下のようなメッセージが表示される。

Logcatの出力をChromeだけにする

LogcatはAndroidエミュレータ(もしくはUSB接続の実機)全体のログを表示するようになっているので、当然ながら全体のログが出力されてしまう。

しかし、今回見たいのは、Chromeのコンソール出力だけなのだ。フィルタリングでChrome以外の出力をすべてカットすることができる。

右上にあるEdit Filter Configurationを選択する。

以下のように表示される。

名前をchrome(何でもよい)、Log Tagをchromiumにする。

この状態でエミュレータのChromeで自作アプリを動作させると、Chromeのコンソールに出力されるべきものだけがLogcatの画面に出力される。

それでもまだ余計なものが出力されているが、とりあえず見れるので良しとする。

コマンドラインで使う

logcatについてもわざわざAndroid Studioを起動する必要は無い。コマンドラインで使える。

まず、SDKインストールディレクトリのplatform-toolsにadb.exeというコマンドがある。私の場合だと「C:\foobar\Android\sdk\platform-tools\adb.exe」になる。

これを使って以下のように起動する。

adb logcat -s chromium:*

これについてはLogcat のログ出力をフィルタするを参考にさせてもらった。

このように出力される。

出力形式を変更する

Logcatの出力形式を変更する方法はhttps://developer.android.com/studio/command-line/logcat?hl=enに説明がある。

とにかくChromeが出力したメッセージだけが見れればいいので、rawを指定する。

adb logcat -s chromium:* -v raw

愚かなことに、決まった形式の一つしか選択できないようだ。