[めも]Firebase Analyticsを無効にしたい時

(なぜ有効にしたい場合じゃないのか、と突っ込まれそうですが)

#Firebase Analyticsを無効にしたい場合の設定

##マニフェストで設定する場合

[Analytics の収集を無効にする]
https://firebase.google.com/support/guides/disable-analytics

収集を一時的に無効にする場合 (この設定の場合は、プログラム上で有効に変更可能)
> \<meta-data android:name="firebase_analytics_collection_enabled" android:value=false /\>

収集を完全に無効にする場合
> \<meta-data android:name="firebase_analytics_collection_deactivated" android:value=true /\>

##プログラム上で有効・無効を切り替える場合
> FirebaseAnalyticsクラスの setAnalyticsCollectionEnabled() メソッドをを呼び出します。

と、ここまではドキュメントの引用ですが・・・

#firebase_analytics_collection_deactivatedが正しく反映されなかった時期があるらしい

[Stackoverflow - Disable the Analytics service for Firebase Cloud Messaging]
(http://stackoverflow.com/questions/39327141/disable-the-analytics-service-for-firebase-cloud-messaging)

##ということで、実験してみました。(Google servicesのバージョン：9.8.0)
※10.0.0は、つい最近まで、一部のデバイスでダウンロードできない時期があったので、9.8.0で実験しています。(今回は、minSdkの確認も兼ねた実験の一部だったので、API10の実機を使用しています。)
使用ライブラリは、
play-services-base、play-services-auth、play-services-drive
のみです。

###firebase_analytics_collection_deactivated を *true* に設定した場合
```
I/FA: Collection disabled with firebase_analytics_collection_deactivated=1
```
がログに出力されます。

###firebase_analytics_collection_deactivated を *false* に設定した場合
```
V/FA: Collection enabled
V/FA: App package, google app id: (略)
```
がログに出力されます。

###firebase_analytics_collection_enabled を *false* に設定した場合
```
I/FA: Collection disabled with firebase_analytics_collection_enabled=0
```
がログに出力されます。

従って、現在は、Firebase Analyticsを無効にしたい場合は、firebase_analytics_collection_deactivatedをtrueに設定するのが正解のようです。
(または、firebase_analytics_collection_enabledをfalseに設定)
書き間違えていないか、何度も見直してしまいそうですが・・

###AppMeasurementなどが動いている？
一見すると、(ログ上では)deactivatedなどの部分は正しく動作しているように見えますが・・・
実験用に(System.exit()などで)アプリを強制停止させると、3パターンともに、
次のようなログが出力されます。
※Google servicesを使っているアプリのみの現象です。
※Firebase関連のAPIは、サーバ側で無効にしてあります。
```
I/ActivityManager: Start proc (パッケージ名) for broadcast (パッケージ名)/com.google.firebase.iid.FirebaseInstanceIdInternalReceiver:(略)
・・・
D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
・・・
D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
・・・
I/FA: App measurement is starting up, version: 9877
・・・
I/FA: To enable faster debug mode event logging run:
    adb shell setprop firebase.analytics.debug-mode (パッケージ名)
・・・
I/dalvikvm: Could not find method android.database.Cursor.getType, referenced from method com.google.android.gms.measurement.internal.(略)
・・・
V/FA: Using measurement service
V/FA: Connecting to remote service
D/FA: Connected to remote service
D/FirebaseInstanceId: background sync failed: SERVICE_NOT_AVAILABLE, retry in 60s
D/FirebaseInstanceId: background sync failed: SERVICE_NOT_AVAILABLE, retry in 30s
```

####AppMeasurementが動いていると、何か問題が？
[AppMeasurement]
https://developers.google.com/android/reference/com/google/android/gms/measurement/AppMeasurement
>  This class was deprecated.
Use FirebaseAnalytics instead. 

ということで、AppMeasurementは、FirebaseAnalyticsの一部になっているかと思います。
なので、配布地域によっては、法律やToSの内容などに配慮が必要になるかな・・と。

また、(AppMeasurement単体の問題ではないように思いますが)
SERVICE_NOT_AVAILABLEの場合に、数十秒間隔でリトライしている点も気になります。

(本当は、強制終了したはずのプロセスが、なぜ残っているのか気になって実験した・・というのは置いておいて。)

##プログラム上でFirebase Analyticsを無効に切り替える場合の問題
setAnalyticsCollectionEnabled(false)を呼びたいだけなのに・・
FirebaseAnalytics.getInstance()の部分で、WAKE_LOCKなどの
パーミッションが必要と表示されてしまいます。(ビルドは通るようです)

また、無効にするために、無効にしたいもののインスタンスを作る・・ことになるので、
マニフェストで設定する方法の方が良さそうです。

補足：
依存関係にfirebase-iidが(間接的に)入っていれば、マージ後のマニフェストに、
必要なパーミッションが追加されるかと思いますが、
FirebaseAnalytics.getInstance()のアノテーションで、
"android.permission.INTERNET", "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK" が必須となっているために発生する現象です。
なので、実害は無さそう？？

[Stackoverflow - FirebaseAnalytics.getInstance showing warning but compiles successfully]
(http://stackoverflow.com/questions/40487832/firebaseanalytics-getinstance-showing-warning-but-compiles-successfully)

#蛇足　Google開発者サービス(Google play services)がサポートする環境は、バージョン10.2.x以降、API14になるとのこと。
ちなみに、flavor間でplay-servicesのバージョンを切り替えようとすると、すごくはまります。
(バージョンがコンフリクトを起こしたり・・)
なので、早めに準備しておいた方がよさげです。

[Google Play Services - Release Notes (November 2016 - v.10.0)]
https://developers.google.com/android/guides/releases
> Android version 2.3.x (Gingerbread) Deprecation
Google Play services 10.0.x is the final release that includes full support for Android version 2.3.x (Gingerbread).