はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】公式パッケージ「Android Logcat」を利用してAndroidデバイスからのスタックトレースやログなどのメッセージをUnity Editorに表示する

はじめに

今回はAndroid端末からスタックトレースやログなどのメッセージをUnity Editorに表示することができる公式パッケージ「Android Logcat」を紹介したいと思います。

Android Logcatが動作している様子

docs.unity3d.com

概要

Android LogcatはAndroidデバイスからのスタックトレースやログなどのメッセージをUnityエディタに表示するパッケージです。

The Android Logcat Package displays messages such as stack traces and logs from an Android device in the Unity Editor.

// DeepL翻訳
Android Logcat Packageは、AndroidデバイスからのスタックトレースやログなどのメッセージをUnityエディタに表示します。

Android Logcat package provides support for:

  • Android log messages
  • Android application memory statistics
  • Android Screen Capture
  • Android Screen Recorder
  • Stacktrace Utility

Android Logcat - Unity マニュアル

詳しい方はAndroid StudioLogcatがあったなと思うかもしれませんが、あれがUnityエディタ上で見れると思っていただいてほぼ差し支えありません。Android SDK Platform-Toolsパッケージに含まれるadbをGUIで見やすくしたツールとして、Android StudioLogcatがあったりUnityのAndroid Logcatがある感じです。

developer.android.com

環境

  • Unity 2019 or later (Androidモジュールインストール済)

インストール方法

Package ManagerUnity RegistryよりAndroid Logcatを検索してインストールしてください。

Android Logcatのインストール

補足ですがパッケージ名はcom.unity.mobile.android-logcatです。

Android端末と接続する方法

Android端末でデバッグする方法は以下の2種類あります。

  • USBデバッグ
  • Android Debug Bridgeによる有線/無線接続

docs.unity3d.com

ADB(Android Debug Bridge)とはAndroid端末と通信するためのコマンドラインツールですね。

Android Debug Bridge(adb)は、デバイスと通信するための多用途のコマンドライン ツールです。adb コマンドを使用すると、アプリのインストールやデバッグなど、さまざまなデバイス操作を実行できます。adb を使用すると、デバイスでさまざまなコマンドを実行する際に使用する Unix シェルにアクセスできるようになります。

Android Debug Bridge(adb)  |  Android デベロッパー  |  Android Developers

adbAndroid SDK Platform-Toolsパッケージに含まれており、Unityをインストール(厳密にはAndroidモジュールをかな?)すると勝手にインストールされているはずです。

Preference/External Tools/Android/Android SDK Tools Installed with UnityよりUnityが利用しているadbを含むSDKのパスを確認できる
// 例
/Applications/Unity/Hub/Editor/2022.3.10f1/PlaybackEngines/AndroidPlayer/SDK/platform-tools/adb 

USB接続

USBデバッグの手法の詳細は書きませんが、Androidの開発者モードのUSBデバッグを有効にします。

USB 接続したデバイスで adb を使用するには、デバイスのシステム設定で、[開発者向けオプション] の [USB デバッグ] を有効にする必要があります。Android 4.2(API レベル 17)以降では、[開発者向けオプション] 画面はデフォルトで非表示となっています。これを表示するには、

Android Debug Bridge(adb)  |  Android デベロッパー  |  Android Developers

あとはUSBケーブルを利用してAndroidデバイスをコンピューターに接続します。

ADB(Android Debug Bridge)

ここにADBの利用方法を書いてしまうとかなりのボリュームになってしまうので、別記事にてまとめたいと思います。気になる方は以下の公式ドキュメントを参照してください。

developer.android.com

Android Logcatを開く

メニューバーよりWindow -> Analysis -> Android Logcatを選択し、Android Logcat Windowを立ち上げます。

Android Logcat Windowを立ち上げる

この際に正しくAndroid端末と接続することができていればログが大量に更新されているはずです。

ログを取得している様子

なぜアプリを起動していなくてもログが更新されるか疑問に思うかもしれませんが、そもそもLogcat自体がUnity固有のものというわけではなく、Androidのログシステムを表示するツールとしてAndroid StudioLogcat, UnityのAndroid Logcatなどがあるというイメージです。
Logcat コマンドライン ツール  |  Android デベロッパー  |  Android Developers
developer.android.com

メッセージログのそれぞれのカラムの意味は以下の公式ドキュメントを参照してみてください。

  • Icon : メッセージの種類を示すアイコン。Edit -> Preferences -> Android Logcat Settingsでフォントサイズを変更できます
  • Time : メッセージが作成された時間
  • Pid : メッセージを生成したプロセスID
  • Tid : メッセージを生成したスレッドID
  • Priority : メッセージの優先度
  • Tag : メッセージに関連づけられたタグ
  • Message : メッセージ

docs.unity3d.com

ワイヤレスでAndroidデバイスに接続する

今回紹介しませんでしたがADBによりAndroidデバイスとワイヤレスで接続した場合、Android Logcatにログを出力する場合は左上にある端末が記載されている箇所(Device Selector)を選択して、Other connection optionsをクリックします。

Device SelectorのOther connection optionsを選択する

あとはIPアドレスを記載してConnectを選択すればOKです。

AndroidLogcatIPWindow

Connect to a device | Android Logcat | 1.3.2

Androidデバイス上のアプリケーションを指定する

Logcatはデバイス上で実行されている全てのアプリケーションのログが出力されてしまっているので、必要な情報を探しにくくなってしまっています。そこでツールバーに表示されているオプションを利用することで情報を絞ることができます。

Toolbar

docs.unity3d.com

それぞれの意味は公式ドキュメントを見てほしいですが、Package Selectorを利用することでログを表示する対象アプリケーションを設定できます。

  • Package Selector : 表示するAndroidデバイス上のアプリケーションを指定する
Package Selector

フィルタ

ちょっと力尽きぎみなので省略しますが、フィルタ周りも調べておくと情報を抜き出すのに有用だと思います。
docs.unity3d.com