- Huawei HarmonyOS 2.0 – впечатления от измененного Android
- Жизнь без AppStore и Google Play: работаем с Huawei Mobile Services и AppGallery
- С чего начать?
- Внедряем HMS сервисы в проект
- Подводные камни
- Product Flavors
- Тестируем и отлаживаем приложение
- Публикуем приложение в AppGallery
- Основные причины отказа в публикации
- Итоги
- Полезные ссылки
Huawei HarmonyOS 2.0 – впечатления от измененного Android
В новейшей истории до Huawei и санкций, наложенных на компанию, еще не было случая, когда нужно в спешном порядке избавляться от текущей операционной системы и создавать что-то свое. С нуля создать современную мобильную ОС невозможно, поэтому в Huawei взяли за основу открытый код Android без сервисов Google и начали поверх него ваять свой взгляд на мобильные устройства. Неразбериха, которая возникла вокруг такого подхода, существует как внутри Huawei, так тем более и снаружи. Вначале возник Android с HMS (Huawei Mobile Services), это была замена GMS. Как некий прекрасный замок на горе, нас манила операционная система HarmonyOS (именно так, слитно, поскольку это торговый знак и он зарегистрирован именно таким образом). Первоначально предполагалось, что HarmonyOS станет облачной операционной системой, когда устройства выступают тонким клиентом, а все вычисления происходят в облаке. Подход понятный и правильный, но рынок явно оказался к нему не готов. Поэтому в начале 2020 года без излишнего шума HarmonyOS стали называть обычный Android с сервисами HMS и рядом будущих наработок, которые должны отличать эту систему от версии Android с GMS-сервисами.
Не должно быть сомнений, что Huawei из-за санкций сильно отбросили назад, тот же HMS и приложения сторонних разработчиков для него первоначально сильно уступали Play Store, но титаническими усилиями в Huawei смогли сократить разрыв. Он все еще существует, но, как ни странно, HMS можно пользоваться, и продажи смартфонов на российском рынке это подтверждают. До момента продажи Honor перспективы HMS были более-менее хорошими, так как имелась большая база смартфонов, на которой эта система существует. Но после перехода Honor обратно на Android c GMS-сервисами этот момент полностью изменился, теперь HMS существует для намного меньшего числа устройств, и их не станет заметно больше в обозримом будущем. Что не может не сказаться на числе разработчиков и на том, как они поддерживают свои приложения. В Huawei вовсе не собираются отказываться от HMS, адаптации приложений, и это означает, что разработчиков будут привлекать деньгами, другого выхода для Huawei просто не существует.
Преуменьшить сложность ситуации для Huawei невозможно, в данный момент компания пытается создать вторую версию HarmonyOS, хотя можно смело сказать, что это причесанная первая версия, в которой наладили работу отдельных компонентов, сделали систему единой и убрали раздражающие мелочи. В качестве идеи предполагается, что HarmonyOS должна бесшовно работать с различными устройствами, например, проложив маршрут на смартфоне, вы тут же его получите на системе в машине или на умных часах. Это идея, о которой рассказывают инженеры, но на практике она сегодня не реализована, или данная реализация не отличается от той, что мы видим на Android. Это вновь обещание будущего, некой экосистемы, которая должна быть единой и неделимой. Например, предполагается, что все устройства будут объединены между собой некой виртуальной шиной, то есть вы сможете использовать не только распознавание лица на смартфоне, но и добавить защиту голосом, который будет распознаваться вашими наушниками, подключенными к смартфону. Не очень ясно, зачем это нужно, ведь микрофон есть и в смартфоне, но предполагается, что ресурсы разных устройств будут объединены в одно суперустройство. Итого мы получаем историю про разные сценарии использования, но это снова некая морковка для гиков, которая относится к будущему, а не к настоящему.
У Huawei в настоящий момент нет доступа к рынку компонентов, объем доступных процессоров для компании сильно ограничен. Как результат, она не может выпускать, как раньше, большие тиражи устройств, этим объясняется то, что первым устройством с HarmonyOS 2.0 становится планшет MatePad Pro 2.
Нишевое устройство с высокой стоимостью, минимальным объемом продаж. Несмотря на бравурные речи, помпезную презентацию по всему миру, нужно сказать, что Huawei не удалось избавиться от Android и вряд ли получится сделать это в ближайшее время. Смешно, но основной план спасения продаж компания видит в сотрудничестве с производителями Android-смартфонов, на которые параллельно будет устанавливаться HarmonyOS, а пользователь сможет переключаться при загрузке между системами. Ход забавный, но нарушает соглашения производителей с Google, как результат, он явно не станет массовым – до первых претензий Google и требования убрать HarmonyOS с GMS-устройств.
Попробовав HarmonyOS 2.0 на планшете, могу сказать, что родовая боль от отсутствия Android очень заметна и это проявляется в том, что Huawei, как и многие китайские компании, скопировала интерфейс iOS, словно в пику Google. Посмотрите на иконку настроек, она пришла из iOS. Сказать, что это полная копия, значит не сказать ничего. Да и другие иконки навевают сходство.
Для китайских компаний копирование – нормальный шаг, но здесь оно сделано осознанно, и управление с помощью жестов полностью напоминает таковое на iOS (да и на Android сегодня, везде оно плюс-минус одинаковое).
Источник
Жизнь без AppStore и Google Play: работаем с Huawei Mobile Services и AppGallery
С конца 2019 Huawei поставляет Android-смартфоны без сервисов Google, в том числе без привычного всем магазина приложений Google Play. В качестве альтернативы китайская компания предлагает собственные разработки — Huawei Mobile Services (HMS), а также магазин AppGallery. В этом тексте я — разработчик Технократии Алина Саетова — расскажу, как с этим жить и работать.
В статье мы рассмотрим:
начало работы c Huawei-системой
внедрение Huawei Mobile Services в приложение
отладка и тестирование на удаленных устройствах Huawei
публикация в AppGallery
Видеоверсию статьи смотрите здесь на канале Технократии.
С чего начать?
Чтобы взаимодействовать с Huawei-системой, нужно завести Huawei ID. Это аналог google-аккаунта, с помощью которого предоставляется доступ к сервисам системы. Далее нужно зарегистрировать аккаунт разработчика: индивидуальный или корпоративный.
Индивидуальному разработчику нужно ввести свои ФИО, адрес, телефон, почту. В отличие от регистрации аккаунта разработчика в Google Play, нужны также сканы паспорта и банковской карты. Да-да, документы требуются для удостоверения личности. Huawei обещает удалить их после регистрации.
Для регистрации корпоративного аккаунта требуются данные компании, либо DUNS number (международный идентификатор юридических лиц), либо бизнес лицензия.
Ждем одобрения аккаунта. За 1-2 дня Huawei обещают проверить наши данные. После этого можно подключать приложение к HMS. Для этого заходим в консоль AppGallery Connect.
Создаем проект, а в нем добавляем приложение
Обращаем внимание, что для приложения, в котором используются HMS, название пакета должно оканчиваться на “.huawei”.
2.Помещаем конфигурационный файл agconnect-services.json в корневую папку приложения. Также сохраняем хэш SHA-256. Он потребуется для аутентификации приложения, когда оно попытается получить доступ к службам HMS Core.
Примечание. Для того, чтобы получить SHA-256, можно выполнить команду в терминале, подставив необходимые данные из вашего keystore:
Для работы некоторых сервисов нужно указать место хранения данных:
3.Добавляем зависимости в проект Android Studio.В build.gradle на уровне проекта:
В build.gradle в модуле app:
4.Для предотвращения обфускации AppGallery Connect сервисов, Huawei рекомендует прописать следующие правила в файле proguard-rules.pro на уровне модуля app:
Первоначальная настройка проекта с Huawei Mobile Services завершена.
Внедряем HMS сервисы в проект
Почти на каждый сервис Google у Huawei есть альтернатива:
Push Kit. Отправка пуш-уведомлений пользователям.
Auth Service. В дополнение к привычным способам аутентификации здесь присутствует вход по Huawei ID.
Crash Service. Cервис для отслеживания крашей приложения.
Cloud Storage, Cloud DB. Хранение различных файлов и база данных.
Location Kit. Получение местоположения пользователя.
Analytics Kit. Анализ статистических данных приложения.
In-App Purchases. Совершение покупок в приложении.
Cloud Testing, Cloud Debugging. Тестирование приложений на удаленных устройствах Huawei.
Этот список можно продолжать долго — у Huawei довольно обширный перечень сервисов. Как же подключить их в наш проект?
Прежде всего, нам нужно определиться, как мы будем внедрять сервисы. Есть несколько вариантов:
Полностью заменяем GMS сервисы на HMS сервисы
Делаем комбинацию GMS и HMS сервисов в одном проекте
В этом деле нам пригодится плагин HMS Toolkit. Он поможет интегрировать HMS Core с минимальными затратами и высокой эффективностью. К сожалению, HMS Toolkit поддерживает конвертацию не всех сервисов, и лучше заранее уточнить, сможет ли он перенести работу ваших.
Нам нужен инструмент Convertor. Он проанализирует проект на наличие GMS сервисов и покажет места, где требуется заменить код с GMS на HMS.
В меню выбираем HMS > Convertor > New Conversion:
2.В появившемся окошке указываем директорию, где создастся бэкап проекта до конвертации.
3.Здесь плагин представляет результаты анализа проекта: какие GMS сервисы у нас содержатся и какие из них конвертируемые. Также нам предлагается проверить sdk version для соответствия требованиям HMS.
На этом шаге мы должны выбрать стратегию конвертации:
Add HMS API. На основе существующих в проекте GMS APIs генерируется XMS adapter (как дополнительный модуль в проекте). Он представляет собой прослойку между нашим кодом и непосредственно вызовом сервисов. Это такие Extension-классы, в которых лежит код, поддерживающий HMS и GMS сервисы одновременно. В runtime определяется поддерживаемый девайсом вид сервисов и вызываются соответствующие методы.
To HMS API – полностью заменяются GMS APIs на HMS APIs.
4.После анализа проекта, мы видим список мест в коде, где необходима конвертация.
По клику на каждый пункт произойдет навигация в файл, где будет предложена конвертация:
Если был выбран способ Add HMS API, мы можем посмотреть на сгенерированный xms адаптер. Вот так, например, выглядит метод из класса ExtensionUser:
А вот размер xms адаптер модуля при использовании лишь одного API с аутентификацией пользователя:
По итогу, APK нашего приложения увеличивается (old size — это APK приложения с only GMS, new size — APK с GMS и HMS одновременно):
Не сказать, что разница велика, но если в приложении будет использоваться несколько API?
Подводные камни
В политике Google Play есть замечание:
“Any existing app that is currently using an alternative billing system will need to remove it to comply with this update. For those apps, we are offering an extended grace period until September 30, 2021 to make any required changes. New apps submitted after January 20, 2021 will need to be in compliance.”
Что это значит для нас? Теперь, если приложение одновременно поддерживает HMS и GMS сервисы, и в нем есть In-App Purchases, то Google Play не допустит его публикации, а существующим приложениям придется удалить этот функционал.В итоге, если был выбран первый способ конвертации (Add HMS API), мы имеем:
Большое количество сгенерированных классов.
Увеличенный размер APK приложения.
Невозможность публикации приложения в Google Play, если в нем есть In-App Purchases.
Неполную поддержку одновременной работы HMS & GMS для некоторых сервисов.
Решение: Более привлекательным вариантом кажется второй способ конвертации — простая замена GMS APIs на HMS APIs. Но вместе с этим используем product flavors, чтобы получать сборки приложения отдельно для Google Play и AppGallery.
Product Flavors
Создадим два product flavor — “hms” и “gms”:
Общий код будет располагаться в директории main/
Укажем sourceSets в файлах build.gradle модулей (только там, где необходимо разделение на hms и gms)
Код с GMS имплементацией будет в папке gms/, а с HMS соответственно в hms/
У hms flavor’a указываем applicationIdSuffix = ‘.huawei’
Если же нет необходимости заводить целые файлы отдельно для каждого flavor’a, то можно проверять текущий flavor через BuildConfig.FLAVOR
По умолчанию, Android Studio заводит sourceSet main, в котором содержатся общие файлы с кодом. Создаем папки для каждого flavor’a:
New -> Folder -> Выбираем нужный тип папки:
Затем в build.gradle того модуля, где мы создали папку, должен автоматически вставиться следующий код (например, если мы выбрали hms):
Теперь Gradle будет включать в сборку файлы, соответствующие выбранному flavor’у. Важно, чтобы файлы в этих директориях имели одинаковое название и лежали в пакетах с одним и тем же названием.
Пример. Мы используем Auth API. У нас будет абстракция — интерфейс AuthRepository, хранящийся в main/, а его имплементации для разных сервисов лежат в gms/ и hms/ директориях — тогда в сборку, например, для HMS, попадет именно имплементация с huawei сервисами.
Если проект многомодульный, то в каждом модуле необходимо прописать flavor’ы и при необходимости source sets. Код с flavor’ами можно вынести в отдельный файл.
Создадем .gradle файл в корневой папке проекта, назовем его flavors.gradle:
Помимо самих flavor’ов, в экстеншене flavorConfig лежит код с циклом по flavor’ам — там будет определяться app модуль, которому присваивается applicationIdSuffix.
Затем в каждом модуле прописываем следующее:
Для использования подходящих плагинов во время процесса компиляции можем добавлять такие if-else конструкции:
Для каждого flavor’а мы можем включать dependencies, необходимые только ему. Перед implementation прописываем его название:
Тестируем и отлаживаем приложение
После того, как мы внедрили Huawei сервисы в приложение, нам нужно протестировать его работоспособность.
У Huawei есть облачная платформа DigiX Lab, в которой представлены 2 сервиса.
С помощью сервиса облачного тестирования проверяем совместимость, стабильность, производительность и энергопотребление приложения на удаленных устройствах Huawei. Краткое описание тестов можно увидеть на картинке.
По окончании каждого теста доступен подробный отчет. Можно узнать о сбоях, ANR, утечках ресурсов, также увидеть загрузку процессора, использование памяти и многое другое. Плюсом будут доступны скриншоты, которые снимаются во время тестирования и журналы Logcat.
Тесты можно запускать либо с помощью плагина в Android Studio:
Либо в консоли AppGallery, выгрузив туда свой APK:
Служба облачной отладки решает проблему отсутствия реальных устройств Huawei. Предоставляется список удаленных устройств, а разовый сеанс работы до 2 часов. Сервис дает 24 часа работы бесплатно после подтверждения личности. Можно подавать заявки на продление срока действия неограниченное количество раз. Отладка также доступна из Android Studio и консоли.
Публикуем приложение в AppGallery
После внедрения сервисов и успешного тестирования приложения, мы готовы публиковаться в AppGallery.
1.Переходим в AppGallery Connect и заполняем данные:
2.Грузим иконку приложения и скриншоты. Есть возможность прикрепить видео.
3.Указываем страны/регионы для публикации и грузим APK приложения. Кроме того, нужно загрузить подпись приложения.
4.Отмечаем способ покупок в приложении и рейтинг.
5.Грузим политику конфиденциальности (обязательно) и предоставляем данные тестового аккаунта, если это необходимо. Указываем дату публикации.
6.Нажимаем кнопочку “Отправить на проверку” и ждем! Проверка по регламенту занимает около 3-5 дней.
Основные причины отказа в публикации
Политика конфиденциальности не соответствует стандарту
Отсутствует ссылка на политику конфиденциальности.
Ссылка на политику конфиденциальности недоступна.
Ссылка на политику конфиденциальности ведет на официальный сайт компании, на котором нет ссылки на политику конфиденциальности.
Указанный статус Гонконга и Макао не соответствует стандарту.Гонконг и Макао не могут быть указаны как страны на странице выбора региона. Китай очень трепетно относится к этому. Пример:
3.Приведены ссылки на сторонние магазины приложений
Функция для оценки и написания отзыва в приложении содержит ссылку на сторонние магазины приложений без ссылки на AppGallery
Итоги
Huawei выстроили удобный процесс адаптации приложения под свои сервисы. Максимально безболезненный переход к HMS, тестирование и отладка на удаленных устройствах, а также знакомый процесс публикации приложения значительно облегчат жизнь разработчику. И пока что в AppGallery не такая серьезная конкуренция как в других магазинах приложений, самое время присоединяться к Huawei сообществу.
Полезные ссылки
Подписывайтесь на наш Telegram-канал «Голос Технократии», где мы пишем о новостях из мира ИТ и высказываем свое мнение о важных событиях.
Источник