Android Studioのエラーと対処法|エラーログの読み方

Android Studioを使っていると、赤い文字が並ぶ画面に何度も遭遇します。書かれている内容が英語で長いため、読まずに検索へ走りたくなりますが、それでは解決が遠回りになります。

この記事では、Android Studioのエラーログの読み方と、つまずきやすい箇所への対処を公式ドキュメントに沿って解説します。

エラーには2種類ある

まず、どの段階のエラーかを区別してください。ここを混同すると、見る場所を間違えます。

種類 いつ起きるか どこを見るか
ビルドエラー アプリを組み立てる段階。実行される前 ビルドの出力
実行時エラー アプリが動いている最中。多くはアプリが落ちる Logcat

「アプリが起動しない」のか「起動してから落ちる」のかで、読むべき場所が変わります。

Logcatの読み方

実行時エラーの調査はここから始まります。公式の説明によれば、Logcatウィンドウはデバイスからのログをリアルタイムに表示し、アプリのデバッグを助けます。

開き方は、メニューバーから View → Tool Windows → Logcat です。

ログの構成要素

公式によれば、各ログには次の情報が付きます。

  • 日付
  • 時刻
  • プロセスとスレッドの識別子
  • タグ
  • パッケージ名
  • 優先度
  • メッセージ

公式の説明では、タグごとに固有の色が付き、ログの種類を見分けやすくなっています。

優先度で絞り込む

公式によれば、各ログの優先度は次の6段階です。

FATAL / ERROR / WARNING / INFO / DEBUG / VERBOSE

ログは大量に流れるため、最初はERROR以上に絞って見るのが効率的です。自分のアプリと無関係なシステムのメッセージが多く含まれるため、絞らないと目的の行を見失います。

例外が起きたときの表示

ここが最も重要です。公式には次のように書かれています。

アプリが例外を投げると、Logcatはメッセージと、それに続くスタックトレースを表示する。スタックトレースにはコード行へのリンクが含まれる

つまり原因の行へ直接飛べます。エラーの文面を検索する前に、まずこのリンクをたどってください。自分のコードのどこで止まったかが分かれば、解決の半分は終わっています。

スタックトレースをどう読むか

長い行が何十も並びますが、全部を読む必要はありません。見るべき順序は次のとおりです。

  1. 1行目:例外の種類とメッセージ。何が起きたかが書かれている
  2. 自分のパッケージ名を含む行:自分が書いたコードのどこか。多くはこの行が原因
  3. Caused byの行:根本原因。複数ある場合は一番下のものが元の原因

フレームワーク内部の行が大半を占めますが、そこを読み込む必要はありません。自分のパッケージ名を探すのが近道です。

自動スクロールの挙動

公式によれば、既定でLogcatは末尾へスクロールします。ビュー内をクリックするか、マウスホイールで上へスクロールすると、この機能は解除されます。ツールバーから再び有効にできます。また、ツールバーからログの消去、一時停止、再開も行えます。

エラーを調べる前に一度ログを消去してから再現させると、目的の行だけが残って読みやすくなります。

ビルドエラーへの対処

実行される前に止まる場合は、ビルドの段階で問題が起きています。

よくある原因

  • ライブラリの記述先を間違えている:公式によれば、ビルドファイルはプロジェクト全体用とモジュールごとのものに分かれています。依存関係はモジュール側のビルドスクリプトに書きます
  • バージョンの不一致:ライブラリが要求するバージョンと、プロジェクトの設定が食い違っている
  • 構成要素の不足:必要なSDKやツールが導入されていない

公式の説明では、プロジェクトの依存関係はモジュールレベルのビルドスクリプトに名前で指定し、Gradleがそれを探して利用可能にします。また、Android Studioは既定でMaven Central Repositoryを使うよう構成されており、この設定はプロジェクトの最上位のビルドファイルに含まれています。

ライブラリが見つからないというエラーは、この2つのどちらかに原因があることがほとんどです。

ビルドファイルの名前

公式によれば、Kotlinを使う場合の名前はbuild.gradle.kts、Groovyを使う場合はbuild.gradleです。公式はKotlinのほうを推奨しています。

解説記事を参考にするとき、自分のプロジェクトとファイル形式が違う場合があります。公式は両者について「概念的には互換である」と説明していますが、書き方の細部は異なります。コードをそのまま貼り付けて動かないときは、この違いを疑ってください。

エラーに向き合う手順

  1. ビルドエラーか実行時エラーかを判別する
  2. エラーメッセージの1行目を読む
  3. 自分のパッケージ名を含む行を探す
  4. 該当のコード行へ飛んで確認する
  5. それでも分からなければ、メッセージの1行目をそのまま検索する

検索は最後です。先にメッセージを読んでおけば、検索結果が自分の状況と合っているかを判断できます。

やってはいけない対処

  • エラーメッセージを読まずに設定を変える:原因が分からないまま状態が悪化します
  • 検索結果のコードをそのまま貼り付ける:バージョンが違うと別のエラーを生みます
  • 警告をすべて無視する:公式によれば、Android StudioのLintツールは性能・使いやすさ・バージョン互換性などの問題を検出します。警告には理由があります

まとめ

  • ビルドエラーと実行時エラーを先に区別する
  • 実行時エラーはLogcatで確認する
  • 例外発生時はスタックトレースからコード行へ飛べる
  • 優先度で絞り込むとログが読みやすくなる
  • 依存関係はモジュール側のビルドスクリプトに書く

Kotlinのコード側での例外処理はKotlinのエラー処理|エラーハンドリングの書き方を解説で扱っています。画面の基本操作はAndroid Studioの使い方を参照してください。

プログラミング学習に興味がある方は、まずは無料体験会へ

無料体験会・お申し込みはこちら