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

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

Опубликовать статью в журнале

Автор:

Рубрика: 1. Информатика и кибернетика

Опубликовано в

IV международная научная конференция «Технические науки: теория и практика» (Казань, ноябрь 2018)

Дата публикации: 23.10.2018

Статья просмотрена: 271 раз

Библиографическое описание:

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



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

Похожие статьи

Подходы к архитектурному проектированию веб-приложений

Однако, стремление к упрощению разработки, а также к структуризации как кода, так и всего приложения могло являться предпосылкой к появлению такого понятия как «архитектура ПО». В рамках данной статьи рассматриваются три подхода к архитектурному проектированию...

Создание обучающего приложения по информатике на базе Unity

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

Это свободная среда разработки, предназначенная для создания приложения на C#. С помощью данной IDE можно с комфортом писать скрипты.

Разработка модуля формирования документов студенческой...

Библиографическое описание: Валиков К. В. Разработка модуля формирования документов студенческой практики с помощью Java и

Для разработки приложения использовался язык программирования Java вместе с JDK 8. В состав JDK входит стандартный набор библиотек...

Синтез конфигураций программируемых логических интегральных...

Предложен процесс разработки, не имеющий описанных недостатков.

Те же сложности возникают с созданием нескольких конфигураций ПЛИС, отличающихся настройками

При использовании процесса разработки конфигураций ПЛИС без использования проектов ИСР...

Проектирование мобильных приложений и облачных сервисов

Основные этапы разработки мобильных приложений

 Работа зрения — поиск стартовой точки на экране, поиск одного объекта среди многих, расшифровка визуальной

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

Автоматизация развертывания компонент распределенного...

Нуждающееся в автоматизации приложение обладает распределенной архитектурой с

Процесс ручного развертывания инфраструктуры отдельно взятого филиала производится в

Второй этап, настройка программных компонентов системы на узлах филиала: Задачи данного...

Разработка программного модуля автоматизированной системы...

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

Разработка программного модуля по реализации функции...

В настоящее время технологии интеллектуальной обработки данных (ИОД) приобретают все большее распространение: они позволяют извлечь из необработанных данных ранее неизвестные, нетривиальные...

Разработка мобильного мультиплатформенного приложения...

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

Похожие статьи

Подходы к архитектурному проектированию веб-приложений

Однако, стремление к упрощению разработки, а также к структуризации как кода, так и всего приложения могло являться предпосылкой к появлению такого понятия как «архитектура ПО». В рамках данной статьи рассматриваются три подхода к архитектурному проектированию...

Создание обучающего приложения по информатике на базе Unity

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

Это свободная среда разработки, предназначенная для создания приложения на C#. С помощью данной IDE можно с комфортом писать скрипты.

Разработка модуля формирования документов студенческой...

Библиографическое описание: Валиков К. В. Разработка модуля формирования документов студенческой практики с помощью Java и

Для разработки приложения использовался язык программирования Java вместе с JDK 8. В состав JDK входит стандартный набор библиотек...

Синтез конфигураций программируемых логических интегральных...

Предложен процесс разработки, не имеющий описанных недостатков.

Те же сложности возникают с созданием нескольких конфигураций ПЛИС, отличающихся настройками

При использовании процесса разработки конфигураций ПЛИС без использования проектов ИСР...

Проектирование мобильных приложений и облачных сервисов

Основные этапы разработки мобильных приложений

 Работа зрения — поиск стартовой точки на экране, поиск одного объекта среди многих, расшифровка визуальной

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

Автоматизация развертывания компонент распределенного...

Нуждающееся в автоматизации приложение обладает распределенной архитектурой с

Процесс ручного развертывания инфраструктуры отдельно взятого филиала производится в

Второй этап, настройка программных компонентов системы на узлах филиала: Задачи данного...

Разработка программного модуля автоматизированной системы...

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

Разработка программного модуля по реализации функции...

В настоящее время технологии интеллектуальной обработки данных (ИОД) приобретают все большее распространение: они позволяют извлечь из необработанных данных ранее неизвестные, нетривиальные...

Разработка мобильного мультиплатформенного приложения...

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