オンライン講座で、AWSの基本資格「AWS 認定ソリューションアーキテクトアソシエイト試験」に合格しよう!
お久しぶりです。
ながれです。
新型コロナウィルスの影響で、お家にいる時間が多い方結構いらっしゃるのではないでしょうか?
そんな時は、とにかくアプリ作りましょう!!(安直)
仕事の合間にアプリ作り、休み時間にアプリ作り、仕事終わったらアプリ作り。
楽しいなぁ(もはや錯乱)
冗談はさておき、そんなアプリ開発をしていると様々なバグにぶち当たると思います。
ステップ実行などでは解析できないバグもあると思います。
最終的にはログ取得して、何が起きてるのか調べる…となりますよね。
今回は、そんなログ取得についてAndroidに特化して紹介していこうと思います。
Androidでログを取得する方法
1 . Android StudioでRunを実行する
おそらく多くの方がこの方法で、ログを見ると思います。
やり方は簡単です。
Android Studio上のRunボタンを押して、アプリを起動すればOKです。
Android Studioの下部で「Run」というウィンドウを選択でき、そこでログを確認できます。


簡単かつ処理の流れも追いやすい(リアルタイムにログが記載されていくため)ので、大半はこの方法で十分な情報が取得できると思います。
ただし、ここで追えるのはアプリ内のログのみです。
また、ログの保存ができません(スクリーンキャプチャはできます)。
バグが発生した際のログと発生しなかった時のログを比較する、ということができないため、より根が深いバグの場合は非常に解析しにくいです。
そんな時は次の方法です。
2 . logcatログを取得する
adbコマンドのlogcatを使用してログを取得する方法です。
adbコマンドとは、Android端末にアクセスして色々できちゃうコマンドです。
PCに接続されている端末を調べたり、端末に入って端末内のファイルを確認したり…。
logcatで取得したログは、アプリログからプラットフォームのログ(Android端末自体のログ)まで全て書き込まれます。
また、ログをファイルに保存するのも容易です。
もちろん何の設定もせず、PCに端末を接続してadbを叩いても使えません。
設定が必要です。
MacやLinuxは設定が簡単だけどWindowsは少しクセがあります。
詳細はググって貰えばわかりますが、MacやLinuxは環境変数にAndroid SDKのパスを指定してやればOKです。
1 |
export PATH=$PATH:/Users/[ユーザ名]/Library/Android/sdk/platform-tools |
Windowsは端末ごとのドライバをインストールしてやらなければなりません…(こういうところはMacが優秀)
Windowsユーザーさんにはごめんなさいですが、ご自身で調べて設定して見てください(投げやり)。
さて、adbが使えるようになったらログを取得してみましょう。
まずは、adbの起動です
1 |
adb start-server |
これでadbコマンドが使用できるようになりました。
次に以下のコマンドでログを取得できます。
1 |
adb logcat > log.txt |
〜現在までのログが全て取得できます。
私は、ログの時間も欲しいため以下のようにしてログを取得します。
1 |
adb logcat -v time > log.txt |
ここで、ポイントです。
「〜現在までのログが取得できる」ということは、そのまま取得すると
とんでもない量のログが取得されてしまいます。
一度でもAndroidのlogcatを見たことがある人ならわかると思いますが、Androidのプラットフォームは常に結構な量のログを出力し続けているのです。
なので、事前に以下のコマンドを叩いておいてください。
1 |
adb logcat -c |
ログをクリアするコマンドです。
これで、ログ取得コマンドを叩いた際は
ログクリア後〜現在までのログが取得可能となります。
必ず、ログをクリアしてから取得を行なってください。
おわりに
Android開発をそこそこやっている方ならば、当たり前の話だとは思いますが
これからAndroid開発をやってみようかなぁという人は是非参考にしてみて下さいね。