Как подружить Flutter и Huawei — настраиваем App Gallery. Часть 1

В жизни каждого мобильного разработчика настает момент, когда пора выкладывать приложение в альтернативные сторы. 

Обычно готовить приложение к публикации в таких сторах особо не нужно, но есть исключение — App Gallery.

Меня зовут Самир, я Flutter-разработчик в Surf, и сегодня я расскажу, как всё-таки подружить Huawei и Flutter.

О чем статья

В этой части статьи мы узнаем:

  • почему Huawei надо отдельно поддерживать;

  • что такое mobile или media-сервисы;

  • какие решения Huawei выпустили для Flutter;

  • как настроить приложение в консоли разработчика App Gallery.

Предыстория

Раньше деревья были большими, всё было просто и прекрасно.

Были 2 платформы — Android и iOS, и у каждого по одному основному стору. Были альтернативные, но острой необходимости использовать их не было.

Huawei штамповал телефоны, пользуясь всеми благами Google — ставил Android, Play Market — и не имел проблем.

Но в 2019 году у Huawei отрезали доступ к американской продукции — это означало не только запрет на использование Play Market и Android, но и идущих с ними рука об руку Google-сервисов.

Пришлось выкручиваться — сразу после введения санкций анонсировали Harmony OS. Это их собственная операционная система на базе Android Open Source Project. Годом раньше на международный рынок запустили App Gallery. Так вместо Googlе-сервисов (GMS) пришли Huawei Media-сервисы (HMS).

Mobile-сервисы, и почему они важны

Что такое MS, или mobile-сервисы? Это набор высокоуровневых API, которыми пользуются сторонние приложения для доступа к разным данным устройства: геолокации, работе с рекламными идентификаторами, сервисам для здоровья, авторизации, оплаты, кошелька. 

Также определенная медиасистема часто идёт вместе с базовым перечнем приложений: настройками, контактами, почтовым агрегатором, браузером, просмотром видео, магазином приложений и прочими. 

08ad28920c880226650ca1eadf5ddfad.png

У Huawei и Google эти сервисы разные. У них нет общего интерфейса, они не совместимы друг с другом, и каждую из них нужно поддерживать отдельно. 

Но! Хоть они и не совместимы друг с другом, одновременно их использовать можно. Достаточно подключить в проект зависимости для обоих сервисов и менять их флагом. 

Разумеется, вес приложения от этого вырастет. 

А если вы попробуете отправить в Google Play APK с SDK оплаты Huawei, то он не примет сборку. Так что тут рекомендуем всё-таки разделять сборки для сервисов.

Flutter для Huawei

8314c73563bcfe0e4911069c39553c4a.png

На pub.dev у команды HMS Core есть авторизованный аккаунт паблишера. В нём они выкатывают пакеты, которые используют HMS для доступа к данным устройства и пользователя. 

Там — весь перечень пакетов: от привычных нам пуш-уведомлений, геолокации и аналитики до диковинных штук — карт, входа в аккаунты Huawei, рекламы, сервиса игр. Есть даже 4 с лишним пакета с функционалом машинного обучения — распознавания текста, языка. В общем, text-to-speech. 

42ad1324aff04de63587cb21c3521911.png

App Gallery

Вот мы и подошли к самому интересному — конфигурации проекта под Huawei. Разберёмся с App Gallery.

Регистрация и команда

Для начала регистрируемся и создаём аккаунт Huawei Developer. 

Дальше всё может пойти по двум сценариям:

  1. Подключаемся к команде заказчика. 

На его стороне прошла регистрация. Нам остаётся только работать в его среде. 

Некоторые шаги из статьи можно пропустить, если они уже настроены заказчиком.

  1. Создаём собственный проект

Для этого нужно подтвердить аккаунт — заполнить специальную форму. 

Прикладываем скан паспорта, фотографию банковской карты, адрес, номер телефона и другие личные данные. 

Затем заявка должна пройти модерацию от команды Huawei Developers — наша обрабатывалась почти неделю.

7186f850328c1aaa4a2bef1d879483d9.png

Создание проекта

Для начала внутри команды нужно создать проект (если проект уже создан заказчиком, пропустите эти шаги).

Заходим во вкладку «Мои API», и там ищем большую кнопку создания проекта. Смело на неё жмём:

fb948d8ae76446a5b352248e9a09a3ac.png

Всплывает окно, куда мы вписываем название приложения и его псевдоним — уникальный идентификатор, который не может совпадать ни с одним по всему App Gallery.

971771e7497680a73fb25ae6cde486ba.png

Включение API для проекта — Huawei Developer

Теперь нужно включить API, которые мы будем использовать в приложении. Самое время перейти во вкладку «Библиотека API».

42e8c7e0f51e7bd497e1239b37097a8a.png

Тут мы видим широкий перечень API, которые можно использовать — тут не весь список, о других возможностях чуть позже.

Выбираем API, которое будем использовать для проекта. У нас это Push Kit и Location Kit.

848ef37273d364f9fc224d763af01ec3.png

На странице нужного нам API нажимаем кнопку «Включить» и подтверждаем пользовательское соглашение, если требуется.

4f9cf547191d3f54a4edf7204778c277.png

Тут мы закончили, пора переходить в App Gallery Connect. 

Важные моменты:

  • App Gallery — магазин приложения;

  • Huawei Developer — консоль разработчика. В ней мы управляем своими данными, видим свои проекты, счета на оплату, коммуникации с поддержкой и прочее;

  • App Gallery Connect — консоль магазина приложений. Тут мы управляем публикацией, настройкой API, видим отзывы на приложение, аналитику пользовательских действий и другое.

Посмотреть App Gallery Connect можно через вкладку «Службы приложения».

444912e0803c0f9ed0a80619a64a4652.png

Создание приложения

При первом открытии оказываемся на главной странице App Gallery Connect. 

Переходим во вкладку «Мои приложения» — она находится в верхней части сайта:

b0be761563353161a2e40f882ce24500.png

И встречаем пустой список. На нём нажимаем «Создать приложение»:

5a89b630307470becb10c2f093ad5d6b.png

Дальше — заполняем данные приложения. Делаем это по аналогии с другими магазинами приложений, тут не задерживаемся.

31b8c559d2ca66683823cff2d381a0d2.png857436619762912d2477c1e14ec85a33.png

Как только мы создали приложение для проекта, можем зайти в настройки проекта в AppGallery Connect. Для этого заходим в «Мои проекты»:

09bbf6941c5c546c23f2d2490da0aa79.png

После — выбираем созданный проект:

41d864f0377b997393aa99b228c3ec7c.png

При переходе получаем диалоговое окно, в котором нам предлагают ввести Bundle ID приложения. Вводим его для production-версии.

Ура, вот мы и создали приложение! Рекомендуем ещё создать отдельное приложение для debug-версий, чтобы у него тоже был доступ к API Huawei.

Создание приложения — версия для debug

Делаем это прямо из настроек проекта — нажимаем «Добавить приложение»:

45c0632b87cccf4d88143586629f06ed.png

Мы увидим чуть другую форма, в которой BundleID можно ввести сразу. Заполним это для debug-версии, и настройка приложений проекта будет практически завершена.

3117edb4d2d8347013d3453d0f8f4ac8.png

Включение API для проекта — App Gallery Connect

Осталось совсем чуть-чуть — в настройках проекта включаем нужные API (да, опять, только в другом месте), добавляем подписи для приложений и скачиваем файл конфигурации.

Чтобы включить API, в настройках проекта заходим в «Управление API».  Здесь, помимо API, которые мы видели на сайте Huawei Developer, будет несколько новых. Например, аналитика пользовательских действий. 

1d1092944b19b78667b7e9dc8cca3063.png

Ищем нужные API, нажимаем на свитчер, соглашаемся со всем и включаем.

f7ffd8bbb1f0a569e6d705f811ea2793.png3bca3db1d7b83ad0ad612130120e4368.png

Добавление отпечатка сертификата

Теперь добавляем отпечаток сертификата SHA-256.

Для этого возвращаемся во вкладку «Основная информация» и скроллим до секции «Данные приложения».

9464896cfca7c4d436dc9d9c402eec22.png

Забавно: до недавнего времени кнопка »?» вела на документацию. Сейчас — ведёт на ошибку 404. 

Проблема с исчезновением документации — частая история у Huawei. Например, за одну неделю работы с App Gallery, когда мы открывали документацию по использованию определённого API, гиперссылки переставали работать один за другим.

Для добавления отпечатка сертификата нужен сам сертификат. Если у нас уже был сертификат для сборок Android-приложений, можно переиспользовать его.

Открываем Android Studio.

8a5a5b253308de7e8c74a72947ef3dae.png

В окне создания билда в форме выбора сертификата нажимаем «Create new…»:

c09e6585a028a08dbb004193d30ac80f.png

Вводим валидные данные для сертификата, запоминаем оба пароля и название сертификата, и сохраняем в расширении .jks. Сохранить лучше в проекте, потому что этот сертификат нам ещё понадобится для сборки и отладки приложения.

6a899596ff4690d32449946f13327dd1.png

Дальше нам будет нужна Java на устройстве, поскольку нам понадобится keytool.

Вводим команду, где вставляем название сертификата и оба пароля, и получаем ключ SHA-256.

942e6edeaeeda0880a28acc2e797194d.png93c6a0f6e5b3c0ca16902078e0e803a4.png

Идем с SHA ключом обратно в App Gallery Connect и вставляем ключ в поле ввода.

Поздравляю, мы полностью настроили консоль разработчика, включили нужные свитчеры и заполнили необходимые данные!

Осталось скачать файл agconnect-services.json и вернуться в Android Studio.

1686a77b1604b0f4ec57272815f59d9b.png

Вот мы и настроили наше приложение в App Gallery Connect!  

В следующей части расскажем, как правильно сконфигурировать Flutter-проект.

Больше полезного про Flutter — в Telegram-канале Surf Flutter Team. 

Кейсы, лучшие практики, новости и вакансии в команду Flutter Surf в одном месте. Присоединяйтесь!

© Habrahabr.ru