Google Play servicesが使えないAndroid端末におけるFirebase SDKの使用可否状況のまとめ

#背景
Android端末でGoogle Play services (Google Play開発者サービス)を使用するにはGoogleからのライセンスが必要であり、一部ライセンスがない端末があります。その場合、GMSのSDKが使用できなくなり、かつ一部のFirebaseのSDKが使用できなくなります。

ただし、Firebaseの場合、Google Play servicesがないAndroid端末でも使用可能なSDKがあります。
今回、その使用可否状況のまとめと、使用できない場合の代替案について説明したいと思います。

#Firebase SDKの使用可否状況
Firebaseのオフィシャルサイトには、それぞれのFirebaseのSDKを使う場合にGoogle Play servicesが必要であるかどうかの記載があります。

[Dependencies of Firebase Android SDKs on Google Play services](https://firebase.google.com/docs/android/android-play-services#play-services-required-summary)

投稿時点では、FirebaseのSDKは以下の3種類に分類されています。
ただし、以下の状況はすべて**最新バージョンのSDKの状況**ですので、古いバージョンは適応しない場合があります。また、最新の情報を知りたい場合はFirebaseのドキュメントを確認したほうがいいと思います。

**1. Play services not required (9つのSDK)**
Google Play servicesがない端末でも問題なく使えます。
**例えば、HuaweiのHMS端末ではこれらのSDKは使用可能です。**
HMS端末についての説明は[こちらの記事](https://qiita.com/Kirin9000/items/76b7aca0135aa3ade517)を参考してください。

|Firebaseサービス|Library|
|:--------------:|:--------------:|
|Authentication|com.google.firebase:firebase-auth:20.0.1|       
|Cloud Firestore|com.google.firebase:firebase-firestore:22.0.0|     
|Cloud Functions|com.google.firebase:firebase-functions:19.1.0|   
|Crashlytics|com.google.firebase:firebase-crashlytics:17.3.0|  
|In-App Messaging|com.google.firebase:firebase-inappmessaging:19.1.2|       
|In-App Messaging|com.google.firebase:firebase-inappmessaging-display:19.1.2|     
|Installations service|com.google.firebase:firebase-installations:16.3.4|   
|Realtime Database|com.google.firebase:firebase-database:19.5.1| 
|Remote Config|com.google.firebase:firebase-config:20.0.1|  

**2. Play services recommended (1つのSDK)**
  Google Play servicesがない場合、一部使えない機能があります。

|Firebaseサービス|Library|
|:--------------:|:--------------:|
|Google Analytics|com.google.firebase:firebase-analytics:18.0.0| 

以下は、Firebaseのオフィシャルの説明となります。

>Firebase SDK for Google Analyticsはどのデバイスでもイベントを送信できますが、人口統計などの一部の自動インサイトは、GooglePlay開発者サービスを備えたデバイスでのみ利用できます。

つまり、カスタイマイズイベントとほとんどの自動送信イベントは問題なく送信できますが、ジオデータ関連の自動送信イベントなどの自動インサイトは送信できなくなります。

**3. Play services required (7つのSDK)**
これらのSDKを使うには、Google Play servicesが必須です。
Google Play servicesがない端末の場合、これらのSDKが動作しませんので、代替案が必要となります。

|Firebaseサービス|Library|
|:--------------:|:--------------:|
|Google AdMob|com.google.android.gms:play-services-ads:19.5.0|       
|App Indexing|com.google.firebase:firebase-appindexing:19.1.0|     
|Cloud Messaging|com.google.firebase:firebase-messaging:21.0.0|   
|Dynamic Links|com.google.firebase:firebase-dynamic-links:19.1.1|  
|ML Vision|com.google.firebase:firebase-ml-vision:24.1.0|       
|ML Custom Models|com.google.firebase:firebase-ml-model-interpreter:22.0.4|     
|Performance Monitoring|com.google.firebase:firebase-perf:19.0.10| 


#使えないSDKの場合の解決策
HMS端末の場合、「Play services required」と「Play services recommended」のSDKに関して、
Huaweiが提供している[HMS Core](https://developer.huawei.com/consumer/en/doc/overview/HMS)と[AppGallery Connect](https://developer.huawei.com/consumer/en/doc/overview/AppGallery-connect)の同等のSDKを使用することができます。
具体的には以下の表を参考してください。

|Firebaseサービス|AppGallery Connect（HMS）サービス|APIリファレンス|デモアプリ|
|:--------------:|:--------------:|:--------------:|:--------------:|
|Google Analytics|[Analytics Kit](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/introduction-0000001050745149-V5)|[Analytics Kit APIs](https://developer.huawei.com/consumer/en/doc/development/HMSCore-References-V5/android-api-analytics-overview-0000001051067140-V5)|[Analytics Kit Demo](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Examples-V5/android-sample-code-0000001050745043-V5)|
|Google AdMob|[Ads Kit](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/publisher-service-introduction-0000001050064960-V5)|[Ads Kit APIs](https://developer.huawei.com/consumer/en/doc/development/HMSCore-References-V5/term-0000001050066815-V5)|[Ads Kit Demo](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Examples-V5/sample-code-0000001050066947-V5)|
|App Indexing|-|-|-|     
|Cloud Messaging|[Push Kit](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/service-introduction-0000001050040060-V5)|[Push Kit APIs](https://developer.huawei.com/consumer/en/doc/development/HMSCore-References-V5/hms-aaid-overview-0000001050171862-V5)|[Push Kit Demo](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Examples-V5/client-sample-code-0000001051066000-V5)|  
|Dynamic Links|[App Linking](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-applinking-introduction)|[App Linking APIs](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-References/applinking-overview)|[App Linking Demo](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Examples/agc-applinking-samplecode)|  
|ML Vision, Custom Models|[ML Kit](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/service-introduction-0000001050040017-V5)|[ML Kit APIs](https://developer.huawei.com/consumer/en/doc/development/HMSCore-References-V5/android-api-overview-0000001051426068-V5)|[ML Kit Demo](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Examples-V5/sample-code-0000001050265470-V5)|       
|Performance Monitoring|[APM](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-apms-introduction)|[APM APIs](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-References/apms-overview)|[APM Demo](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Examples/agc-apms-samplecode)|

ML KitとFirebase MLの比較に関しては、以下の記事で説明されていますので合わせて確認できます。
[HMSとFirebaseの機械学習（ML Kit）の比較](https://qiita.com/Rei_2020/items/3960530fd554af96b242)