AndroidのINSTALL_REFERRERテストでadbコマンドがうまくいかない時


AndroidのGoogleAnalyticsのCampaign計測テストで、adbコマンドを使ったときにうまくいかなかった。

公式ドキュメントによると、下記コマンドでテストができると書いている。

$ adb shell am broadcast -a com.android.vending.INSTALL_REFERRER
                     -n "com.example.gatestapp/com.google.android.gms.analytics.CampaignTrackingReceiver"
                     --es referrer "utm_source=testSource&utm_medium=testMedium&utm_term=testTerm&utm_content=testContent&utm_campaign=testCampaign"

そうすると、Logcatに次のように出力されるらしい。

Thread[GAThread,5,main]: Campaign found: utm_source=testSource&utm_medium=testMedium&utm_term=testTerm&utm_content=testContent&utm_campaign=testCampaign

しかしながら、パラメータを&でつなげると、utm_source=testSourceまでしか出てこない。
adbの最新(1.0.32)でもバグがあるようである。

以前は=と&をエンコード文字列に置き換えれば動いたが、それもなぜか動かなくなっている。

そんな場合は下記の対応でいける。
一旦adb shell am〜〜〜でまとめてやるのでなく一旦shellを起動させてからam broadcastする。

$ adb shell // 一旦adb shellを起動する
$ am broadcast -a com.android.vending.INSTALL_REFERRER
                     -n "com.example.gatestapp/com.google.android.gms.analytics.CampaignTrackingReceiver"
                     --es referrer "utm_source=testSource&utm_medium=testMedium&utm_term=testTerm&utm_content=testContent&utm_campaign=testCampaign"