Pull to refresh

Знакомство с App Gallery. Создаем аккаунт разработчика

Reading time4 min
Views18K


Что происходит, кто виноват и что делать


Недавно Google прекратил сотрудничество с Huawei. Это привело к тому, что Huawei на своих новых девайсах уже не может использовать сервисы Google (магазин приложений, геолокация, карты, пуши, аналитика etc), что для пользователя превращает девайс в кирпич. Если бы это не была китайская компания, то, скорее всего, на этом её бизнес, связанный с Android, просто бы прекратился. Но компания китайская, большая и они пошли по пути импортозамещения, в кратчайшие сроки реализовав функционал, аналогичный Google сервисам.


В этой серии статей мы хотим поделиться своим опытом использования Huawei Mobile Services в уже готовом приложении, использующем Google Mobile Services для аналитики (Firebase Analytics), карт и геолокации. Текста получилось довольно много и о сильно разных сервисах, засим статей будет несколько. Начнём мы с основ — регистрации аккаунта разработчика и базовых вещей в коде.


  1. Создаём аккаунт разработчика, подключаем зависимости, подготавливаем код к внедрению. ← вы тут
  2. Встраиваем Huawei Analytics. тык
  3. Используем геолокацию от Huawei.
  4. Huawei maps. Используем вместо Google maps для AppGallery.

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


Что нужно для успешного внедрения


Всё было бы просто, если бы приложение писалось с нуля и не нужно было бы поддерживать как Google так и Huawei. Но мы живём в реальном мире и без сложностей не обойтись. Однако дело сильно упростится, если соблюдён ряд условий.


Но перед перечислением условий надо составить ТЗ. Оно у нас получилось такое:


  1. Нам нужно получить 2 версии APK — одну для Google Play, с библиотеками от Google, другую — для AppGallery, с библиотеками от Huawei.
  2. В приложении уже используется Firebase Analytics. Надо его заменить на аналог от Huawei.
  3. Есть определение местоположения пользователя. Аналогично заменяем на аналог.
  4. Есть карты. Нужно также заменить на аналог, по максимуму сохранив функционал, т.к. в реализации от Huawei некоторые вещи ещё не сделаны.

А вот что сильно сократит прикладываемые усилия:


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

Подготовка к внедрению


Как и в случае с Google, надо зарегистрироваться, создать проект приложения, получить файл конфигурации.


  1. Регистрируемся на https://developer.huawei.com. Тут понадобится паспорт/права + пластиковая карта. День-два вас будут проверять, потом аккаунт заработает. Если вдруг что-то пойдёт не так (забудете что-то указать или укажете неправильно) – вам напишут и подробно объяснят. После общения с Google Play всё выглядит очень круто – русскоязычная техподдержка отвечает быстро и по делу.
  2. Принимаем всякие соглашения об обработке персональных данных. Внимательно читая, конечно же)
  3. Создаём проект приложения, указывая пакет (он же ApplicationId).
  4. Если вам нужно ещё и встроенные покупки реализовать — то надо: а) Заполнить данные банковского счёта б) Распечатать и заполнить заявление о трансграничной передаче персональных данных в КНР в) Отправить скан оного вместе с данными из пункта а г) Отправить заявление из пункта б по почте в Москву. Когда заявление дойдёт — вам придёт e-mail и останется только активировать сервис в настройках проекта. На почте бывают накладки — возможно, придётся подождать. Я пару недель ждал, потом позвонил ответственному за это в Huawei — уверили, что проблему решат. И решили. На русском тоже всё общение — очень круто)
  5. Включаем сервис аналитики. В отличие от геолокации и карт, включённых по умолчанию, это нужно сделать вручную.
  6. Добавляем SHA-256 для всех ключей, которыми будет подписано приложение. Т.е. дебажные ключи и релизный ключ.
  7. Скачиваем аналог google-services.json, в случае Huawei называемый agconnect-services.json
  8. Создаём разные 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. Вот ссылка.

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+9
Comments2

Articles