Отправьте статью сегодня! Журнал выйдет 19 июля, печатный экземпляр отправим 23 июля
Опубликовать статью

Молодой учёный

Организация многомодульной, слабосвязанной архитектуры приложения при работе с Gradle

1. Информатика и кибернетика
23.10.2018
1218
Поделиться
Библиографическое описание
Денисенко, А. А. Организация многомодульной, слабосвязанной архитектуры приложения при работе с Gradle / А. А. Денисенко. — Текст : непосредственный // Технические науки: теория и практика : материалы IV Междунар. науч. конф. (г. Казань, ноябрь 2018 г.). — Казань : Молодой ученый, 2018. — С. 7-10. — URL: https://moluch.ru/conf/tech/archive/312/14585/.


В статье описывается подход для реализации многомодульной, слабосвязанной архитектуры в 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].

Далее детально рассмотрим построение навигации внутри приложения путем построения пошаговой инструкции по имплементации данного архитектурного решения:

  1. Создание в common модуле интерфейса INavigation:

  1. Создание в common модуле интерфейса, предоставляющего имплементацию интерфейса INavigation:

  1. Реализация интерфейса INavigation в модуле Application.

Для этого необходимо создать класс NewsApplication, являющийся наследником android.app.Application и реализующий интерфейс INavigationProvider.

Теперь рассмотрим практическое применение кода. Чтобы открыть экран настроек, находясь на экране со списком новостей. Действуем по следующей схеме:

  1. Получаем реализацию INavigationProvider:

INavigationProvider provider = ((INavigationProvider)getApplicationContext());

  1. Получаем реализацию INavigation, используя INavigationProvider:

INavigation navigation = provider.getAppNavigation();

  1. Переходим на требуемый экран:

startActivity(navigation.getSettingsScreen()).

Таким образом, были рассмотрены как теоретические плюсы многомодульной архитектуры, так и продемонстрировано ее использование на примере конкретного приложения с разбором решения проблем навигации и ее организации между независимыми модулями.

Литература:

  1. Context // Android Developers. URL: https://developer.android.com/reference/android/content/Context (дата обращения: 20.10.2018).
  2. Create your first instant app // Android Developers. URL: https://developer.android.com/topic/google-play-instant/getting-started/first-instant-app (дата обращения: 20.10.2018).
Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Ключевые слова
многомодульная архитектура
Android
Gradle
Context
Application.

Молодой учёный