Введение 3
1 Обзор смежных решений 5
2 Общая схема работы программного решения 7
2.1 Принцип работы 7
2.2 Внешний вид плагина 9
3 Генерация элементов интерфейса 12
3.1 Контейнер LinearLayout 12
3.2 Контейнер RelativeLayout 13
3.3 КомпонентNestedScrollView 14
3.4 Элемент Toolbar 14
3.5 Элемент Text View 15
3.6 Элемент EditText 16
3.7 Элемент RadioButton 17
3.8 Элемент Checkbox 17
3.9 Элемент RecyclerView 17
3.10 Элемент CardView 19
3.11 Элемент Web View 19
3.12 Элемент Button 19
3.13 Элемент ImageView 20
4 Генерация архитектуры Android-приложения 22
4.1 Clean architecture 22
4.2 Предсказывание шаблона проектирования 27
5 Пример использования инструментария 31
Заключение 40
Список использованных источников 42
Приложение А. Исходный код основных модулей программы
В 2018 году каждый день было выпущено примерно 6140 Android-приложений, и в большинстве случаев внешний вид макетов страниц был продуман заранее специальными специалистами - дизайнерами [1]. От того, как будут прорисованы страницы приложений, зависит, будет ли оно удобным, комфортным для обычных пользователей. В данный момент, большинство макетов страниц для мобильных приложений продумываются по сводам правил Material Design, что с одной стороны облегчает процесс создания их, но с другой стороны, требует тщательного изучения со стороны дизайнера [2].
Процесс разработки Android-приложений - долгий и сложный процесс, только на продумывание архитектуры уходит, по нашему опыту, от 10% всего выделенного времени, а на перевод макетов дизайна страниц приложений около 5%. Одной из первых стадий создания мобильного приложения является отрисовка всех сценариев работы в графическом редакторе, например, в таком как Sketch [3]. По внешнему виду страниц можно определить примерную архитектуру всего приложения, какие таблицы базы данных могут использоваться, поэтому макеты нечто большее, чем просто верстка для разработчика. При этом во время их создания дизайнеру приходится рисовать с нуля большинство элементов верстки, контекстуально понятные квалифицированному разработчику, но не всегда корректно определяемые нейронной сетью. После того, как разработчик получает изображение макетов, ему нужно перевести их в программный код. Таким образом, работа с внешним видом приложения дублируется, из-за чего увеличиваются затраты на разработку по времени и деньгам.
В связи с вышесказанным была поставлена цель - реализовать плагин для среды разработки Android Studio, который позволил бы генерировать программный код XML-файлов и Java-классов, а также строить архитектуру
приложения и составлять таблицы для работы с базой данных на основании Sketch-файлов.
Были определены следующие задачи, выполнение которых необходимо для достижения поставленной цели:
1) разработка модуля генерации XML-кода на основе данных, полученных в результате обработки Sketch-файла;
2) формирование кастомных моделей на основании изображений, которые не были опознаны в результате распознавания нейронной сетью;
3) разработка модуля генерации Java-классов согласно паттернам MVP и MVVM в связке с Clean Architecture по полученной Sketch-странице;
4) реализация функциональной возможности генерации таблиц базы данных и CRUD-методов на основании библиотеки Android Room.
В результате выполнения данной дипломной работы был реализован плагин для среды разработки Android Studio, который позволит генерировать программный код XML-файлов и Java-классов, а также строить архитектуру приложения и составлять таблицы для работы с базой данных на основании Sketch-файлов.
Для достижения поставленной цели были выполнены следующие задачи:
1) разработан модуль генерации XML-кода на основе данных, полученных в результате обработки Sketch-файла;
2) сформированы кастомные модели на основании изображений, которые не были опознаны в результате распознавания нейронной сетью;
3) разработан модуль генерации Java-классов согласно паттернам MVP и MVVM в связке с Clean Architecture по полученной Sketch-странице;
4) реализована функциональная возможность генерации таблиц базы данных и CRUD-методов на основании библиотеки Android Room.
Разработанный инструментарий автоматически генерирует:
1) XML-файлы с типами layout, menu, item. В layout могут быть реализованы такие модели верстки как: LinearLayout, RelativeLayout, Image View, Toolbar, Button, RecyclerView, TextView, CardView, EditText, Web View, RadioButton, Checkbox, NestedScrollView. Все они инициализируются в родительском activity-классе с учетом своих особенностей. Menu-файлы создаются при обнаружении специальных иконок внутри элемента Toolbar, a item при наличии RecyclerView в layout.
2) PNG и VectorDrawable, которые выводятся из Sketch с помощью специально написанных скриптов на Javascript.
3) Java-классы для построения Clean Architecture. Для эффективного распределения ресурсов для работы с UI для модуля presentation определяется паттерн MVP или MVVM с помощью составления контекста страниц, где каждому элементу присваивается коэффициент использования, а также с помощью сортировки страниц, являющихся состоянием одного экрана.
Данные файлы и классы предназначены для упрощения и ускорения работы разработчика Android-приложений, все они открыты для расширения и закрыты для модификации, в соответствии с правилами SOLID.