Основы разработки в Android Studio

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

1. Знакомство с Android Studio: установка, настройка SDK и обзор интерфейса

Знакомство с Android Studio: установка, настройка SDK и обзор интерфейса

Добро пожаловать в курс «Основы разработки в Android Studio»! Это наша первая статья, и она посвящена фундаменту, на котором будет строиться всё ваше дальнейшее обучение. Прежде чем мы напишем первую строчку кода, нам необходимо подготовить рабочее место.

В этой статье мы разберем, что такое Android Studio, как её правильно установить, что такое SDK и почему он так важен, а также совершим экскурсию по интерфейсу этой мощной среды разработки.

Что такое Android Studio?

Android Studio — это официальная интегрированная среда разработки (IDE) для создания приложений под операционную систему Android. Она построена на базе IntelliJ IDEA от компании JetBrains, которая славится своими умными инструментами для написания кода.

Простыми словами, это программа, которая объединяет в себе всё необходимое для создания приложений: текстовый редактор для кода, инструменты для дизайна интерфейсов, эмулятор телефона для тестирования и систему сборки готового приложения.

Почему именно Android Studio?

* Официальная поддержка Google: Вы всегда получаете самые свежие обновления и инструменты первыми. * Умный редактор кода: Подсказки, автодополнение и проверка ошибок в реальном времени. * Визуальный редактор макетов: Возможность «собирать» экраны приложения из готовых компонентов (кнопок, текстовых полей) с помощью мыши. * Gradle: Мощная система автоматической сборки проектов.

Шаг 1: Установка Android Studio

Процесс установки может немного отличаться в зависимости от вашей операционной системы (Windows, macOS или Linux), но общие принципы одинаковы.

Системные требования

Разработка под Android требует ресурсов. Для комфортной работы рекомендуется:

* Оперативная память (RAM): Минимум 8 ГБ, но настоятельно рекомендуется 16 ГБ и выше. * Диск: SSD (твердотельный накопитель). Работа на обычном HDD будет мучительно медленной. * Экран: Разрешение 1920x1080 (Full HD) или выше, так как интерфейс содержит много панелей.

Процесс загрузки и установки

  • Перейдите на официальный сайт Android Developers.
  • Нажмите кнопку Download Android Studio.
  • Примите лицензионное соглашение и скачайте установочный файл.
  • Запустите файл и следуйте инструкциям мастера установки.
  • > Важно: На этапе выбора компонентов убедитесь, что галочка стоит напротив Android Virtual Device. Это позволит вам запускать эмулятор телефона на компьютере.

    !Диаграмма процесса установки Android Studio от загрузки до первого запуска

    Шаг 2: Первый запуск и настройка SDK

    После установки и первого запуска вы увидите окно Setup Wizard (Мастер настройки). Здесь происходит самое важное — загрузка Android SDK.

    Что такое SDK?

    SDK (Software Development Kit) — это «набор инструментов разработчика». Представьте, что Android Studio — это верстак, а SDK — это молотки, отвертки, пилы и материалы, которые лежат на этом верстаке. Без SDK сама по себе студия не сможет создать приложение.

    SDK включает в себя:

    * Android Platform: Библиотеки для конкретной версии Android (например, Android 14). * Build Tools: Инструменты для превращения вашего кода в файл приложения (.apk). * Platform Tools: Утилиты для взаимодействия с подключенным телефоном (например, ADB).

    Настройка через SDK Manager

    Обычно мастер настройки скачивает всё необходимое автоматически. Однако полезно знать, как управлять этими инструментами вручную. Для этого в Android Studio существует SDK Manager.

    Чтобы попасть в него (на стартовом экране): More Actions > SDK Manager.

    Внутри вы увидите три важные вкладки:

  • SDK Platforms: Здесь вы выбираете, под какие версии Android вы хотите разрабатывать. Рекомендуется установить последнюю стабильную версию (например, Android 14.0) и одну-две предыдущих для тестирования.
  • SDK Tools: Здесь находятся инструменты сборки. Убедитесь, что установлены Android SDK Build-Tools, Android Emulator и Android SDK Platform-Tools.
  • SDK Update Sites: Источники обновлений (обычно менять не нужно).
  • Шаг 3: Создание первого проекта

    Чтобы увидеть основной интерфейс, нам нужно создать проект. На стартовом экране нажмите New Project.

  • В окне выбора шаблона выберите Empty Views Activity (или просто Empty Activity в новых версиях). Это создаст пустой экран.
  • Нажмите Next.
  • В поле Name введите My First App.
  • В поле Language убедитесь, что выбран Kotlin (это основной язык современной Android-разработки).
  • Нажмите Finish.
  • Студия начнет сборку проекта. Это может занять некоторое время, так как система сборки Gradle будет скачивать необходимые библиотеки. Дождитесь, пока индикаторы загрузки внизу справа исчезнут.

    Шаг 4: Обзор интерфейса Android Studio

    Когда проект откроется, перед вами предстанет рабочее пространство. Оно может показаться сложным, но мы разделим его на логические зоны.

    !Основные зоны интерфейса Android Studio: Панель проекта, Редактор, Инструменты и Логи

    1. Панель проекта (Project Tool Window)

    Находится слева. Здесь отображается структура файлов вашего приложения. По умолчанию включен режим отображения Android, который группирует файлы логически, а не так, как они лежат на диске.

    Основные папки, которые вы здесь увидите:

    * app/manifests: Содержит файл AndroidManifest.xml — «паспорт» вашего приложения, где описаны его основные характеристики. * app/java: Здесь лежит исходный код на Kotlin (или Java). * app/res: Ресурсы (картинки, макеты экранов, строки текста). * Gradle Scripts: Скрипты для сборки проекта.

    2. Редактор (Editor Window)

    Центральная и самая большая часть. Здесь вы пишете код или верстаете интерфейс. Если вы откроете файл с расширением .kt (Kotlin), вы увидите текстовый редактор. Если откроете файл макета .xml, студия предложит вам визуальный редактор (Design) или редактор кода (Code).

    3. Панель инструментов (Toolbar)

    Находится вверху. Самые важные кнопки здесь:

    * Run (Зеленый треугольник): Запустить приложение. * Debug (Жучок): Запустить в режиме отладки (для поиска ошибок). * Device Selection: Выпадающий список, где можно выбрать эмулятор или подключенный реальный телефон.

    4. Окна инструментов (Tool Windows)

    Расположены по периметру (внизу и с боков). Они скрываются и раскрываются по клику.

    * Logcat: Окно логов. Здесь вы будете видеть сообщения от вашего приложения и системные ошибки. Это главный инструмент для понимания того, что происходит «под капотом» во время работы программы. * Build: Показывает процесс сборки приложения и ошибки компиляции, если они есть. * Terminal: Встроенная командная строка.

    Настройка внешнего вида

    Комфорт — залог продуктивности. Вы можете изменить тему оформления (светлую или темную).

    Перейдите в File > Settings (на Windows) или Android Studio > Settings (на macOS), затем выберите Appearance & Behavior > Appearance. В выпадающем списке Theme выберите ту, которая приятнее вашим глазам (например, Darcula или IntelliJ Light).

    Заключение

    Мы успешно установили Android Studio, разобрались с понятием SDK и изучили основные элементы интерфейса. Теперь у вас есть полностью готовая лаборатория для создания мобильных приложений.

    В следующей статье мы подробно разберем структуру Android-проекта, узнаем, за что отвечает каждый файл, и напишем нашу первую простую программу.

    2. Создание пользовательского интерфейса: работа с XML, Layout Editor и основными виджетами

    Создание пользовательского интерфейса: работа с XML, Layout Editor и основными виджетами

    Приветствую вас во второй статье курса «Основы разработки в Android Studio»! В прошлый раз мы подготовили нашу «лабораторию»: установили среду разработки и запустили первый пустой проект. Теперь пришло время наполнить это пустое пространство смыслом и формой.

    Сегодня мы займемся тем, что видит пользователь — интерфейсом (UI, User Interface). Мы узнаем, как Android «понимает», где должна находиться кнопка, а где — текст, разберем язык разметки XML и научимся пользоваться визуальным конструктором.

    Как устроен интерфейс в Android?

    В Android принято разделять внешний вид приложения и его логику. Это похоже на строительство дома: есть чертежи и дизайн интерьера (внешний вид), а есть проводка, водопровод и электричество (логика).

    * Логика пишется на языке Kotlin (или Java). Файлы с расширением .kt. * Внешний вид описывается на языке XML. Файлы с расширением .xml.

    Такое разделение позволяет дизайнерам и программистам работать параллельно, а также легко менять внешний вид приложения, не переписывая сложный программный код.

    Что такое XML?

    XML (eXtensible Markup Language) — это расширяемый язык разметки. Если вы когда-либо видели HTML-код веб-страниц, XML покажется вам очень знакомым. Он состоит из тегов, вложенных друг в друга.

    Каждый элемент интерфейса (кнопка, картинка, текстовое поле) описывается своим тегом. У каждого тега есть атрибуты — свойства, определяющие его цвет, размер и положение.

    Пример простого кода кнопки:

    Знакомство с Layout Editor

    Писать XML-код вручную полезно, но Android Studio предоставляет мощный инструмент для визуального создания интерфейсов — Layout Editor.

    Откройте ваш проект. В панели слева (Project) перейдите по пути: app -> res -> layout -> activity_main.xml. Дважды кликните по файлу.

    В правой верхней части окна редактора вы увидите три кнопки переключения режимов:

  • Code: Показывает только XML-код.
  • Split: Разделяет экран: слева код, справа — предпросмотр результата. Это самый популярный режим у опытных разработчиков.
  • Design: Показывает только визуальный редактор. Здесь можно перетаскивать элементы мышкой, как в конструкторе.
  • !Режимы отображения редактора макетов: Code, Split и Design

    Панель Palette и Component Tree

    В режиме Design обратите внимание на левую часть:

    * Palette (Палитра): Здесь находятся все доступные компоненты (кнопки, переключатели, текстовые поля), сгруппированные по категориям. Вы можете просто перетащить их на экран смартфона в центре. * Component Tree (Дерево компонентов): Показывает иерархию элементов на вашем экране. Это важно, потому что одни элементы могут находиться внутри других.

    Иерархия View и ViewGroup

    Все, что вы видите на экране Android-устройства, является объектом класса View (Вид). Кнопки, тексты, картинки — всё это наследники View.

    Однако, элементы не могут просто висеть в вакууме. Им нужен контейнер, который определит, как именно они будут располагаться (в столбик, в строчку или друг на друге). Такие контейнеры называются ViewGroup.

    > Представьте, что View — это книги, а ViewGroup — это книжная полка. Полка сама по себе тоже является мебелью (объектом), но её главная задача — держать книги в порядке.

    Самые популярные контейнеры (ViewGroup):

  • ConstraintLayout: (используется по умолчанию). Позволяет «привязывать» элементы к краям экрана или к другим элементам. Очень гибкий.
  • LinearLayout: Располагает элементы строго в одну линию — либо вертикально, либо горизонтально.
  • FrameLayout: Самый простой контейнер. Элементы складываются в левый верхний угол друг на друга, как стопка фотографий.
  • Основные виджеты (Widgets)

    Давайте разберем «кирпичики», из которых строится приложение. В Android их называют виджетами.

    1. TextView (Текстовое поле)

    Используется для отображения текста, который пользователь не может редактировать. Это заголовки, подписи, инструкции.

    Ключевой атрибут: android:text="Привет, мир!"

    2. EditText (Поле ввода)

    Поле, в которое пользователь может вводить текст. Используется для форм регистрации, поиска и чатов.

    Ключевой атрибут: android:hint="Введите имя" (подсказка, которая исчезает при вводе).

    3. Button (Кнопка)

    Обычная нажимаемая кнопка.

    Ключевой атрибут: android:text="Отправить" (надпись на кнопке).

    4. ImageView (Изображение)

    Служит для показа картинок и иконок.

    Ключевой атрибут: android:src="@drawable/my_image" (источник картинки).

    Важнейшие атрибуты XML

    У любого элемента View есть набор обязательных атрибутов. Без них Android Studio выдаст ошибку.

    Размеры: layout_width и layout_height

    Каждый элемент должен знать свою ширину и высоту. Для этого используются два специальных значения:

    * wrap_content («обернуть содержимое»): Элемент займет ровно столько места, сколько нужно для его содержимого (текста или картинки). * match_parent («соответствовать родителю»): Элемент растянется на всю доступную ширину или высоту родительского контейнера.

    Единицы измерения: dp и sp

    В Android запрещено использовать пиксели (px) для размеров элементов интерфейса. Почему? Потому что экраны телефонов имеют разную плотность пикселей. Кнопка размером 100px на старом телефоне будет огромной, а на современном флагмане — микроскопической.

    Вместо пикселей используются:

  • dp (density-independent pixels): Независимые от плотности пиксели. Используются для размеров кнопок, отступов, картинок. 100dp будут выглядеть физически одинаково на любом экране.
  • sp (scale-independent pixels): Масштабируемые пиксели. Используются только для размера текста. Они ведут себя как dp, но также учитывают настройки шрифта пользователя в системе (если у бабушки в настройках телефона стоит «Крупный текст», то sp увеличится).
  • !Разница между использованием px и dp на экранах с разной плотностью пикселей

    Идентификатор: id

    Чтобы мы могли обращаться к элементу из кода Kotlin (например, чтобы поменять текст или обработать нажатие), у элемента должно быть уникальное имя.

    Синтаксис: android:id="@+id/unique_name"

    Практика: Создаем экран входа

    Давайте закрепим теорию и создадим простую форму входа, состоящую из заголовка, поля ввода и кнопки.

  • Откройте activity_main.xml в режиме Split.
  • Убедитесь, что корневым элементом является ConstraintLayout.
  • Удалите существующий там код TextView (если есть).
  • Вставьте следующий код внутрь тега ConstraintLayout:

    Разбор магии ConstraintLayout

    Обратите внимание на атрибуты, начинающиеся с app:layout_constraint.... Именно они определяют положение элементов.

    * layout_constraintTop_toTopOf="parent": Верх элемента привязан к верху родителя (экрана). * layout_constraintTop_toBottomOf="@id/headerText": Верх элемента привязан к низу элемента с id headerText.

    Благодаря этим «пружинкам» (Constraints) интерфейс не рассыпается при повороте экрана или на устройствах с другим соотношением сторон.

    Заключение

    Сегодня мы сделали большой шаг вперед. Мы разобрались с XML, изучили основные виджеты и поняли, почему нельзя использовать пиксели для верстки. Теперь вы можете создавать статичные экраны любой сложности.

    Но красивый интерфейс — это только половина дела. В следующей статье мы «оживим» наше приложение: научимся связывать XML-элементы с кодом Kotlin и обрабатывать нажатия кнопок.

    До встречи на следующем уроке!

    3. Основы логики приложения: Activity, жизненный цикл и обработка событий

    Основы логики приложения: Activity, жизненный цикл и обработка событий

    Приветствую вас в третьей части курса «Основы разработки в Android Studio»! В предыдущих уроках мы подготовили рабочее место и научились создавать внешний вид приложения с помощью XML. У нас есть красивые кнопки и поля ввода, но пока они абсолютно бесполезны: при нажатии ничего не происходит.

    Сегодня мы вдохнем жизнь в наше приложение. Мы разберем, что такое Activity, как связать дизайн с программным кодом на Kotlin и, самое главное, изучим жизненный цикл приложения — концепцию, без которой невозможно написать стабильную программу под Android.

    Что такое Activity?

    Если XML-файлы — это «лицо» вашего приложения, то Activity (Активность) — это его «мозг» и одновременно «рамка», в которой это лицо отображается.

    Простыми словами, Activity — это один экран приложения. Когда вы открываете список контактов — это одна Activity. Когда нажимаете на конкретный контакт и открывается его карточка — запускается другая Activity.

    Связь Activity и XML

    Вспомните, когда мы создавали проект, Android Studio сгенерировала файл MainActivity.kt. Давайте заглянем в него. Вы увидите примерно такой код:

    Обратите внимание на строку setContentView(R.layout.activity_main). Это и есть тот самый мостик, который соединяет логику (Kotlin) и дизайн (XML).

    * R.layout.activity_main — это ссылка на ваш файл верстки activity_main.xml. * setContentView — команда, которая говорит: «Возьми этот макет и нарисуй его на экране внутри этой активности».

    Обработка событий: заставляем кнопки работать

    Чтобы отреагировать на действия пользователя (например, нажатие кнопки), нам нужно найти элемент интерфейса в коде и «повесить» на него слушатель событий.

    Шаг 1: Поиск элемента по ID

    В прошлом уроке мы задавали атрибут android:id для наших виджетов. Допустим, у нас есть кнопка с id="myButton". Чтобы управлять ею в Kotlin, мы используем метод findViewById:

    Шаг 2: Установка слушателя (Listener)

    Теперь, когда у нас есть ссылка на кнопку, мы можем сказать программе, что делать при нажатии. Для этого используется OnClickListener.

    В Kotlin это выглядит очень лаконично благодаря использованию лямбда-выражений (код внутри фигурных скобок { ... }).

    Жизненный цикл Activity (Lifecycle)

    Это самая важная теоретическая часть сегодняшнего урока. В отличие от обычных компьютерных программ, которые просто запускаются и закрываются, мобильные приложения живут в очень динамичной среде. Пользователь может свернуть приложение, ему могут позвонить, батарея может сесть, или он просто повернет экран.

    В каждом из этих случаев система Android вызывает у Activity определенные методы. Совокупность этих состояний называется жизненным циклом.

    !Диаграмма жизненного цикла Activity: от создания до уничтожения

    Давайте разберем основные методы жизненного цикла («колбэки»), которые вы можете переопределить в своем классе.

    1. onCreate()

    * Когда вызывается: При самом первом создании Activity. * Зачем нужен: Здесь происходит первоначальная настройка. Именно здесь мы вызываем setContentView, находим кнопки через findViewById и инициализируем переменные. * Аналогия: Вы проснулись, открыли глаза и осознали себя.

    2. onStart()

    * Когда вызывается: Activity становится видимой пользователю, но с ней еще нельзя взаимодействовать. * Зачем нужен: Подготовка к показу интерфейса. * Аналогия: Вы встали с кровати, вас видно, но вы еще не готовы к разговору.

    3. onResume()

    * Когда вызывается: Activity находится на переднем плане и готова к работе с пользователем. * Зачем нужен: Запуск анимаций, камеры или обновлений GPS. * Аналогия: Вы полностью готовы, пьете кофе и начинаете работать.

    > Важно: Activity считается «запущенной» (Running) именно после вызова onResume().

    4. onPause()

    * Когда вызывается: Пользователь начинает покидать Activity, но она все еще частично видна (например, поверх открылось полупрозрачное окно или шторка уведомлений). * Зачем нужен: Здесь нужно поставить на паузу видео, остановить анимацию или сохранить черновик сообщения. * Аналогия: Вас отвлекли телефонным звонком, вы перестали работать, но все еще сидите за столом.

    5. onStop()

    * Когда вызывается: Activity больше не видна пользователю (приложение свернули или открыли другой экран). * Зачем нужен: Освобождение тяжелых ресурсов, которые не нужны, пока приложение не видно. * Аналогия: Вы ушли из офиса домой. Рабочее место (Activity) еще существует, но вас там нет.

    6. onDestroy()

    * Когда вызывается: Перед полным уничтожением Activity. Это может произойти, если пользователь закрыл приложение через диспетчер задач или если системе не хватает памяти. * Зачем нужен: Окончательная очистка мусора. * Аналогия: Офис закрывается, здание сносят.

    Почему это важно знать?

    Новички часто пишут весь код в onCreate и забывают об остальных методах. Это приводит к ошибкам.

    Пример проблемы: Вы создали видеоплеер. Если вы не остановите воспроизведение в методе onPause() или onStop(), то, когда пользователь свернет приложение, звук из видео продолжит играть в фоне, что будет сильно раздражать.

    Поворот экрана

    Один из самых неочевидных моментов для новичков: при повороте экрана Activity уничтожается и создается заново.

    Система вызывает цепочку: onPause -> onStop -> onDestroy -> (поворот) -> onCreate -> onStart -> onResume.

    Это делается для того, чтобы загрузить другой макет (layout) для горизонтальной ориентации. Если вы хранили какие-то данные в простых переменных, они сотрутся. О том, как сохранять данные при повороте, мы поговорим в будущих уроках, но знать об этом поведении нужно уже сейчас.

    Контекст (Context)

    В разработке под Android вы часто будете встречать слово Context. Activity является наследником класса Context.

    Context — это «ручка» для доступа к системным ресурсам. Если вам нужно получить доступ к файловой системе, базе данных, или просто загрузить картинку из ресурсов, вам понадобится Context. Поскольку Activity — это тоже Context, часто в методы можно передавать ключевое слово this.

    Практическое задание: Логирование событий

    Чтобы своими глазами увидеть, как работает жизненный цикл, вы можете использовать класс Log. Это инструмент, который пишет сообщения в системный журнал (Logcat) внизу Android Studio.

    Добавьте этот код в вашу MainActivity:

    Запустите приложение, сверните его кнопкой «Домой», а затем разверните снова. Наблюдайте за вкладкой Logcat внизу экрана.

    Заключение

    Сегодня мы разобрали фундамент логики Android-приложений. Мы узнали:

  • Activity — это экран, управляющий интерфейсом.
  • setContentView связывает XML и Kotlin.
  • OnClickListener позволяет реагировать на нажатия.
  • Жизненный цикл управляет состоянием приложения при сворачивании или повороте экрана.
  • В следующей статье мы научимся создавать многоэкранные приложения и передавать данные между ними с помощью Intent.

    Для более глубокого изучения жизненного цикла рекомендую ознакомиться с официальной документацией Android Developers.

    4. Инструменты разработчика: запуск на эмуляторе, отладка кода и использование Logcat

    Инструменты разработчика: запуск на эмуляторе, отладка кода и использование Logcat

    Приветствую вас в четвертой части курса «Основы разработки в Android Studio»! Мы уже проделали большой путь: настроили среду, сверстали первый экран и даже написали логику на Kotlin, разобравшись с жизненным циклом Activity.

    Но программирование — это не только написание кода. Это, в значительной степени, поиск и исправление ошибок. Иногда приложение падает, иногда ведет себя не так, как задумано, а иногда нам просто нужно проверить, как оно выглядит на разных экранах.

    Сегодня мы вооружимся инструментами профессионального разработчика. Мы научимся создавать виртуальные устройства (эмуляторы), читать «мысли» приложения через Logcat и останавливать время с помощью отладчика (Debugger).

    Android Virtual Device (AVD): Ваш карманный парк устройств

    У вас может быть самый современный смартфон на Android, но этого недостаточно для полноценного тестирования. Пользователи вашего будущего приложения могут запускать его на планшетах, на старых телефонах с маленькими экранами или на устройствах с другой версией Android.

    Покупать все эти телефоны не нужно. Android Studio позволяет создать Android Virtual Device (AVD) — эмулятор, который программно имитирует реальное устройство.

    Как создать эмулятор?

    Для управления виртуальными устройствами используется инструмент Device Manager.

  • В Android Studio найдите иконку телефона в правой боковой панели или в верхнем меню выберите Tools > Device Manager.
  • Нажмите кнопку + (Create Virtual Device).
  • Select Hardware: Выберите модель телефона. Рекомендую выбирать модели с иконкой Play Store (треугольник), например, Pixel 6 или Pixel 7. Это гарантирует наличие сервисов Google.
  • System Image: Выберите версию Android. Рекомендуется скачивать последнюю стабильную версию (например, Android 14, API 34) или ту, которая помечена как Recommended.
  • Verify Configuration: Здесь можно дать имя эмулятору (например, "My Pixel Emulator"). Нажмите Finish.
  • !Интерфейс менеджера устройств, где создаются и запускаются эмуляторы

    Запуск приложения на эмуляторе

    После создания эмулятора он появится в выпадающем списке на верхней панели инструментов (рядом с зеленой кнопкой Play).

  • Выберите созданный эмулятор в списке.
  • Нажмите кнопку Run (зеленый треугольник).
  • Подождите. Первый запуск эмулятора может занять несколько минут — это нормально, так как компьютер загружает полноценную операционную систему.
  • > Совет: Не закрывайте окно эмулятора каждый раз после проверки. Оставьте его запущенным, и последующие запуски вашего приложения будут происходить почти мгновенно.

    Logcat: Читаем мысли приложения

    Представьте, что ваше приложение — это черный ящик. Вы нажимаете кнопку, но ничего не происходит. Почему? Ошибка в коде? Не сработал слушатель? Или интернет пропал?

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

    В Android Studio этот журнал называется Logcat. Окно Logcat обычно находится в нижней части экрана.

    Класс Log

    В Kotlin для записи сообщений используется класс Log. У него есть несколько методов для разных уровней важности сообщений:

    * Log.v(tag, msg)Verbose: Подробности, наименее важные сообщения. * Log.d(tag, msg)Debug: Отладочная информация (самый частый вариант). * Log.i(tag, msg)Info: Информационные сообщения (например, «Соединение установлено»). * Log.w(tag, msg)Warning: Предупреждения (что-то пошло не так, но приложение работает). * Log.e(tag, msg)Error: Ошибки (обычно критические сбои).

    Структура лога

    Каждый метод принимает два параметра:

  • TAG (Тег): Строка-идентификатор, по которой легко найти сообщение. Обычно это имя класса, например "MainActivity".
  • Message (Сообщение): Текст, который вы хотите вывести.
  • Пример использования в коде:

    Фильтрация в Logcat

    Когда вы откроете Logcat, вы увидите поток тысяч сообщений от самой системы Android. Найти там своё — как искать иголку в стоге сена.

    Чтобы увидеть только свои сообщения:

  • В поле поиска Logcat введите: tag:MainActivityLog (или тот тег, который вы использовали).
  • Либо выберите в фильтрах package:mine, чтобы видеть логи только от вашего приложения.
  • !Окно Logcat, демонстрирующее, как фильтровать сообщения по тегам и уровням важности

    Отладка (Debugging): Остановка времени

    Логи — это хорошо, но иногда их недостаточно. Представьте, что переменная score должна быть равна 10, а она равна 0. Где именно она обнулилась? Писать Log.d после каждой строчки долго.

    Здесь на сцену выходит Debugger (Отладчик). Это мощнейший инструмент, который позволяет поставить выполнение программы на паузу в любой строчке кода и посмотреть значения всех переменных в этот момент.

    Точки останова (Breakpoints)

    Чтобы остановить программу, нужно поставить Breakpoint.

  • Откройте файл с кодом (например, MainActivity.kt).
  • Кликните левой кнопкой мыши на серое поле справа от номера строки (Gutter). Там появится красный круг.
  • Теперь запустите приложение не через кнопку Run (Треугольник), а через кнопку Debug (Зеленый жучок).
  • Когда выполнение программы дойдет до этой строки, приложение «замрет» на телефоне, а в Android Studio откроется панель Debug.

    Управление выполнением

    В режиме отладки у вас есть пульт управления временем (кнопки в панели Debug):

  • Step Over (F8): Выполнить текущую строку и перейти к следующей. Если в строке есть вызов функции, отладчик не будет заходить внутрь неё, а просто выполнит и пойдет дальше.
  • Step Into (F7): Зайти внутрь функции. Используйте это, если хотите проверить, как работает вызываемый метод.
  • Step Out (Shift + F8): Выйти из текущей функции обратно туда, где она была вызвана.
  • Resume Program (F9): Снять с паузы и продолжить выполнение до следующей точки останова.
  • Просмотр переменных

    В панели Debug есть вкладка Variables. Там отображаются все переменные, видимые в текущем контексте, и их значения.

    Вы можете увидеть, что userName = "Alex", а userAge = 25. Более того, вы можете кликнуть правой кнопкой мыши на переменную и выбрать Set Value, чтобы изменить её значение прямо «на лету» и проверить, как программа поведет себя с новыми данными, не перезапуская её.

    Реальное устройство vs Эмулятор

    Что лучше использовать?

    | Характеристика | Эмулятор | Реальное устройство | | :--- | :--- | :--- | | Скорость запуска | Медленно (первый раз) | Мгновенно | | Нагрузка на ПК | Высокая (требует много RAM) | Нулевая | | Датчики | Имитация (GPS, акселерометр) | Реальные | | Удобство | Всегда на экране монитора | Нужно держать в руках/на подставке | | Камера | Веб-камера или заглушка | Реальная камера |

    Рекомендация: Используйте эмулятор для быстрой верстки и проверки логики. Используйте реальное устройство для тестирования анимаций, работы с камерой, геолокацией и финальной проверки перед релизом.

    Распространенные проблемы и решения

    1. Эмулятор тормозит

    Если у вас процессор Intel, убедитесь, что установлен HAXM (Hardware Accelerated Execution Manager). Если процессор AMD — проверьте настройки Hyper-V. В современных версиях Android Studio это обычно настраивается автоматически, но иногда требует включения виртуализации в BIOS.

    2. Logcat пустой

    Иногда связь с устройством теряется. Попробуйте в выпадающем списке устройств в Logcat выбрать другое устройство, а затем снова ваше. Если не помогло — перезапустите Logcat (кнопка с корзиной очищает логи, а кнопка перезагрузки перезапускает процесс).

    3. App not responding (ANR)

    Если вы поставили точку останова (Breakpoint), приложение на телефоне зависнет. Через некоторое время Android может предложить закрыть его, думая, что оно сломалось. Это нормально при отладке, просто не нажимайте «Закрыть» на телефоне.

    Заключение

    Теперь вы не просто пишете код вслепую. У вас есть: * Эмулятор для проверки интерфейса на разных экранах. * Logcat для получения отчетов о работе программы. * Debugger для хирургического вмешательства и поиска ошибок.

    Эти инструменты сэкономят вам сотни часов времени. В следующей статье мы перейдем к одной из самых интересных тем — созданию многоэкранных приложений и навигации между ними с помощью Intent.

    До встречи в следующем уроке!

    5. Система сборки Gradle, управление зависимостями и подготовка приложения к публикации

    Система сборки Gradle, управление зависимостями и подготовка приложения к публикации

    Приветствую вас в пятой части курса «Основы разработки в Android Studio»! Мы уже прошли большой путь: изучили интерфейс студии, научились верстать экраны на XML, написали логику на Kotlin и даже освоили инструменты отладки. У вас на руках есть работающее приложение. Но пока оно живет только внутри вашего компьютера или на эмуляторе.

    Как превратить набор файлов с кодом в готовый продукт, который можно отправить другу или выложить в Google Play? Как подключить сторонние библиотеки, чтобы не писать всё с нуля? За всё это отвечает Gradle.

    В этой статье мы заглянем «под капот» процесса сборки, разберемся с версиями Android SDK и подготовим ваше приложение к релизу.

    Что такое Gradle?

    Gradle — это продвинутая система автоматизации сборки. Если Android Studio — это завод, где вы проектируете детали (пишете код), то Gradle — это главный инженер и конвейер, который собирает эти детали в готовый автомобиль (приложение).

    Когда вы нажимаете зеленую кнопку Run, Gradle выполняет огромную работу:

  • Компилирует код Kotlin в байт-код.
  • Обрабатывает ресурсы (картинки, XML-макеты).
  • Скачивает и подключает необходимые библиотеки.
  • Упаковывает всё это в один файл (APK или AAB).
  • Подписывает файл цифровым ключом.
  • !Визуализация того, как Gradle преобразует исходный код и ресурсы в готовое приложение

    Почему Gradle, а не просто «Сохранить как...»?

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

    Структура скриптов сборки

    В вашем проекте есть несколько файлов с названием build.gradle (или build.gradle.kts, если используется Kotlin DSL, что является современным стандартом). Давайте разберемся, где они лежат и за что отвечают.

    В режиме просмотра Android (панель слева) вы увидите раздел Gradle Scripts.

    1. build.gradle.kts (Project: My Application)

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

    2. build.gradle.kts (Module: :app)

    Это самый важный файл. Здесь живут настройки конкретно вашего приложения. Давайте разберем его ключевые блоки.

    Разбираемся с версиями SDK

    Новички часто путаются в трех параметрах SDK. Давайте раз и навсегда проясним разницу.

    compileSdk

    Это версия Android, которую использует Gradle для компиляции вашего кода. Если вы поставите здесь 34 (Android 14), вы сможете использовать в коде новые фишки, появившиеся в Android 14. Это не влияет на то, на каких телефонах запустится приложение, это влияет только на процесс сборки.

    minSdk

    Это минимальная версия Android, на которой приложение вообще сможет установиться. Если у пользователя Android 7 (API 24), а вы поставили minSdk = 26 (Android 8), Google Play просто не покажет ему ваше приложение.

    > Совет: Не пытайтесь поддерживать совсем древние версии. На данный момент minSdk 24 (Android 7.0) покрывает более 90% устройств в мире.

    targetSdk

    Это версия, под которую вы тестировали и оптимизировали приложение. Это сигнал системе Android: «Я знаю, как работать на этой версии». Например, в новых версиях Android меняются правила работы с уведомлениями или доступом к файлам. Если ваш targetSdk ниже версии Android на телефоне пользователя, система включит режим совместимости, чтобы приложение не сломалось.

    Google Play требует, чтобы targetSdk всегда был актуальным (обычно не ниже последней стабильной версии Android).

    Управление зависимостями (Dependencies)

    Одна из главных суперсил Gradle — управление зависимостями. Вам не нужно скачивать .jar файлы вручную и складывать их в папки.

    Внизу файла build.gradle.kts (Module: :app) есть блок dependencies:

    Как добавить библиотеку?

    Допустим, вы хотите загружать картинки из интернета. Для этого популярна библиотека Coil или Glide. Раньше мы писали строку прямо здесь, но в современных версиях Android Studio используется Version Catalog.

  • Откройте файл libs.versions.toml в папке Gradle Scripts.
  • В секцию [versions] добавьте версию библиотеки.
  • В секцию [libraries] добавьте ссылку на библиотеку.
  • Нажмите Sync Now (желтая полоска вверху).
  • Теперь добавьте implementation в build.gradle.kts, ссылаясь на каталог.
  • Это кажется сложнее, но позволяет управлять версиями всех библиотек в одном месте.

    Подготовка к публикации (Release)

    Когда приложение готово, его нужно собрать для публикации. До этого момента мы использовали Debug сборку. Она позволяет подключать отладчик, но работает медленнее и небезопасна.

    Для магазина приложений нам нужна Release сборка.

    Шаг 1: Application ID

    Убедитесь, что ваш applicationId в build.gradle уникален. Это как паспортный номер приложения. Обычно он выглядит как перевернутый домен: com.companyname.appname. После публикации изменить его будет невозможно.

    Шаг 2: Версионирование

    * versionCode — целое число (1, 2, 3...). Используется магазином для понимания, что вы загрузили обновление. Каждая новая загрузка должна иметь код больше предыдущего. * versionName — строка для пользователей ("1.0", "2.1-beta"). Может быть любой.

    Шаг 3: Подпись приложения (Signing)

    Android требует, чтобы каждое приложение было подписано цифровым сертификатом разработчика. Это гарантирует, что обновление для приложения выпустили именно вы, а не злоумышленник.

  • В меню выберите Build > Generate Signed Bundle / APK.
  • Выберите Android App Bundle (это современный формат для Google Play).
  • Нажмите Next.
  • В поле Key store path нажмите Create new.
  • !Интерфейс создания цифрового ключа для подписи приложения

    Вам нужно будет создать файл хранилища ключей (.jks).

    ВАЖНО: * Запомните пароли от хранилища (Store Password) и от ключа (Key Password). * Никогда не теряйте файл .jks! Если вы его потеряете, вы не сможете обновить свое приложение в Google Play. Вам придется создавать новое приложение с другим applicationId и терять всех пользователей.

    Шаг 4: R8 и ProGuard

    В релизной сборке включается инструмент R8. Он делает три вещи:

  • Shrinking (Сжатие): Удаляет неиспользуемый код и ресурсы.
  • Obfuscation (Обфускация): Переименовывает классы и методы в короткие бессмысленные имена (a.b(), c.d()). Это уменьшает размер файла и усложняет взлом приложения.
  • Optimization (Оптимизация): Улучшает код для быстродействия.
  • Включается это в build.gradle:

    APK vs AAB

    В мастере создания вы видели выбор между APK и App Bundle (AAB).

    * APK (Android Package): Старый формат. Это готовый установочный файл, который содержит ресурсы для всех экранов и языков сразу. Он тяжелый. * AAB (Android App Bundle): Новый формат. Вы загружаете его в Google Play, и магазин сам генерирует маленькие APK под конкретное устройство пользователя. Если у пользователя английский язык и экран низкой плотности, он не будет скачивать французский перевод и картинки высокого разрешения.

    Для публикации в Google Play сейчас обязателен формат AAB.

    Заключение

    Поздравляю! Теперь вы знаете не только как писать код, но и как превратить его в готовый продукт. Мы разобрали:

  • Gradle — ваш верный строитель.
  • SDK Versions — баланс между новыми фичами и охватом аудитории.
  • Dependencies — способ расширить возможности приложения.
  • Signing — паспорт безопасности вашего приложения.
  • Ваше приложение готово к покорению мира. В следующих статьях (если они будут в расширенном курсе) можно было бы углубиться в архитектуру или работу с сетью, но база у вас уже есть.

    Удачи в разработке!