デバック方法の覚書です。
前提
- firebaseのアカウントが存在し、アクセスできる
- firebaseへのイベントやログ送信機構が実装されている
準備
Android Debug Bridge(adb)のインストール
公式資料を見ると、adbを使うので予め用意しておく。
adbに関しては、こちらを参考に。
手順
1. package_nameの確認
package_name
は、AndroidManifest.xml
のpackage部分に記述されています。
コマンド実行時に利用するので控えておきます。
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="jp.co.eversense.ninaru">
...
...
2. Android Studioのデバッグオプションの有効化
IDE経由で実機ビルドしておきます。
下記のコマンドを実行します。
# 今接続している端末 or
# 複数端末があるとエラーとなる
adb shell setprop debug.firebase.analytics.app {package_name}
確認
1. firabaseのdebug viewにアクセス
2. ビルドした端末を選択する
3. androidでいろいろと操作する
適当に操作します
4. ログが飛ぶので中身をいろいろと見てみる
トラブルシューティング
adb shell を叩いたときに error: no devices/emulators found エラーとなる
- 複数端末をつないでいる状態だと、どのデバイスに対しての命令かわからないのでエラーとなる
- 起動中のAVDをすべて停止させ、端末を一つつなぐと解決する
- あるいは、デバイスをコマンドで指定する
error: more than one device/emulator メッセージがでる
↑↑↑と同じです。
- 複数端末をつないでいる状態だと、どのデバイスに対しての命令かわからないのでエラーとなる
- 起動中のAVDをすべて停止させ、端末を一つつなぐと解決する
- あるいは、デバイスをコマンドで指定する
Firebase上に端末は表示されるがログ送信が確認できない
- Firebaseのconsole画面が異なる可能性があります(冗談ではなく、たまにあり得るので)
# デバイスのリストを確認する
$ adb devices -l
List of devices attached
8AWX10Z52 device usb:336723968X product:blueline model:Pixel_3 device:blueline transport_id:7
ZY322BTNHM device usb:336658432X product:montana_n model:Moto_G__5S_ device:montana_n transport_id:8
# -s オプションでデバイスを指定して実行する
$ adb -s 8AWX10Z52 shell setprop debug.firebase.analytics.app {package_name}
FirebaseDebugViewについて
- ときどき、パラメータは欠損することがある(Debug viewの仕様っぽい)
- そこまでリアルタイム反映ではない