Необходимо открыть Android Studio и клонировать репозиторий https://git.miem.hse.ru/19111/miemapp_android
При начале работы над задачей необходимо отвести ветку. Когда разработка закончена, нужно сделать push в репозиторий и создать merge request
Стоит обратить внимание на то, что:
Поддерживаемые версии операционной системы
Приложение поддерживает версии Android 24 и выше. Без крайней необходимости не отказываемся от старых версий.
Зависимости подключаются через файлы MiemApp.app.build.gradle.kts и DependenciesManagement.kt
Текущие зависимости:
Каждый модуль сервиса по сути является отдельным основным экраном, внутри которого может осуществляться своя навигация, независимо от основного модуля. Этому модулю также могут быть нужны доступ к постоянному хранилищу данных или сетевым запросам. Таким образом, весь модуль можно свести к одной основной сущности, которая при инициализации принимает необходимые зависимости в виде аргументов, а затем предоставляет свой основной экран главному приложению. Затем на основе полученных экранов строится меню, которое позволяет открывать эти экраны. Это происходит подстановкой выбранного экрана в экран главного приложения.
Данный подход позволяет свести к минимуму количество точек интеграции модуля (см. Правила разработки). Преимуществом этого является быстрая интеграция модуля, так как чтобы его экран отображался в приложении, надо всего лишь создать сущность модуля и затем передать его экран в меню. Это позволяет снизить количество конфликтов при разработке сразу несколькими программистами. Также такая архитектура позволяет заменять одну реализацию модуля на другую, например, в случае смены дизайна интерфейса.
Каждый модуль может быть разработан внутри с использованием своей архитектуры. Это даёт возможность сторонним разработчикам гибкость и удобство выбора. Однако такой подход может привести к тому, что новым разработчикам будет трудно понять строение программы. Поэтому все модули имеют одинаковую архитектуру. Она основана на архитектурном шаблоне MVP (Model-View-Presenter). Данный подход позволяет создавать абстракцию представления. Для этого необходимо выделить интерфейс представления с определенным набором методов и свойств. Presenter, в свою очередь, получает ссылку на реализацию интерфейса, подписывается на события представления и по запросу изменяет модель.