【GA4】Androidアプリ検証の準備（Windows 11）

Windows環境にてAndroidアプリのGA4計測を検証するための準備方法をスクリーンショット付きでご紹介します。

## 0. Androidアプリの準備
Androidアプリを用意して、Firebase SDKを導入＆GA4アプリストリームと連携する。 
詳しくは以下記事の
- Android プロジェクトに Firebase SDKを導入
- FirebaseプロジェクトをGoogleアナリティクスに接続

を参照。

https://qiita.com/aqril_1132/items/5997fc611ee227e7a567


## 1. Android Studioのインストール
公式ガイドの案内通りにWindowsにAndroid Studioをダウンロード＆インストール。Android Studioをインストールしておくと細かいデバッグ時や検証用アプリを作成するときなど後々便利。インストールに結構な時間が掛かります。
https://developer.android.com/studio/install
## 2. PATHを通す
1. 自分のユーザー名のフォルダまで進んでAppDataフォルダを開く。AppDataファイルは隠しファイルなので予め「表示」メニューから見れるようにしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/28ca74ad-1f6d-b52f-518b-6783619efe1b.png)


2. エクスプローラでadb.exeがある箇所まで進んでファイルパスをコピー
Local > Android > Sdk > platform-tools と進みadb.exeファイルがあることを確認したらファイルパスをコピー。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/1206a4fe-3ea7-e1b7-423a-01a91bf32287.png)
以下のような文字列になっているハズ
`C:\Users\{ユーザー名}\AppData\Local\Android\Sdk\platform-tools`
3. <kbd>Windows</kbd> + <kbd>X</kbd> 同時押しでショートカットメニュー表示 -> 「システム」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/015c64f6-c916-d38c-0a8d-209673e1e911.png)
4. 表示された画面の「システムの詳細設定」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/15933cea-5b50-405d-1afa-c4a94c5c3885.png)
5. 表示されたシステムのプロパティ画面の「環境変数」ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/71d821ab-fb96-4534-b06c-1725e851ae35.png)
6. 「システム環境変数」の「Path」行をダブルクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/f7926bd5-4d88-4ffb-3fbd-545f3039741a.png)
7. 「新規」をクリックして先ほどのファイルパスを入力してEnter。「OK」を押して環境変数名の編集ウィンドウを閉じる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/60256cc5-26cc-7be5-aabe-83cd41b42380.png)
8. 「OK」をクリックして環境変数のウィンドウを閉じる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/70561fad-de8c-fa95-09ef-6c9636eda5e2.png)
9. コマンドプロンプトを起動（<kbd>Windows</kbd>キーを押して`cmd`と入力してEnterを叩けばすれば簡単に呼び出せる）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/cab1d847-d5a2-3014-bfd2-e096c7ad2ce0.png)
10. `adb`と入力してEnterを叩いたとき、下記スクリーンショットのように長いメッセージが表示されれば成功
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/5a5ef05a-af8c-ca2d-50f4-e9b1f94719f1.png)
ここまでの手順がうまくいっていないときは`adb`と入力してEnterを叩いたときに以下のようなエラーメッセージが出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/8972a3e2-c616-1551-3902-b80328d7dedd.png)

## 3. Android端末側の準備
PC上でAndroid端末をエミュレートして動かす仮想デバイスかAndroid端末の実機かどちらかを利用します。この後の操作に影響するので一度にPCと繋げて使用するAndroid端末は1つだけにします。（実機と仮想デバイス両方も避ける）

### 実機上でアプリを動かして検証する場合
※端末によって微妙に操作が異なる場合があります

まずはテストアプリをインストールしたAndroid実機端末PCをUSBケーブルで繋いだ上でUSBデバッグモードを有効化します。
USBデバッグモードは設定の「開発者向けオプション」メニューから有効化できますが、デフォルトでは「開発者向けオプション」が隠れているため、以下リンク先の方法で使えるようにします。

https://www.orefolder.net/2022/08/developer-option

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/37298f9f-cb07-8f94-5fda-64a735fe3b0d.png)
USBデバッグモードを有効化すると許可を求めるウィンドウが出るので「許可」します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/dff97cd1-8cbf-707b-ae0c-1df85d7d3601.png)

PCのコマンドプロンプトで`adb devices`と入力して<kbd>Enter</kbd>キーを叩いたとき、以下スクリーンショットのように端末の隣に`device`と書かれた表示になればUSBデバッグが無事有効化されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/a6061d6c-1fc0-b377-c48d-4cf10fa69add.png)
`unauthorized`と出た場合は端末側でUSBデバッグモードをオフ・再度オンしてUSBデバッグをもう一度許可させます。過去にUSBデバッグを許可した端末の場合「USBデバッグ許可の取り消し」をした上で実行することでうまくいく場合があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/bd94a287-ae1e-0aff-ed5d-a3276939db6e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/2aa0f91c-3983-084e-61bf-489ec50b2f7e.png)

### 仮想デバイスを使用して検証する場合
Android実機がなくてもアプリ検証は可能です。しかしPCのスペックが相当ないと固まったり落ちたりするので使い辛く、できれば実機でテストすることをお勧めします。
PCでAndroid Studioアプリを起動して「More Actions」>「Virtual Device Manager」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/1e1ce3d6-70d3-0d21-db0b-711f9c5628a3.png)
あるいは上部メニューのToolsから「Device Manager」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/98c40150-4286-5c9f-4c4d-c99a080f72bc.png)


検証にあたり既に有効化されている仮想デバイスで実行して問題ないならリスト内の「▶」をクリックして仮想デバイスをPC上で起動。無い場合はCreate deviceからリストに追加した後に「▶」をクリックして起動。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/cd7bd64d-325a-b190-360d-e3879400f1e1.png)
仮想デバイスでは[Android Studioでビルドしたアプリを実行](https://developer.android.com/studio/run?hl=ja)できることは勿論、仮想デバイスのウィンドウにapkファイルをドラッグアンドドロップすることでもアプリインストールが可能です。仮想デバイスのUSBデバッグは最初から有効化されているのでコマンドプロンプトから`adb devices`と入力すれば最初から`devices`と出力されるハズです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/bc28b0c5-4c7e-eb2b-990f-4477e624f0ef.png)


## 4. アプリのデバッグモードの有効化
PCにUSBデバッグが有効化されたAndroid端末を繋げた状態（あるいは仮想デバイスを有効化した状態）でコマンドプロンプトで以下コマンドを入力してEnterを叩けばアプリのデバッグモードが有効化されます。
```
adb shell setprop debug.firebase.analytics.app [ここにアプリケーションのパッケージ名] 
```
たとえばアプリのパッケージ名が`com.example.mytestapplication`の場合は以下のようになります。（パッケージ名が分からないときの方法もこのあと解説します）
```
adb shell setprop debug.firebase.analytics.app com.example.mytestapplication
```
https://firebase.google.com/docs/analytics/debugview#enable_debug_mode

以上の操作を正しく実行すればGA4のDebugViewでアプリ上で発生したイベントを確認することができるようになります。

### アプリのパッケージ名が分からないとき
テストしたいアプリを起動した状態でコマンドプロンプトで以下コマンドを入力してEnter
```
adb shell dumpsys activity activities | findstr "mResumedActivity mFocusedApp"
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/b1c3d163-fca1-ac67-e336-733d10b1e712.png)

このスクリーンショットでは起動しているアプリのパッケージ名が`com.example.mytestapplication`であることが分かります。

## GA4 DebugViewの確認
テストしたいアプリを立ち上げて何スクリーンか閲覧した後、GA4で目的のGA4プロパティを開いた上で「DebugView」を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/50274636-8b6f-09ae-1631-73c24ddb67b7.png)
「デバッグに使用するデバイス」のリストから自分がテストに使っている端末と思われるものを選択してGA4イベントのデバッグを開始します。ここまでうまくいけば端末からUSBケーブルを抜いてもGA4 DebugViewにイベント情報が出力され続けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/f56d2961-a4f2-2ec2-f11e-1554b48a9adf.png)
### 自分の端末がGA4 DebugViewに表示されないときは…
- GA4のページを更新（何回か更新することでリストに表示されることがよくあります）
- アプリと今見ているGA4プロパティのデータストリームのパッケージ名が一致することを確認（実はテスト用アプリと本番用アプリで別のGA4プロパティに紐づいている等）
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/3e81e5c8-b195-90e1-9d76-d11b3dcc3299.png)
- `adb shell setprop `のコマンドで入力したパッケージ名が合っているか確認してもう一度実行
- すべてを諦めて翌日もう一度実行（何故か何をやっても上手くいかない時があります）