Недавно Google прекратил сотрудничество с Huawei. Это привело к тому, что Huawei на своих новых девайсах уже не может использовать сервисы Google (магазин приложений, геолокация, карты, пуши, аналитика etc), что для пользователя превращает девайс в кирпич. Если бы это не была китайская компания, то, скорее всего, на этом её бизнес, связанный с Android, просто бы прекратился. Но компания китайская, большая и они пошли по пути импортозамещения, в кратчайшие сроки реализовав функционал, аналогичный Google сервисам.
В этой серии статей мы хотим поделиться своим опытом использования Huawei Mobile Services в уже готовом приложении, использующем Google Mobile Services для аналитики (Firebase Analytics), карт и геолокации. Текста получилось довольно много и о сильно разных сервисах, засим статей будет несколько. Начнём мы с основ — регистрации аккаунта разработчика и базовых вещей в коде.
- Создаём аккаунт разработчика, подключаем зависимости, подготавливаем код к внедрению. ← вы тут
- Встраиваем Huawei Analytics. тык
- Используем геолокацию от Huawei.
- Huawei maps. Используем вместо Google maps для AppGallery.
Если вам интересно узнать технических подробностей, посмотреть код и узнать про подводные камни — добро пожаловать под кат!
Как стать разработчиком Honor и Huawei
Что нужно для успешного внедрения
Всё было бы просто, если бы приложение писалось с нуля и не нужно было бы поддерживать как Google так и Huawei. Но мы живём в реальном мире и без сложностей не обойтись. Однако дело сильно упростится, если соблюдён ряд условий.
Но перед перечислением условий надо составить ТЗ. Оно у нас получилось такое:
- Нам нужно получить 2 версии APK — одну для Google Play, с библиотеками от Google, другую — для AppGallery, с библиотеками от Huawei.
- В приложении уже используется Firebase Analytics. Надо его заменить на аналог от Huawei.
- Есть определение местоположения пользователя. Аналогично заменяем на аналог.
- Есть карты. Нужно также заменить на аналог, по максимуму сохранив функционал, т.к. в реализации от Huawei некоторые вещи ещё не сделаны.
А вот что сильно сократит прикладываемые усилия:
- Код должен быть написан хорошо. И быть без багов (хотя это само собой разумеется – зачем код с багами писать?). Под хорошо будем подразумевать более-менее стандартную архитектуру, мимикрирующую под Clean.
- Если код из Google библиотек размазан ровным слоем по всему проекту, то у меня для вас плохие новости. Например у вас может не быть абстракции над аналитикой и/или над полученными от Google координатами. В этом случае придётся её завести, чтобы почистить код от импортов гугловых классов, которые будут недоступны, когда мы уберём их из сборки.
- Использование DI. Очень упрощает абстрагирование над аналитикой и геолокацией. Используем интерфейсы, через DI передавая нужную реализацию.
- Карты не слишком сильно кастомизированы. В частности, основная сложность будет с абстрагированием над кластеризацией маркеров.
Подготовка к внедрению
Как и в случае с Google, надо зарегистрироваться, создать проект приложения, получить файл конфигурации.
Как стать разрабом Huawei P Smart Z — Как зайти в меню разработчика
- Регистрируемся на https://developer.huawei.com. Тут понадобится паспорт/права + пластиковая карта. День-два вас будут проверять, потом аккаунт заработает. Если вдруг что-то пойдёт не так (забудете что-то указать или укажете неправильно) – вам напишут и подробно объяснят. После общения с Google Play всё выглядит очень круто – русскоязычная техподдержка отвечает быстро и по делу.
- Принимаем всякие соглашения об обработке персональных данных. Внимательно читая, конечно же)
- Создаём проект приложения, указывая пакет (он же ApplicationId).
- Если вам нужно ещё и встроенные покупки реализовать — то надо: а) Заполнить данные банковского счёта б) Распечатать и заполнить заявление о трансграничной передаче персональных данных в КНР в) Отправить скан оного вместе с данными из пункта а г) Отправить заявление из пункта б по почте в Москву. Когда заявление дойдёт — вам придёт e-mail и останется только активировать сервис в настройках проекта. На почте бывают накладки — возможно, придётся подождать. Я пару недель ждал, потом позвонил ответственному за это в Huawei — уверили, что проблему решат. И решили. На русском тоже всё общение — очень круто)
- Включаем сервис аналитики. В отличие от геолокации и карт, включённых по умолчанию, это нужно сделать вручную.
- Добавляем SHA-256 для всех ключей, которыми будет подписано приложение. Т.е. дебажные ключи и релизный ключ.
- Скачиваем аналог google-services.json , в случае Huawei называемый agconnect-services.json
- Создаём разные flavors для Google и Huawei. Наконец-то можно перейти к коду:
В build.gradle (module app) создаём flavors и указываем, что в папках src/google/kotlin , src/google/res , src/huawei/kotlin , src/huawei/res также находиться будет наш код.
android < . sourceSets < google.java.srcDirs += ‘src/google/kotlin’ google.res.srcDirs += ‘src/google/res’ huawei.java.srcDirs += ‘src/huawei/kotlin’ huawei.res.srcDirs += ‘src/huawei/res’ >flavorDimensions «store» productFlavors < google < dimension «store» >huawei < dimension «store» >> >
Также создаём папки src/huaweiDebug и src/huaweiRelease . В них помещаем наш файл конфигурации agconnect-services.json
И добавляем apply plugin: ‘com.huawei.agconnect’ в конец build.gradle (module app).
И наконец, добавляем в build.gradle проекта:
buildscript < . repositories < . maven > dependencies < . classpath ‘com.huawei.agconnect:agcp:1.2.1.301’ >> allprojects < repositories < . maven > >
В следующей части – встраиваем аналитику
Теперь мы полностью готовы. У нас есть 2 разных варианта сборки – для Huawei и Google. У нас подключены необходимые зависимости. Созданы папки, где будет наш код.
Создан аккаунт разработчика и выполнены необходимые действия по созданию проекта приложения. У нас даже какое-то ТЗ есть. И мы уже выполнили первый пункт из ТЗ! Отличный повод на этом статью закончить. И уже в следующей – встроить аналитику не от Google, а от Huawei.
Весь код, который есть в этом цикле статей вы можете посмотреть в репозитории на GitHub. Вот ссылка.
- android development
- huawei mobile services
- google mobile services
- kotlin
- Разработка мобильных приложений
- Разработка под Android
- Kotlin
- Gradle
Источник: habr.com
Как активировать опции разработчика на Huawei с помощью EMUI
У вас есть мобильный телефон Huawei и вы не знаете, как активировать параметры разработчика? EMUI, уровень персонализации мобильных устройств компании, предлагает вариант, который может отличаться от других устройств. Если вы хотите активировать параметры разработки, чтобы настроить некоторые системные параметры, ниже мы покажем, как вы можете это сделать.
ПОЛУЧИТЕ НАШУ БЮЛЛЕТЕНЬ
Подпишитесь, чтобы получать последние новости технологии в вашем почтовом ящике. Мы будем отправлять вам одно электронное письмо в день с краткой информацией о заголовках новостей, хитростях, сравнительных обзорах, опубликованных на наших сайтах.
Сервис, предлагаемый Mailchimp
Прежде чем продолжить, важно знать, что параметры разработки скрыты чем-то, Это очень продвинутые настройки, и если вы не опытный пользователь, лучше не пользоваться этими опциями., Изменение любого варианта разработки может сделать ваш терминал непригодным для использования. Если вы хотите изменить какие-либо настройки анимации или активировать какую-либо опцию, найдите учебное пособие и следуйте инструкциям.
Если вы знаете риск прикосновения к настройке разработки и по-прежнему хотите активировать эту опцию, способ очень прост. Сначала вам нужно зайти в настройки системы. Вы можете сделать это из панели уведомлений, нажав на механизм в верхней области. Или из настроек самого приложения. Оказавшись внутри, перейдите к опции системы.
Затем нажмите «О телефоне» и перейдите к параметру «Номер сборки». Теперь нажмите несколько раз, пока не появится другой экран.
Отключить параметры разработки
На этом новом экране вам нужно будет ввести PIN-код блокировки вашего устройства, который вы обычно используете для разблокировки терминала. После активации вернитесь назад и в той же опции «Система» вы увидите опции разработчика desarrollador ». Если вы хотите отключить эту функцию, вам просто нужно отключить первую кнопку, которая появляется при вводе параметров разработки. Huawei также включает в себя кнопку, которая позволяет нам сбросить настройки по умолчанию, таким образом, что параметры останутся такими, какими они поступили с устройством.
Источник: tehnografi.com
10 вопросов к поддержке HMS по работе с гибридными приложениями, AppGallery и эмулированию телефонов Huawei
Привет, Хабр! За год количество сервисов в экосистеме Huawei Mobile Services (HMS). выросло с 9 до 31, и у разработчиков стало возникать всё больше вопросов по поддержке гибридных приложений, взаимодействию с AppGallery, использованию отдельных служб и китов. Основные площадки нашего общения с мировым сообществом — это Stackoverflow, Reddit, XDA-Developers и раздел поддержки на портале разработчиков Huawei. Специально для тех, кто интересуется нашей платформой, мы собрали с этих площадок 10 вопросов по работе с Huawei Mobile Services.
1. Будет ли работать React-native и Firebase SDK на телефонах Huawei без Google Service и без изменений кода?
Да, приложение на React-native будет работать без изменений, достаточно отправить APK для загрузки в галерею приложений Huawei. С Firebase SDK будет немного сложнее. Работоспособность приложения зависит от служб, которые вы пытаетесь включить в своё приложение. Так, вход в Google с помощью модуля аутентификации Firebase не будет поддерживаться на телефонах, где нет Google Mobile Services, например на Huawei Mate 30 Pro.
Если вы хотите использовать один APK как для GMS, так и для HMS, вам необходимо сначала проверять доступность службы.
Для GMS:
val gmsAvailable = GooglePlayServicesUtil.getInstance().isGooglePlayServicesAvailable(mContext)
val hmsAvailable = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(mContext)
При попытке использовать Google Login, или Huawei Login, или любые другие сервисы:
if gmsAvailable < // execute GMS Code >else if hmsAvailable < // execute HMS Code >
2. Каковы реальные скрытые расходы на поддержку дополнительной экосистемы?
Расходы на поддержку приложения в HMS зависят от того, как вы проектируете систему и какие сервисы требуются в вашем приложении. В среднем время интеграции может варьироваться от нескольких часов до нескольких недель в зависимости от приложения и количества сервисов Google и Firebase в исходном приложении.
Если в вашем приложении нет интегрированных GMS, то можно загружать его без каких-либо доработок — сервисы Facebook, Yandex и другие будут работать.
3. Какие гибридные приложения поддерживает HMS?
С версии HMS Core 5.0.0 увеличено количество китов, поддерживаемых сторонними платформами:
- Account Kit plugins for Cordova
- Ads Kit plugins for Cordova
- Analytics Kit plugin for Cordova
- In-App Purchases Kit plugin for Cordova
- Location Kit plugin for Cordova
- Map Kit plugins for Cordova
- ML Kit plugins for Cordova
- Push Kit plugin for Cordova
- Site Kit plugins for Cordova
- Account Kit plugins for React Native
- Ads Kit plugins for React Native
- Analytics Kit plugin for React Native
- Health Kit plugin for React Native
- In-App Purchases Kit plugin for React Native
- Location Kit plugin for React Native
- Map Kit plugin for React Native
- ML Kit plugins for React Native
- Push Kit plugin for React Native
- Site Kit plugins for React Native
- Account Kit plugins for Xamarin
- Ads Kit plugins for Xamarin
- Analytics Kit plugins for Xamarin
- Map Kit plugins for Xamarin
- Location Kit plugins for Xamarin
- Push Kit plugins for Xamarin
- Site Kit plugins for Xamarin
- Account Kit plugins for Flutter
- Ads Kit plugins for Flutter
- Analytics Kit plugins for Flutter
- In-App Purchases Kit plugin for Flutter
- Location Kit plugins for Flutter
- Map Kit plugins for Flutter
- Push Kit plugins for Flutter
- Site Kit plugins for Flutter
4. Можно ли считать данные с датчика глубины (TOF) на телефонах Huawei?
Да, это возможно при использовании AR Engine SDK. Huawei AR Engine обеспечивает вывод сетки сцены в реальном времени, и результат включает положения мобильного телефона в пространстве. Трёхмерная сетка текущего вида камеры поддерживает только модели Honor V20 и P30Pro, которые могут получать информацию о глубине, а поддерживаемая сцена сканирования является статической.
TOF поддерживается на следующих устройствах:
- Серия P: P30 / P30Pro / P40 / P40Pro / P40Pro +
- Серия Mate: Mate20 / Mate20Pro / Mate20RS / Mate 20X / Mate20X (5G) / Mate30 / Mate30Pro / Mate30RS / Mate30 (5G) / Mate30Pro (5G) / Mate X / Mate XS
- Серия Nova: Nova6 / Nova6-5G / Nova7 / Nova7Pro
- Серия Honor: Honor V20 / Honor 20 / Honor 20Pro / Honor V30 / Honor V30Pro / Honor 30S / Honor 30 Pro / Honor 30 Pro +
- Серия планшетов: Tablet M6
Для получения данных от TOF нужно использовать класс ARSceneMesh с помощью следующих методов:
public ShortBuffer getSceneDepth() // Get the depth image of current frame(optimized). public int getSceneDepthHeight() // Get the height of the depth image. public int getSceneDepthWidth() // Get the width of the depth image.
Есть и другие варианты, как считать глубину. Можно получить объект класса ARFrame и использовать его методы hitTest, acquireDepthImage. Также возвращает обработанную карту глубины метод GetSceneDepth из класса ARSceneMesh. Она точнее, но работает только до 2,5 метра.
5. Как открыть AppGallery напрямую из приложения?
AppGallery из приложения открывается так же, как и Google Play Store. Надо учитывать, что AppGallery использует собственную схему appmarket://:
- Схема: appmarket://
- Пакет: com.huawei.appmarket
private void startHuaweiAppGallery() < Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(«appmarket://details?id=» + getPackageName())); ListotherApps = getPackageManager().queryIntentActivities(intent, 0); boolean agFound = false; for (ResolveInfo app : otherApps) < if (app.activityInfo.applicationInfo.packageName.equals(«com.huawei.appmarket»)) < ComponentName psComponent = new ComponentName(app.activityInfo.applicationInfo.packageName, app.activityInfo.name); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setComponent(psComponent); startActivity(intent); agFound = true; break; >> //Optional, Or copy the Google Play Store URL here (See below) if (!agFound) < //Your Huawei app ID can be found in the Huawei developer console final string HUAWEI_APP_ID = «100864605»; //ex. https://appgallery.cloud.huawei.com/marketshare/app/C100864605 intent = new Intent(Intent.ACTION_VIEW, Uri.parse(«https://appgallery.cloud.huawei.com/marketshare/app/C» + HUAWEI_APP_ID)); startActivity(intent); >>
6.
Как создать Huawei Android Emulator?
Huawei предоставляет разработчикам Huawei функцию облачной отладки в качестве бесплатной услуги. Если вы используете SDK Huawei, у вас должна быть учётная запись разработчика Huawei. Просто войдите в консоль разработчика Huawei и следуйте инструкциям.
Функция облачной отладки действительно проста в использовании. Она позволяет выполнять удалённую отладку на реальных устройствах. В процессе вы можете просматривать информацию об устройстве, загружать и устанавливать APK на удалённые устройства, получать журналы операций и сохранять журналы на локальном компьютере для анализа.
7. Как получить доступ к payload push-уведомлений HMS?
Чтобы получить доступ к payload, вам необходимо реализовать класс HmsMessageService и переопределить метод onMessageReceived. Вы можете получить доступ к payload из объекта RemoteMessage. Чтобы получить доступ к токену, переопределите метод onNewToken.
override fun onMessageReceived(remoteMessage: RemoteMessage?) < super.onMessageReceived(remoteMessage) if (remoteMessage. data.isNotEmpty()) < Log.i(TAG, «Message data payload: » + remoteMessage.data) >if (remoteMessage.notification != null) < Log.i(TAG, «Message Notification Body: » + remoteMessage.notification.body) >>
Убедитесь, что вы зарегистрировали свою службу:
8. Какие инструменты использовать при разработке приложения Android для мобильного телефона Huawei?
Для разработки приложений можно использовать как Android Studio, так и другие IDE, такие как Eclipse, Intelliji IDEA.
Если у вас уже есть приложение, использующее GMS, используйте HMS Toolkit для преобразования кода, работающего с GMS, для работы с HMS. Необходимо учитывать, что HMS Toolkit поддерживает конвертацию не всех служб, и перед его использованием лучше уточнить, работу каких служб он может перенести.
9. Как инициализировать службы HMS без agconnect-services.json?
Пока HMS не предоставляет единого решения для инициализации на основе кода. Инициализация без json-файла возможна при работе со следующими службами:
android_value=»appid=xxx»>
MapsInitializer.setApiKey(«Your API Key»);
SearchService searchService = SearchServiceFactory.create(this, «API key»);
MLApplication.getInstance().setApiKey(«your ApiKey»);
10.
Что может система управления продуктами (PMS) в службе HMS In-App Purchase?
API системы управления продуктами (PMS) позволяет создавать продукты и управлять информацией о них. Через него можно:
- Создавать продукты: в том числе с по подписке с автоматическим продлением.
- Запрашивать информацию о продуктах: например, можно запросить конкретный продукт на основе идентификатора приложения и идентификатора продукта или запросить все продукты, которые соответствуют указанным вами критериям.
- Обновлять информацию о продуктах: название продукта, язык, цену и статус. Работать можно как с одним, так и с несколькими продуктами одновременно.
- Продвигать продукты: API позволяет разделять рекламные каомпании по регионам, задавать время продвижения и устанавливать цены.
Источник: temofeev.ru