# Введение в Android ## Оглавление - [Скачивание и установка Android Studio](#cкачивание-и-установка-android-studio) - [Создание первого приложения](#создание-первого-приложения) - [Установка эмулятора](#установка-эмулятора) - [Подключение реального устройства](#подключение-реального-устройства) - [Запуск приложения на эмуляторе и устройстве](#запуск-приложения-на-эмуляторе-и-устройстве) - [Структура проекта](#структура-проекта) - [Приложение `Dice Roller`](#приложение-dice-roller) - [Добавление кнопки](#добавление-кнопки) - [Обработка нажатия на кнопку](#обработка-нажатия-на-кнопку) - [Добавление изображения костей](#добавление-изображения-костей) - [Сборка и управление зависимостями](#сборка-и-управление-зависимостями) ## Скачивание и установка Android Studio Android Studio — специальная среда разработки под Android. Основана на IntelliJ IDEA, поэтому пользовательский интерфейс очень похож. Скачать Android Studio можно с официального сайта для разработчиков под Android: developer.android.com: https://developer.android.com/studio. Устанавливается стандартным образом для каждой из поддерживаемых операционных систем (Windows, Linux, macOS). Инструкцию можно найти здесь: https://developer.android.com/studio/install. ## Создание первого приложения Для создания нового проекта необходимо выполнить следующие шаги: Запустить Android Studio -> "Start a new Android Studio project". Choose your project -> Empty Activity -> Next. Configure your project -> Name: Dice Roller Package: `com.example.android.diceroller` Project location: путь до каталога с проектом в файловой системе Language: Kotlin Minimum API: минимальный уровень API (версия Android) -> Finish Проект нового приложения создан. Для его запуска необходимо либо подключить реальное Android-устройство, либо установить и запустить эмулятор. ## Установка эмулятора Для установки эмулятора необходимо выполнить следующие шаги в рамках Android Studio: Tools -> AVD Manager -> Create Virtual Device. Choose a device definition -> Pixel -> Next. Select a system image -> Pie -> Next. Verify Configuration -> AVD Name -> pixel2-api28 -> Finish. Эмулятор создан. Можно его запустить, нажав на кнопку "Run" в окне "AVD Manager". ## Подключение реального устройства Для подключения реального устройства необходимо: 1. Включить отладку по USB: 1. Включить режим разработчика: Настройки -> О телефоне -> Номер сборки (нажать 5 раз). Шаги могут отличаться в зависимости от модели устройства и версии Android. В настройках появится пункт "Для разработчика". 2. Перейти в раздел настроек "Для разработчиков" и включить "Отладка по USB". 2. Подключить устройство к компьютеру по кабелю. 3. Подтвердить разрешение на отладку по USB на устройстве. ## Запуск приложения на эмуляторе и устройстве Для запуска приложения необходимо сперва выбрать устройство (слева от кнопки "Run"), на котором будет выполнен запуск, а затем нажать кнопку "Run". ## Структура проекта Изучим структуру проекта приложения. Вкладка "Project" на панели слева отображает структуру проекта. Режим "Android" не отображает реальную структуру проекта, но он удобен для разработки. Режим "Project" отображает реальную структуру проекта в файловой системе. Рассмотрим структуру проекта в режиме "Android". На верхнем уровне проект отображает свои модули и список Gradle-скриптов. Проект может содержать более, чем один модуль, но по-умолчанию у него есть хотя бы один модуль `app` с исходным кодом приложения. Gradle-скрипты — это сборочные скрипты проекта, описывающие этапы сборки, зависимости и другую необходимую для сборки проекта информацию. О них позже. Модуль `app` содержит разделы: * `manifests` — содержит файл манифеста приложения `AndroidManifest.xml`, * `java` — содержит исходный код приложения на языке Java или Kotlin, * `res` — содержит ресурсы приложения, такие как изображения, иконки, переводимые строки, файлы разметки интерфейса и др. Манифест `AndroidManifest.xml` располагается в корневом каталоге проекта. Он содержит важную информацию о приложении, которая требуется системе Android для выполнения какого-либо кода приложения. Среди прочего файл манифеста выполняет следующее: * Задает имя пакета для приложения. Имя пакета служит его уникальным идентификатором в системе Android и в магазине Google Play. * Описывает различные компоненты приложения: активности (Activities), службы (Services), провайдеры контента (Content Providers) и др. На основании этих описаний система Android может определить, из каких компонентов состоит приложение и при каких условиях их можно использовать. * Объявляет какие разрешения приложение может запрашивать у пользователя, чтобы приложение могло получить доступ к защищенным API системы. Например, это могут быть разрешения на чтение контактов, текущего местоположения пользователя, или доступ к файловой системе. * Объявляет минимальный уровень API (версию) Android, который требуется приложению. Раздел (или каталог) `java` содержит исходный код приложения. При создании нового проекта с пустой активностью создается лишь один файл исходного кода — класс `MainActivity`, содержащий код единственного экрана приложения. Класс `MainActivity` по-умолчанию содержит лишь один переопределенный метод `onCreate()`, наследованный от класса `AppCompatActivity`. ```java class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } ``` Вызов `setContentView()` как ясно из названия метода, устанавливает контент для отображения на экране для данной активности. В качестве параметра в метод передается ссылка на ресурс с описанием разметки экрана: `activity_main.xml`. Ресурсы с разметкой экранов располагаются в каталоге `layout`. Это могут быть ресурсы с разметкой не только экранов, но каких-либо других UI-элементов. Кроме этого среди ресурсов могут содержаться изображения (`drawable`), иконки запуска (`mipmap`), определения цветов (`values/colors.xml`), переводимые строки (`values/strings.xml`), определения тем и стилей элементов приложения (`values/styles.xml`). Список Gradle-скриптов содержит конфигурационные файлы Gradle `build.gradle`. Один файл принадлежит всему проекту и описывает конфигурацию сборки проекта: репозитории зависимостей, задача очистки проекта. Второй файл принадлежит модулю `app` и описывает конфигурацию сборки конкретного модуля: описание параметров системы Android, зависимости от библиотек. Если проект содержит более, чем один модуль, то и Gradle-файлов он содержит больше — по одному на каждый модуль. ## Приложение `Dice Roller` В качестве простейшего примера создадим приложение "Dice Roller", которое будет иметь один единственный экран с изображением игрального кубика и кнопкой для имитации броска. Заготовка для приложения уже создана. Далее необходимо: 1. Добавить кнопку для броска. 2. Добавить обработчик нажатия на кнопку, который будет описывать действия необходимые для имитации броска. 3. Добавить изображения игрального кубика. Готовый пример располагается в каталоге рядом с данным конспектом. ### Добавление кнопки Игральный кубик содержат точки в диапазоне от 1 до 6. Таким образом кнопка для имитации броска должна генерировать случайное число от 1 до 6. Сперва рассмотрим добавление кнопки без добавления изображения, а для проверки работы кнопки необходимо подготовить текстовое поле для отображения числа от 1 до 6. **1. Изменение текста и его размера на экране (activity_main.xml):** ```xml ``` **2. Добавление кнопки (тега `Button`):** ```xml