8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

既存のAndroidアプリは意外と簡単にHMS対応に改修できます

Last updated at Posted at 2020-08-24

#はじめに
この前の記事では、HMS(Huawei Mobile Service)とは何なのかについて説明しました。今回は、どうやって既存のAndroidアプリを改修すればHMS端末(GMSが使用できないHuawei端末)で使えるようになるのかについて紹介したいと思います。タイトル通り、実は既存のAndroidアプリは意外と簡単にHMS対応に改修することができます。

#SDKの使用状況によるアプリの分類

前回の記事で紹介したように、HMS端末ではGMSとfirebaseのSDKが使用できません。
しかし、HMS端末のOSはAOSP(Android Open Source Project)ベースですので、Androidのネティーブコンポーネントは継続的に使用できます。
AOSPとGMSの関係についてはこちらの記事でかなり分かりやすく紹介されていますので気になる方は確認してください。
https://qiita.com/hirossyi73/items/700e1be8e2b8f472b098

また、GMS以外のサードパーティーSDKの場合、GMSに依存していなければ継続的にHMS端末で使用できます。

まとめるとこんな感じになります。
1. GMSとfirebaseのSDK:GMSのSDKは使用できませんが、FirebaseのSDKは一部使えるSDKもあります。
2. Androidのネティーブコンポーネント:継続的に使用可能
3. 3rd partyのSDK:GMSに依存していなければ使用可能

以上のSDKの使用状況に応じて、既存のAndroidアプリを以下の2種類に分けることができます。
1. GMSとfirebaseのSDKを使用していないアプリ:改修不要→そのままHMS端末で使用できます
2. それ以外のアプリ:若干の改修が必要

次に、2の改修が必要なアプリについて詳細を説明します。

2020/11追記:
Firebaseに関しては、一部使えるSDKがありますので詳しくは以下の記事にて説明しました。
Google Play servicesが使えないAndroid端末におけるFirebase SDKの使用可否状況のまとめ

#どんな改修が必要なのか

必要な改修は、GMSとfirebase関連のSDKをHMSのSDKに差し替えるか、あるいは既存のアプリにHMSのSDKを追加するかだけです。

イメージ的にはこんな感じになります。
ghsolution.png

AOSPの部分は、HMS端末で継続的に使用できますので改修が不要で、HMSのSDKさえあればアプリはHMS端末で問題なく動きますのでHMS SDKが必須となります。

以上のように、HMS版アプリを開発するときにはおもに以下の2つのソリューションがあります。

1. GMS SDKをHMS SDKに差し替える(G2H)
2. 既存アプリにHMS SDKを追加する(G+H)

個人的には2のG+Hソリューションが非常に魅力的に感じていますので、G+Hソリューションについて紹介したいと思います。

##G+Hソリューションの特徴と実現方法
G+Hソリューションの特徴としては:
Pros: 1つのパッケージで複数のプラットフォームに登録できます
Cons: パッケージのサイズが若干増えます

が挙げられます。

実現方法の例として、GoogleとHuaweiが提供しているAPIで端末のGMS/HMSの状況を判別し、それぞれの場合に該当するAPIを使用すればGMS端末とHMS端末両方で問題かく動作できるようになります。

GMSが使えるかどうかの判定方法:

GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == com.google.android.gms.common.ConnectionResult.SUCCESS

HMSた使えるかどうかの判定方法:

HuaweiApiAvailability.getInstance().isHuaweiMobileNoticeAvailable(this) == com.huawei.hms.api.ConnectionResult.SUCCESS

以上の判定方法を使用したG+Hソリューションのイメージ(GMSを優先的に使用する場合):

if(GMS avaliable){
    //元コード
}else if(HMS available){
    //HMSの場合のコード
}

この方法を採用することで、既存のAndroidアプリを若干修正することでGMS、HMS端末両方で問題なく使用できるアプリに改修できます。

#終わりに
この記事では、既存のAndroidアプリのHMS対応方法の概要を説明しました。詳細な改修方法について、今後簡単なデモアプリを用いて説明していきたいと思います。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?