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)を使ったものだ。
エラーで落ちてしまう場合、以下のようなメッセージが表示される。
qemu-system-i386.exe は動作を停止しました
問題が発生したため、プログラムが正しく動作しなくなりました。プログラムは閉じられ、解決策がある場合には Windows から通知されます。
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
愚かなことに、決まった形式の一つしか選択できないようだ。