Отдельное управление библиотеками HMS и GMS в вашем Android-приложении может со временем сделать его более сложным. Поэтому мы поговорим о том, как легко выйти из этой ситуации.
Вступление
Здравствуйте, дорогие Android-разработчики, сегодня я расскажу вам об использовании библиотек HMS и GMS в одной кодовой базе. Также в качестве примера мы рассмотрим использование Google Maps и Huawei Map Kit в одном проекте. Если вы готовы, давайте начнем!
Прежде всего, нам нужно добавить зависимости в наш проект.
Затем нам нужно создать связанные функции, которые проверяют, активны ли услуги GMS и HMS на нашем телефоне.
Проверки
Проверяем, доступны ли Google Services на нашем телефоне.
Проверяем, доступны ли Huawei Services на нашем телефоне.
По значениям true и false, возвращаемым из вышеуказанных функций, мы можем решить, какие сервисы будут работать на нашем телефоне, а какие нет. Теперь мы попробуем наши функции только на телефонах с сервисами Google или только с сервисами Huawei.
Как видно из приведенных примеров, мы можем выполнять операции с нашими соответствующими функциями в зависимости от того, какая служба активна или нет на телефоне в данный момент.
Интеграция
Когда мы выполним соответствующие проверки, мы сможем добавить Google Maps и Huawei Map Kit в наш проект. Давайте сначала подготовим XML-сторону.
Затем мы добавим наш OnMapReadyCallback для Google Maps и Huawei Map в наш класс в соответствующей Activity. Кроме того, мы должны добавить наши функции onMapReady для двух картографических сервисов в наш класс.
Наконец, вы можете использовать сервис, необходимый вам в вашем проекте, в зависимости от рабочего состояния соответствующих сервисов Google и Huawei на вашем телефоне.
Теперь давайте посмотрим на результаты. Сначала попробуем наше приложение на телефоне Pixel 3 с использованием только сервисов Google. Позже мы также попробуем его на телефоне P40 Lite, который работает только с сервисами Huawei.
Ключевые моменты
- Не забудьте создать отдельную логику для телефонов, использующих сервисы Huawei и Google.
- Не забудьте активировать консоль для Google Maps и Huawei Maps (Google Console для сервиса Google, App Gallery Connect для Huawei).
- Не забудьте поместить API-ключ для Google Maps в AndroidManifest. Аналогично, не забудьте вызвать функцию MapsInitializer.setApiKey(«YOUR_API_KEY») в Huawei Map Kit.
- Для Huawei Map Kit версии выше ‘com.huawei.hms:maps:5.0.5.301’ могут иметь ошибку map not loading. Убедитесь, что вы правильно выбрали версию или используйте эту версию.
- При работе со значениями Google Map и Huawei Map не забывайте импортировать значения из соответствующего класса для соответствующего сервиса. Потому что большинство имен значений и функций в этих двух сервисах похожи.
- Не забывайте добавлять значения SHA1 и SHA-256 вашего приложения в консоли сервисов Google и Huawei. Кроме того, создайте SHA1 и SHA-256 снова для релиза, чтобы сервисы правильно работали в релиз-пакетах (выполните gradle signinReport из терминала Android Studio для генерации SHA1 и SHA-256).
- Убедитесь, что к проекту прикреплены самые актуальные версии JSON-файлов сервисов, которые вы загрузите из консоли.
Заключение
Возможность подтверждать доступность сервисов Google и Huawei для конкретных телефонов привела к значительному скачку в нашей производительности. Эти функции обеспечивают гармоничную интеграцию, позволяя нам без труда использовать соответствующие сервисы с помощью единой кодовой базы. Более того, они дают нам свободу включать и изменять использование сервисов Google и Huawei в нашем приложении по мере необходимости.