Организация многомодульной, слабосвязанной архитектуры приложения при работе с Gradle
Автор: Денисенко Алексей Александрович
Рубрика: 1. Информатика и кибернетика
Опубликовано в
IV международная научная конференция «Технические науки: теория и практика» (Казань, ноябрь 2018)
Дата публикации: 23.10.2018
Статья просмотрена: 1198 раз
Библиографическое описание:
Денисенко, А. А. Организация многомодульной, слабосвязанной архитектуры приложения при работе с Gradle / А. А. Денисенко. — Текст : непосредственный // Технические науки: теория и практика : материалы IV Междунар. науч. конф. (г. Казань, ноябрь 2018 г.). — Казань : Молодой ученый, 2018. — С. 7-10. — URL: https://moluch.ru/conf/tech/archive/312/14585/ (дата обращения: 18.12.2024).
В статье описывается подход для реализации многомодульной, слабосвязанной архитектуры в Android приложении, с использование системы сборки Gradle. Рассматриваться проблемы, которые возникают в процессе разработки, и пути их решения.
Ключевые слова: многомодульная архитектура, Android, Gradle, Context, Application.
Current article shows approach to build multimodule architecture with low cohesion, for Android application using Gradle build tool. Described problems and ways to solve them.
Keywords: multi module architecture, Android, Gradle, Context, Application
Разделение «монолитных» систем на микросервисы — досконально изученная и широко распространенная практика в бек-енд системах. Такой подход дает возможность стоить большие, комплексные системы, которое в свою очередь будут просты в поддержке и разработке распределёнными командами.
Так как, в последнее время, размер Android приложений и команд, работающих на ними, растет, вместе с этим растет и сложность разрабатываемых систем. В связи с этим вектор совершенствования операционной системы Android делает необходимость задействования многомодульной архитектуры все более очевидной. Среди ее основных преимуществ:
– минимизация сроков сборки приложений;
– слабые показатели связанности кода;
– возможность более гибкого применения готовых модулей;
– организация единовременной параллельной работы над независимыми модулями.
И хотя общая приспособленность Android к созданию многомодульных приложений находится на достаточно высоком уровне, все еще существует ряд объективных трудностей. Одна из них и стала основной темой данной статьи, а именно — навигация между независимыми модулями и ее организация.
Основная задача, которая требует решения при создании навигации в многомодульном приложении, — организация переходов между модулями при сохранении их неосведомленности друг о друге. И далее она будет рассмотрена с помощью небольшого новостного приложения, включающего:
– список новостей (news list);
– детальные данные по каждой новости (news details);
– экран настроек (settings).
Внутри приложения должен осуществляться переход с общего списка новостей на экран с деталями по конкретной новости, а также с каждого экрана — на экран настроек.
В случае с Android-приложениями метод getApplicationContext() вызывается из большинства системных компонентов, возвращает Context приложения, выступающего классом Application [1], и в конечном итоге используется в качестве опорной точки при создании навигации.
Для более детального анализа сначала рассмотрим схематичное изображение анализируемого приложения с отражением следующих модулей:
Application — основной модуль, подключающий все прочие и хранящий первый экран приложения;
News list — модуль, ответственный за демонстрацию экрана со списком новостей;
New Details — модуль, отвечающий за отображение экрана с детальными данными по каждой конкретной новости;
Settings — модуль, отображающий экрана с настройками;
UI Elemets, Network — служебные модули, хранящие кастомизированные части экрана и работающие с сетью;
Common — общий модуль с хранением абстракции в виде интерфейсов.
Описанная выше архитектура системы несет ряд положительных моментов: появляется возможность разработчикам работать независимо на каждым модулем, структура проекта стает более понятной, ускоряется процесс разработки и сборки приложения, открываются новые возможности распространения приложения на рынке, к примеру instant apps [2].
Далее детально рассмотрим построение навигации внутри приложения путем построения пошаговой инструкции по имплементации данного архитектурного решения:
- Создание в common модуле интерфейса INavigation:
- Создание в common модуле интерфейса, предоставляющего имплементацию интерфейса INavigation:
- Реализация интерфейса INavigation в модуле Application.
Для этого необходимо создать класс NewsApplication, являющийся наследником android.app.Application и реализующий интерфейс INavigationProvider.
Теперь рассмотрим практическое применение кода. Чтобы открыть экран настроек, находясь на экране со списком новостей. Действуем по следующей схеме:
- Получаем реализацию INavigationProvider:
INavigationProvider provider = ((INavigationProvider)getApplicationContext());
- Получаем реализацию INavigation, используя INavigationProvider:
INavigation navigation = provider.getAppNavigation();
- Переходим на требуемый экран:
startActivity(navigation.getSettingsScreen()).
Таким образом, были рассмотрены как теоретические плюсы многомодульной архитектуры, так и продемонстрировано ее использование на примере конкретного приложения с разбором решения проблем навигации и ее организации между независимыми модулями.
Литература:
- Context // Android Developers. URL: https://developer.android.com/reference/android/content/Context (дата обращения: 20.10.2018).
- Create your first instant app // Android Developers. URL: https://developer.android.com/topic/google-play-instant/getting-started/first-instant-app (дата обращения: 20.10.2018).
Похожие статьи
Сравнение Java-фреймворков для разработки системы управления событиями для крупных организаций
Одна из основных внутренних проблем любой компании — организация деятельности. Решением может стать информационная система управления событиями, которая оптимизирует и автоматизирует процесс организации деятельности внутри крупной компании. В данной ...
Разработка веб-сервиса для хранения и передачи данных
В данной статье рассматривается процесс разработки веб-сервиса для облачного хранения и передачи данных, описываются основные аспекты создания серверной части с использованием фреймворка Spring и реализации клиентской части с использованием React, а ...
Разработка и отладка программного обеспечения для подавления артефактов в электрокардиограмме
В данной статье описана спроектированная программа, представляющая виртуальную программу для подавления артефактов в электрокардиограмме, написанная в среде Mathcad. Так же был построен график спектральной области, по которому можно найти оптимальное...
Создание клиент-серверного приложения на основе restful api архитектуры
В данной работе было спроектировано и разработано клиент-серверное приложение с архитектурой Restfull и взаимодействием с клиентом по API. Затронуты проблемы, связанные с проектированием микросервисов и его взаимодействия с клиентом. В качестве клиен...
Разработка 3D-моделей в Blender для интеграции в Unity
Данная статья описывает процесс подготовки объектов в бесплатном программном обеспечении Blender с целью дальнейшей их интеграции в межплатформенную среду разработки Unity с целью дальнейшего использования в моделировании или разработки виртуальных л...
Теоретические аспекты создания обозревателя файловой директории с применением кроссплатформенного фреймворка Qt
В статье подробно разобран пример программы, написанной на языке C++ на основе кроссплатформенного фреймворка Qt. Программа InterView написана программистами компании Qt, и входит в состав примеров, поставляемых вместе с пакетом Qt Creator. На её при...
Разработка Web-приложения с применением технологии ASP.NET
В статье рассматриваются возможности применения технологии ASP.NET, позволяющей создавать динамические Web-страницы. Разработанный стартовый проект содержит данные о предприятиях и организациях Карагандинской области, предоставляемых ими вакансиях, и...
Разработка Android фреймворка для аспектно-ориентированного программирования
Аспектно-ориентированная парадигма программирования хорошо зарекомендовала себя при использовании в разработке высоконагруженных систем. Она позволяет создавать общую логику для разных классов, не связанных наследованием или агрегацией. Однако для пл...
Построение программного комплекса для генерации звуков барабанов с использованием GAN сетей
В статье рассматривается построение программного комплекса для генерации звуков барабанов с использованием GAN сетей. Программный комплекс работает на клиент-сервер архитектуре и использует нейронные сети WaveGAN для генерации звуков. Результаты, пол...
Разработка веб-сервиса для генерации музыкальной последовательности по изображению
В данной работе описан процесс проектирования и разработки веб-сервиса для автоматизированной генерации звуков по изображению. Также описан основной метод для с синтеза музыки изображению, который основывается на совместном использовании нейронных се...
Похожие статьи
Сравнение Java-фреймворков для разработки системы управления событиями для крупных организаций
Одна из основных внутренних проблем любой компании — организация деятельности. Решением может стать информационная система управления событиями, которая оптимизирует и автоматизирует процесс организации деятельности внутри крупной компании. В данной ...
Разработка веб-сервиса для хранения и передачи данных
В данной статье рассматривается процесс разработки веб-сервиса для облачного хранения и передачи данных, описываются основные аспекты создания серверной части с использованием фреймворка Spring и реализации клиентской части с использованием React, а ...
Разработка и отладка программного обеспечения для подавления артефактов в электрокардиограмме
В данной статье описана спроектированная программа, представляющая виртуальную программу для подавления артефактов в электрокардиограмме, написанная в среде Mathcad. Так же был построен график спектральной области, по которому можно найти оптимальное...
Создание клиент-серверного приложения на основе restful api архитектуры
В данной работе было спроектировано и разработано клиент-серверное приложение с архитектурой Restfull и взаимодействием с клиентом по API. Затронуты проблемы, связанные с проектированием микросервисов и его взаимодействия с клиентом. В качестве клиен...
Разработка 3D-моделей в Blender для интеграции в Unity
Данная статья описывает процесс подготовки объектов в бесплатном программном обеспечении Blender с целью дальнейшей их интеграции в межплатформенную среду разработки Unity с целью дальнейшего использования в моделировании или разработки виртуальных л...
Теоретические аспекты создания обозревателя файловой директории с применением кроссплатформенного фреймворка Qt
В статье подробно разобран пример программы, написанной на языке C++ на основе кроссплатформенного фреймворка Qt. Программа InterView написана программистами компании Qt, и входит в состав примеров, поставляемых вместе с пакетом Qt Creator. На её при...
Разработка Web-приложения с применением технологии ASP.NET
В статье рассматриваются возможности применения технологии ASP.NET, позволяющей создавать динамические Web-страницы. Разработанный стартовый проект содержит данные о предприятиях и организациях Карагандинской области, предоставляемых ими вакансиях, и...
Разработка Android фреймворка для аспектно-ориентированного программирования
Аспектно-ориентированная парадигма программирования хорошо зарекомендовала себя при использовании в разработке высоконагруженных систем. Она позволяет создавать общую логику для разных классов, не связанных наследованием или агрегацией. Однако для пл...
Построение программного комплекса для генерации звуков барабанов с использованием GAN сетей
В статье рассматривается построение программного комплекса для генерации звуков барабанов с использованием GAN сетей. Программный комплекс работает на клиент-сервер архитектуре и использует нейронные сети WaveGAN для генерации звуков. Результаты, пол...
Разработка веб-сервиса для генерации музыкальной последовательности по изображению
В данной работе описан процесс проектирования и разработки веб-сервиса для автоматизированной генерации звуков по изображению. Также описан основной метод для с синтеза музыки изображению, который основывается на совместном использовании нейронных се...