# 2. Создание первого приложения (начало) ## Hello World После установки [Androi Studio](https://developer.android.com/studio) создадим свое первое приложение "Hello World". В нем мы ознакомимся со структурой Android-проекта, основными элементами экрана UI (User Interface). ### Создаем проект Создадим первое приложение в виде `Empty Views Activity`: ![alt text](https://github.com/sibsutisTelecomDep/blog/blob/main/book/figures/android/basic_02_new_project.PNG?raw=true) Рис. 1. Окно создания приложения. Далее, выберем шаблон для первого приложнеия. Как говорилось выше, выберем `Empty Views Activity`. ![alt text](https://github.com/sibsutisTelecomDep/blog/blob/main/book/figures/android/basic_02_empty_activity_views.PNG?raw=true) Рис. 2. Выбор `Empty Views Activity`. Нам предоставят возможность выбрать параметры проекта: - Name - название вашего приложения; - Language - язык программирвоания (`Java` \ `Kotlin`); - Minimum SDK - минимальная версия SDK (версия библиотек, используемых в проекте); - Build language - язык системы сборки проекта. ![alt text](https://github.com/sibsutisTelecomDep/blog/blob/main/book/figures/android/basic_02_project_properties.PNG?raw=true) Рис. 3. Параметры проекта. В результате мы получим проект со всеми необходимыми элементами для **сборки**, **компиляции** и **запуска** первого приложения. ### Структура проекта В открывшемся проекте мы увидмим структуру: ![alt text](https://github.com/sibsutisTelecomDep/blog/blob/main/book/figures/android/basic_02_project_structure.PNG?raw=true) Рис. 4. Стркутура проекта. Вкратце, проект состоит из нескольких важный директорий: - `/app` включает в себя еще 3 директории: - `/manifest` - содержит файлы конфигурации\\манифеста приложения (ключевой файл в приложении Android); - `/kotlin` + java - содержит исходный код приложения; - `/res` - включает в себя файлы, используемые приложением Android (картинки, иконки, стили, музыка и т.д.); - `/Gradle Scripts`. #### AndroidManifests.xml Файл `AndroidManifest.xml` является одним из самых важных в Android проекте. В нем содержится информация о пакетах приложения, компонентах типа `Activity`, `Service` и т.д.. Файл `AndroidManifest.xml` выполняет следующие задачи: - Предоставляет разрешения приложению на использование или доступ к другим компонентам системы. - Определяет как будут запускаться, например, Activity (какие фильтры использовать). #### /res В папке `/res` расположены все используемые приложением ресурсы, включая изображения, различные xml файлы, анимации, звуковые файлы и многие другие. Внутри папки **res** эти все ресурсы распределены по своим папкам: - Папка `/drawable` содержит файлы с изображениями, которые будет использоваться в приложении; - Папка `/layout` располагает xml файлами, которые используются для построения пользовательского интерфейса Android приложения; - В папке `/menu` находятся xml файлы, используемые только для создания меню; - В `/mipmap` папке хранят только значки приложения. Любые другие drawable элементы должны быть размещены в своей папке; - `/values` хранит те xml файлы, в которых определяются простые значения типа строк, массивов, целых чисел, размерностей, цветов и стилей. #### Gradle Скрипты Gradle используются для автоматизации сборки проекта. Android Studio выполняет сборку приложения в фоновом режиме без какого-либо вмешательства со стороны разработчика. Этот процесс сборки осуществляется с использованием системы Gradle — инструментария для автоматической сборки с помощью набора конфигурационных файлов. Gradle скрипты написаны на языке `groove`. ### Ползовательский интерфейс (первое Activity) При создании первого приложения, вы могли увидеть интерфейс работы с **"внешним видом"** вашего Android-приложения. По умолчанию, файл `/layout/activity_main.xml` определяет разметку первой `"страницы" (activity)`, которую видит, с которой взаимодействует пользователь. ![alt text](https://github.com/sibsutisTelecomDep/blog/blob/main/book/figures/android/basic_01_main_xml.PNG?raw=true) Рис. 5. Окно макета `Activity`. Листинг 1. `activity_main.xml` ```xml