[Gradle, Kotlin, Разработка мобильных приложений, Разработка под Android] Знакомство с App Gallery. Создаем аккаунт разработчика

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
22-Сен-2020 20:30


Что происходит, кто виноват и что делать
Недавно Google прекратил сотрудничество с Huawei. Это привело к тому, что Huawei на своих новых девайсах уже не может использовать сервисы Google (магазин приложений, геолокация, карты, пуши, аналитика etc), что для пользователя превращает девайс в кирпич. Если бы это не была китайская компания, то, скорее всего, на этом её бизнес, связанный с Android, просто бы прекратился. Но компания китайская, большая и они пошли по пути импортозамещения, в кратчайшие сроки реализовав функционал, аналогичный Google сервисам.
В этой серии статей мы хотим поделиться своим опытом использования Huawei Mobile Services в уже готовом приложении, использующем Google Mobile Services для аналитики (Firebase Analytics), карт и геолокации. Текста получилось довольно много и о сильно разных сервисах, засим статей будет несколько. Начнём мы с основ — регистрации аккаунта разработчика и базовых вещей в коде.
  • Создаём аккаунт разработчика, подключаем зависимости, подготавливаем код к внедрению. ← вы тут
  • Встраиваем Huawei Analytics.
  • Используем геолокацию от Huawei.
  • Huawei maps. Используем вместо Google maps для AppGallery.

Если вам интересно узнать технических подробностей, посмотреть код и узнать про подводные камни — добро пожаловать под кат!
Что нужно для успешного внедрения
Всё было бы просто, если бы приложение писалось с нуля и не нужно было бы поддерживать как Google так и Huawei. Но мы живём в реальном мире и без сложностей не обойтись. Однако дело сильно упростится, если соблюдён ряд условий.
Но перед перечислением условий надо составить ТЗ. Оно у нас получилось такое:
  • Нам нужно получить 2 версии APK — одну для Google Play, с библиотеками от Google, другую — для AppGallery, с библиотеками от Huawei.
  • В приложении уже используется Firebase Analytics. Надо его заменить на аналог от Huawei.
  • Есть определение местоположения пользователя. Аналогично заменяем на аналог.
  • Есть карты. Нужно также заменить на аналог, по максимуму сохранив функционал, т.к. в реализации от Huawei некоторые вещи ещё не сделаны.

А вот что сильно сократит прикладываемые усилия:
  • Код должен быть написан хорошо. И быть без багов (хотя это само собой разумеется – зачем код с багами писать?). Под хорошо будем подразумевать более-менее стандартную архитектуру, мимикрирующую под Clean.
  • Если код из Google библиотек размазан ровным слоем по всему проекту, то у меня для вас плохие новости. Например у вас может не быть абстракции над аналитикой и/или над полученными от Google координатами. В этом случае придётся её завести, чтобы почистить код от импортов гугловых классов, которые будут недоступны, когда мы уберём их из сборки.
  • Использование DI. Очень упрощает абстрагирование над аналитикой и геолокацией. Используем интерфейсы, через DI передавая нужную реализацию.
  • Карты не слишком сильно кастомизированы. В частности, основная сложность будет с абстрагированием над кластеризацией маркеров.

Подготовка к внедрению
Как и в случае с Google, надо зарегистрироваться, создать проект приложения, получить файл конфигурации.
  • Регистрируемся на 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 {url 'https://developer.huawei.com/repo/'}
    }
    dependencies {
        ...
        classpath 'com.huawei.agconnect:agcp:1.2.1.301'
    }
}
allprojects {
    repositories {
        ...
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

В следующей части – встраиваем аналитику
Теперь мы полностью готовы. У нас есть 2 разных варианта сборки – для Huawei и Google. У нас подключены необходимые зависимости. Созданы папки, где будет наш код. Создан аккаунт разработчика и выполнены необходимые действия по созданию проекта приложения. У нас даже какое-то ТЗ есть. И мы уже выполнили первый пункт из ТЗ! Отличный повод на этом статью закончить. И уже в следующей – встроить аналитику не от Google, а от Huawei.
Весь код, который есть в этом цикле статей вы можете посмотреть в репозитории на GitHub. Вот ссылка.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_gradle, #_kotlin, #_razrabotka_mobilnyh_prilozhenij (Разработка мобильных приложений), #_razrabotka_pod_android (Разработка под Android), #_android_development, #_huawei_mobile_services, #_google_mobile_services, #_kotlin, #_gradle, #_kotlin, #_razrabotka_mobilnyh_prilozhenij (
Разработка мобильных приложений
)
, #_razrabotka_pod_android (
Разработка под Android
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 17:55
Часовой пояс: UTC + 5