Введение в многомодульность 0:00 Тема видео: многомодульность и её важность для чистого кода. Многомодульность помогает понять, насколько проект соответствует чистой архитектуре. Разделение проекта на три слоя: презентационный, доменный и дата.
Начало работы 0:55 Запуск видео на интенсиве, где команда за две недели создала приложение с многомодульностью. Демонстрация работы с телеграм-каналом и премиум-контентом. Начало с изображения с тремя слоями: дата, домен и презентер.
Описание слоев 1:52 Презентер: отвечает за отображение данных, активити, вьюхи и модели. Домен: уровень бизнес-логики, не зависящий от данных. Дата: уровень данных, включающий репозитории и кэширование.
Пример использования 2:51 Создание нового проекта в Android Studio. Добавление модулей в Git и использование GitHub для контроля версий. Создание трех модулей: дата, домен и презентер.
Создание домена 5:45 Создание домена как самого простого модуля. Добавление интерфейса репозитория и загрузка данных. Использование Kotlin вместо Java для упрощения.
Загрузка данных 10:00 Загрузка данных из интернета с обработкой ошибок. Использование Kotlin для обработки ошибок. Завершение создания домена и коммит изменений.
Заключение 12:00 Создание презентера и дата модуля завершено. Многомодульность помогает понять структуру проекта и его чистоту. Демонстрация работы с GitHub для контроля версий и доступа к коду.
Введение в доменный уровень 12:57 Доменный уровень самый простой и не имеет зависимостей. Содержит только интерфейс репозитория и модели. В домене нет объектов, только интерфейсы.
Создание дата модуля 13:54 Дата модуль должен быть Java или Kotlin модулем. В некоторых случаях может быть Android Library. Основная задача модуля - получение данных из Retrofit и отображение на экране.
Переименование модуля 14:59 Переименование модуля через рефакторинг. В дата модуле нет зависимостей, но они появятся. Android Studio автоматически добавляет зависимости.
Имплементация репозитория 15:58 Репозитории должны быть имплементированы в дата модуле. Репозитории находятся в доменном модуле, но дата модуль зависит от него. В дата модуле есть доступ ко всему коду из доменного модуля.
Добавление Retrofit и Gson 18:19 Добавление Retrofit и Gson в дата модуль. Retrofit и Gson должны быть зависимостями в дата модуле, но не в доменном модуле.
Создание сервиса 20:18 Создание сервиса для получения данных из Retrofit. Сервис должен обрабатывать исключения и возвращать данные.
Завершение работы с дата модулем 25:34 Закоммитить изменения и пушить в Git. В дата модуле есть зависимости на доменный модуль и Retrofit. Модуль готов к использованию.
Введение в презентейшн модуль 27:16 Создание презентейшн модуля для Android. Использование Android Liveables вместо Android Tablets. Разделение репозиториев между доменом и презентейшн модулем.
Настройка манифестов и зависимостей 28:14 Создание манифеста и Gradle для презентейшн модуля. Добавление зависимостей на Android Liveables и AndroidX. Использование плагинов для корректной работы с Android Liveables.
Рефакторинг и организация кода 29:27 Перемещение активити из приложения в презентейшн модуль. Создание манифеста для презентейшн модуля и добавление ресурсов. Организация манифестов с помощью Mesh Manifest.
Наследование и зависимости 32:53 Наследование презентейшн модуля от домена. Добавление зависимости на домен в презентейшн модуль. Создание и настройка репозитория и зависимостей.
Создание и использование моделей 34:27 Создание модели и зависимостей для презентейшн модуля. Использование скопов и диспетчеров для управления данными. Запуск и проверка работы презентейшн модуля.
Завершение настройки презентейшн модуля 36:18 Добавление билд-фичеров и биндинг данных. Настройка модели и зависимостей для корректной работы. Завершение настройки презентейшн модуля и его запуск.
Заключение 40:42 Обзор финального манифеста и зависимостей. Добавление последних зависимостей и завершение настройки. Проверка работы презентейшн модуля и его интеграция в проект.
Введение в многомодульность 41:23 Моделька получает данные из репозитория. Презентационный модуль обращается к домену. Зависимости на презентейшн и другие модули.
Создание апликейшна 42:16 Создание класса, наследующего апшн. Добавление зависимостей на презентейшн и модули. Создание репозитория и модели.
Манифест и зависимости 43:46 Прописывание зависимостей в манифесте. Зависимости на презентейшн, дата и домен. Создание модели через презентейшн и репозиторий.
Запуск приложения 45:53 Запуск приложения с получением данных из интернета. Многомодульность и создание апликейшна. Зависимости на презентейшн, дата и домен.
Манифест и активити 47:55 Манифест объединяет все манифесты проекта. Зависимости на активити и презентейшн. Слабая связь на интерфейс и репозитории.
Многомодульность в действии 49:30 Выключение и включение интернета для проверки. Обновление цитат при повороте экрана. Три модуля: домен, дата и презентейшн.
Заключение 50:44 Описание работы каждого модуля. Отображение данных на активити. Использование презентейшн и дата для отображения данных.
Введение в многомодульность 51:27 Обсуждение использования разных цветов для успеха и ошибки. Введение в многомодульность: разделение кода на модули для лучшей организации. Пример с презентацией, доменом и дата-модулем.
Архитектура и код 52:05 Обсуждение архитектуры и кода: как правильно делать многомодульность. Пример с использованием интерфейсов и репозиториев. Важность слабой связи между модулями.
Преимущества многомодульности 55:00 Преимущества многомодульности: соблюдение чистой архитектуры. Пример с нарушением чистой архитектуры при неправильном использовании модулей. Советы по созданию проектов с соблюдением чистой архитектуры.
Заключение и советы 57:43 Подсказка: удаление конструктора и использование ретрофита. Важность изучения билдградов и ключевых слов. Призыв к подписке на канал и участию в будущих проектах.
Заключение и благодарности 1:00:20 Благодарности за просмотр и приглашение к подписке. Обещание следующего видео с примером использования Hilt в многомодульности. Призыв к подписке и участию в будущих проектах.