Android | Михаил Белый

Android | Михаил Белый 

Все про Android

43subscribers

46posts

goals1
$15.04 of $1 354 raised
Поплыву на остров Ко Мадсум кормить диких кабанчиков

Как разделить Android-приложение на Google и Huawei с помощью Flavors

Элегантное разделение проекта на отдельные сборки для магазинов Google Play, Huawei AppGallery и F-Droid, используя механизм Product Flavors. Он позволяет в рамках одной кодовой базы собирать APK с разными SDK, конфигурациями и зависимостями.
Код разнесен по платформенным модулям :gms, :hms и :foss. Все они реализуют общий контракт из :common, где описан интерфейс AppInteractor. Благодаря этому основной код приложения работает с единой абстракцией, не зная, какой именно сервис подключён – Google или Huawei.
Каждая реализация живет в своём модуле и подключает нужные зависимости: FirebaseAnalytics для Google и HiAnalytics для Huawei. В FOSS-вариант не подключается ничего. Связывание выполняется через модуль :inject, где с помощью Hilt определяется, какая реализация будет подставлена в зависимости от активного flavor.
В приложении задаются три flavors: gms, hms и foss. implementation-конфигурации гарантируют, что в сборку попадет только нужный код. Для плагинов добавлены переменные, вынесенные в buildSrc, чтобы подключать их условно.
Результат – три полностью автономных APK: один использует сервисы Google, другой – Huawei, а третий подходит для F-Droid и устройств без проприетарных SDK. Такой подход даёт гибкость и минимум дублирования, а главное – позволяет поддерживать все экосистемы Android-устройств из одной кодовой базы.
Таймкоды
0:00 – Что будет в видео
0:38 – Зачем выбирать Flavors
0:56 – Структура модулей
1:33 – Создание модуля :common
2:11 – Конфигурация модуля :common
2:42 – Создание AppInteractor
3:13 – Создание модулей :gms, :hms и :foss
4:08 – Конфигурация модулей :gms, :hms и :foss
4:54 – Создание AppInteractorImpl в модуле :foss
5:35 – Создание AppInteractorImpl в модуле :gms
6:37 – Создание AppInteractorImpl в модуле :hms
7:49 – Создание модуля :inject
8:20 – Конфигурация модуля :inject
9:21 – Создание InteractorModule для Hilt
9:51 – Настройка Flavors в модуле :app
10:41 – Запуск и проверка всех сборок
11:27 – Импорт JSON-файлов
12:31 – Условное подключение плагинов
13:16 – Создание каталога buildSrc
13:59 – Создание FlavorsKtx для хранение переменных
14:49 – Сборка всех таргетов
Смотреть на Ютубе
Исходники на Гитхабе
Документация в Роадмапе
Subscription levels1

Жалкий детский уровень

$1.36 per month
• Бесконечный респект и признательность 
• Ранний доступ к видео и воркшопам
• Отдельный топик в телеграм-чате с записями реальных Android-собеседований
• Отдельный топик с автоматическими новостями про Android-разработку
+ chat
Go up