Перейти к основному содержимому
09ФУНДАМЕНТ · ГЛАВА 09Android Studio: знакомство с IDE

Android Studio: знакомство с IDE

Прочитано 0%Квизы 0/6Тренажёры 0/6Уровень 1 · Новичок

Зачем это нужно

Программа — это текст, а текст можно набрать хоть в блокноте. Но блокнот не знает, что ты пишешь код: он не подскажет, что в слове опечатка, не покажет, где не хватает скобки, и уж точно не соберёт из твоего текста работающее приложение. Для этого существует интегрированная среда разработки (IDE, Integrated Development Environment) — программа, в которой под одной крышей живут редактор кода, сборщик, запуск приложения и поиск ошибок. Разница как между отвёрткой и оборудованной мастерской: закрутить один шуруп можно и отвёрткой, но собирать шкаф удобнее там, где всё под рукой.

Для Android официальная IDE — Android Studio от Google, построенная на движке IntelliJ IDEA. В ней работают и профессиональные разработчики, и участники чемпионата «Профессионалы»: на площадке тебя будет ждать именно она, а не какой-то упрощённый онлайн-редактор. В этой главе мы пройдём весь путь по шагам: поставим Android Studio на Ubuntu официальным способом, разберём каждую панель окна по отдельности, создадим первый проект с объяснением каждого поля мастера, соберём виртуальный телефон и запустим на нём приложение — а в конце научимся узнавать по симптомам три самые частые беды новичка: неудавшуюся синхронизацию Gradle, эмулятор, который отказывается стартовать, и SDK, требующий принять лицензии. Ничего не считаем очевидным: если на экране появилась кнопка, поле или сообщение — разберём, что оно значит и откуда взялось.

Как это было
Android начинался не в Google. В 2003 году Энди Рубин с тремя партнёрами основал стартап Android Inc. — и сначала делал операционную систему для цифровых фотокамер. Рынок камер оказался слишком мал, стартап переключился на телефоны, и в 2005 году Google купила компанию — по оценкам, примерно за 50 миллионов долларов. Первый Android-смартфон, HTC Dream (T-Mobile G1), вышел только в 2008-м — а сегодня Android работает на миллиардах устройств.

Чем IDE лучше блокнота

IDE понимает язык, на котором ты пишешь. Пока ты набираешь код, она:

  • подчёркивает ошибки сразу, а не после запуска — как проверка орфографии, только для Kotlin;
  • дописывает за тебя: набрал три буквы — получил список подходящих продолжений (это называется автодополнением, completion);
  • знает весь проект (project) — совокупность файлов приложения: код, картинки, настройки сборки. Переименуешь функцию в одном файле — IDE поправит её во всех остальных, где она использовалась;
  • сама собирает и запускает приложение по нажатию одной кнопки, вместо того чтобы вручную вызывать десяток команд компилятора и упаковщика.

Всё это не магия, а работа нескольких инструментов под одной крышей — дальше в главе мы познакомимся с каждым из них по отдельности: панелью проекта, встроенным терминалом, системой сборки Gradle и монитором логов Logcat.

Установка Android Studio: Windows, macOS, Ubuntu

На площадке чемпионата встречаются все три системы — Windows, macOS и Ubuntu. Официальная страница сама определяет ОС компьютера и предлагает нужный установщик, но здесь — вкладками и по шагам, разверни свою:

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

Прежде чем качать, официальная страница просит свериться с требованиями. Минимум для Ubuntu:

  • любой 64-битный дистрибутив Linux с окружением рабочего стола Gnome, KDE или Unity и библиотекой GNU C (glibc) версии 2.31 или новее;
  • 8 ГБ оперативной памяти для самой Android Studio, 16 ГБ — если параллельно нужен эмулятор;
  • процессор с поддержкой аппаратной виртуализации (Intel VT-x или AMD-V) — про неё отдельно и подробно поговорим в разделе про эмулятор;
  • 8 ГБ свободного места на диске для Studio, 16 ГБ — вместе с эмулятором.

Скачивание и распаковка

Официальная инструкция для Linux — три шага, и это единственная из трёх ОС, где придётся открыть терминал. Во-первых, распаковать скачанный .tar.gz в подходящее место: /usr/local/ для собственного профиля пользователя или /opt/ — если компьютером пользуются несколько человек. Во-вторых, для 64-битного Ubuntu доустановить набор 32-битных библиотек, без которых часть инструментов SDK не запустится:

sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386

Эта строка — дословно из официальной инструкции, и написана она под Ubuntu 22.04 и старше. На Ubuntu 24.04 (та самая, что ждёт на чемпионате) apt оборвёт её сообщением вида «Unable to locate package libncurses5» — «не могу найти такой пакет». Причина не в тебе и не в опечатке: в 24.04 старую пятую версию библиотеки ncurses из репозиториев убрали, осталась только шестая. Поэтому на 24.04 набирай тот же список, но с libncurses6:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses6:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386

Первые две строки нужны один раз: dpkg --add-architecture i386 разрешает системе ставить 32-битные пакеты рядом с 64-битными (без этого apt ответит, что пакета с суффиксом :i386 вообще не существует), а apt-get update перечитывает списки пакетов уже с учётом новой архитектуры.

В-третьих — собственно распаковать архив и запустить сам скрипт:

sudo tar -xzf android-studio-*-linux.tar.gz -C /opt/
cd /opt/android-studio/bin
./studio.sh
Нажми на часть выражения

Скрипт называется studio.sh — это и есть тот самый studio, который просит выполнить официальная инструкция: «перейдите в каталог android-studio/bin/ и выполните studio».

Отвечено вопросов: 0 из 4
Зачем в команде sudo apt-get install libc6:i386 ... нужны именно 32-битные библиотеки на 64-битном Ubuntu?
В команде sudo tar -xzf android-studio-*-linux.tar.gz -C /opt/ что делает флаг -C?
Почему архив распаковывают именно в /opt/, а не, например, в папку Загрузки?
Что произойдёт, если пропустить мастер настройки SDK при самом первом запуске Android Studio?
Отвечено верно: 0 из 4

Первый запуск и мастер SDK

При первом запуске на любой из трёх систем открывается мастер настройки Setup Wizard. Он предложит импортировать настройки из предыдущей установки (если это первая установка — просто жми OK), а затем сам докачает Android SDK — набор инструментов и библиотек, без которых Android Studio не умеет собирать приложения под Android. Это несколько гигабайт, так что понадобятся стабильный интернет и терпение: первая загрузка идёт минут десять-двадцать в зависимости от скорости сети.

Совет

На Windows и macOS ярлык программы появляется в меню «Пуск» и Launchpad сам, установщик делает это за тебя. На Ubuntu это единственный ручной шаг: чтобы Android Studio появилась в общем списке приложений рабочего стола (а не только запускалась вручную через терминал), выбери в меню самой программы Tools → Create Desktop Entry.

Окно Android Studio: что где

Когда откроешь проект, экран будет выглядеть пугающе — панелей много. Разберём пять главных по отдельности: без них не обойтись уже в первый день.

ANDROID STUDIO · ОКНО ЗА 5 ПАНЕЛЕЙProject▸ manifests▾ kotlin+javaMainActivity.kt▸ resРедакторGradleTerminalLogcat$ ./gradlew buildProject · Редактор · Gradle · Terminal и Logcat — без них не обойтись в первый день
Пять панелей окна Android Studio: Project — дерево файлов, редактор — центр, Gradle — задачи сборки справа, Terminal и Logcat — снизу.

Редактор

Редактор занимает центр экрана — это главное место в IDE, где ты пишешь и читаешь код. Он подсвечивает синтаксис разными цветами (ключевые слова, строки, типы — каждый своим), подчёркивает ошибки красной волнистой линией ещё до попытки собрать проект, а жёлтой — предупреждения (то, что технически работает, но обычно так не делают). Слева от строк кода — узкая полоса gutter: в ней появляются номера строк, точки останова отладчика (breakpoint) и маленькие зелёные треугольники ▶ рядом с функциями, которые можно запустить одним кликом.

Project — дерево файлов

Панель Project слева показывает файлы проекта — как проводник, только заточенный под структуру Android-приложения. По умолчанию она открыта в режиме Android — это не настоящая файловая структура на диске, а удобная группировка по смыслу:

  • manifests — здесь лежит AndroidManifest.xml, файл-паспорт приложения: какие экраны у него есть, какие разрешения ему нужны;
  • kotlin+java — здесь живёт весь код, который ты пишешь: файлы .kt и, если проект их использует, .java;
  • res — здесь лежит всё, что не код: строки интерфейса, картинки, цвета, размеры;
  • Gradle Scripts — здесь собраны файлы сборки, build.gradle.kts, про которые пойдёт речь дальше.
PROJECT · ГРУППИРОВКА ПО СМЫСЛУappmanifestsAndroidManifest.xmlkotlin+javaMainActivity.ktresstrings, картинкиGradle Scriptsbuild.gradle.ktsрежим Android — не настоящие папки на диске, а удобная группировка по смыслу
Режим Android группирует файлы по смыслу, а не как они реально лежат на диске: manifests, kotlin+java, res, Gradle Scripts.

Если переключить выпадающий список наверху панели с Android на Project, откроется настоящая структура папок на диске — она устроена иначе и неудобна для повседневной работы, но иногда нужна, когда файл нужно найти именно физически.

Terminal

Панель Terminal внизу — это обычный терминал Linux (bash или zsh, смотря что установлено), встроенный прямо в IDE. Всё, что умеет система, работает и здесь — git, ls, ./gradlew, — без переключения между окнами. Для платформы это особенно удобно: команды из глав про Linux и Git выполняются ровно в этой панели.

Logcat

Logcat — журнал запущенного приложения: сюда оно построчно пишет, что с ним происходит, и сюда же падают сообщения об ошибках и полные трассировки крашей (stack trace). Это первое место, куда смотрят, когда «приложение просто закрылось» и непонятно почему: причина почти всегда написана в Logcat открытым текстом, просто нужно прокрутить к красной строке.

Панель Gradle

Справа — узкая вертикальная вкладка Gradle. Разворачиваешь её — видишь дерево задач (task) сборки: build, assembleDebug, test и десятки других, каждую из которых можно запустить кликом в обход кнопки Run. Здесь же — кнопка обновления (иконка двух круговых стрелок или слон-логотип Gradle), которой можно вручную запустить синхронизацию проекта, не дожидаясь, пока IDE попросит об этом сама.

Теперь то же самое — на интерактивной схеме окна: сначала кликай по панелям и читай, что где живёт, а потом запусти викторину и найди каждую панель по памяти:

Кликай по панелям схемы — узнаешь, что где живёт.

Pixel API 24 ▾Тулбар с RunProject1213РедакторGradleTerminal$ ./gradlew build$ git statusLogcat
Отвечено вопросов: 0 из 4
В какой панели окажется сообщение об ошибке, если приложение запустилось на эмуляторе и сразу закрылось (упало)?
Чем режим Project отличается от режима Android в панели файлов слева?
Что физически находится внутри AndroidManifest.xml, который панель Project показывает в разделе manifests?
Зачем нужен встроенный Terminal, если у Android Studio и так есть панель Project и редактор?
Отвечено верно: 0 из 4

Создаём первый проект: Empty Activity

Экран Templates: выбор шаблона

На стартовом экране жми New Project. Откроется окно с шаблонами (template) — готовыми заготовками структуры проекта под разные типы устройств: телефон, планшет, часы, телевизор. Убедись, что выбрана вкладка Phone and Tablet, и выбери карточку Empty Activity — самый простой шаблон: одно пустое окно (activity — экран приложения), на котором заранее написан текст Hello Android!. Жми Next.

Экран Configure your project: разбираем каждое поле

Следующий экран просит заполнить пять полей. Каждое — не формальность, а решение, которое повлияет на весь проект.

  • Name — человекочитаемое имя проекта, например Champ. Оно же станет именем папки на диске.
  • Package name — техническое имя пакета (package) в обратной доменной нотации: домен наоборот плюс название приложения, например com.pgkchamps.champ. Это не просто ярлык: package name служит пространством имён (namespace) для доступа к ресурсам проекта и одновременно application ID — уникальным идентификатором приложения при публикации, по которому его отличают от всех остальных приложений в мире.
  • Save location — путь на диске, куда лягут файлы проекта. По умолчанию Android Studio предлагает разумное место, но полезно запомнить, куда именно, чтобы потом найти папку в файловом менеджере.
  • Minimum SDK — минимальный уровень API (API level) Android, на котором приложение вообще согласится запуститься. У каждой версии Android свой номер API: например, API 24 — это Android 7.0 (Nougat). Чем ниже это число, тем на большем числе устройств, включая старые, заработает приложение, — но тем меньше новых системных возможностей доступно в коде. Рядом есть ссылка Help me choose, которая показывает актуальную статистику: сколько живых устройств в мире имеют версию Android не ниже выбранной.
  • Build configuration language — на каком языке будут написаны файлы сборки Gradle: Kotlin DSL (build.gradle.kts) — так стоит по умолчанию, это и есть рекомендованный вариант, оставь его — или устаревший Groovy DSL (build.gradle). Речь тут не про язык приложения, а только про язык «рецепта сборки», о котором ниже пойдёт разговор в разделе про Gradle sync.
Нажми на часть выражения

Поля Language на этом экране искать не нужно — у шаблона Empty Activity его нет: этот шаблон строит интерфейс на Jetpack Compose и генерирует заготовку только на Kotlin. Выпадающий список Language с выбором Kotlin или Java есть у соседнего шаблона Empty Views Activity (старый способ вёрстки экранов через XML-разметку). Выбор там очевиден: Kotlin — рекомендуется и обязателен для Compose, Java — ещё поддерживается, но для новых проектов не рекомендуется; почему так вышло — в углублении в конце главы.

В старых учебниках и видео на этом же экране показывают ещё флажок Use legacy android.support libraries. В актуальных версиях Android Studio его нет: старые Support-библиотеки давно не поддерживаются, и любой новый проект собирается на AndroidX без вариантов. Увидел такой флажок на скриншоте — просто перед тобой инструкция многолетней давности.

Небольшая демонстрация того, что означает minSdk на практике — не настоящий Android-код (для него нужен полноценный SDK), а модель той же идеи на чистом Kotlin, которую можно запустить прямо здесь:

fun main() { val minSdk = 24 // API 24 = Android 7.0 (Nougat) val deviceApiLevel = 21 // API 21 = Android 5.0 (Lollipop) — старый телефон val canInstall = deviceApiLevel >= minSdk println("Минимальный API приложения: $minSdk") println("API level устройства: $deviceApiLevel") println("Приложение установится: $canInstall") }

Что выведет: Минимальный API приложения: 24, API level устройства: 21, Приложение установится: false — потому что 21 меньше 24: у этого условного телефона версия Android старше, чем та, что заявлена в minSdk, и Google Play туда приложение просто не предложит.

Что происходит после Finish: Gradle sync

Жми Finish. Дальше внизу побегут полоски прогресса — это работает Gradle, система сборки. Она читает описание проекта из файлов build.gradle.kts, докачивает нужные библиотеки и готовит всё к сборке. Этот процесс называется синхронизацией (sync).

ЧТО ДЕЛАЕТ GRADLEKotlin-кодресурсы (res)библиотекиGradlebuild.gradle.ktscompile · package · signAPK/ AABлюбое изменение build.gradle.kts или новая библиотека — и Gradle просит sync заново
Gradle собирает APK не за один шаг: компилирует код, упаковывает ресурсы, докачивает библиотеки и подписывает результат — по рецепту из build.gradle.kts.
Важно

Первая синхронизация в новом проекте занимает от одной до нескольких минут в зависимости от скорости интернета — не пугайся и ничего не нажимай, дождись сообщения об успехе внизу экрана или зелёной галочки рядом с иконкой Gradle.

Экран проекта: Code / Design / Split, разбор MainActivity.kt

Открой файл MainActivity.kt в панели Project (appkotlin+java → папка с твоим package name). В правом верхнем углу редактора есть переключатель из трёх режимов: Code — только код, Design — только визуальный предпросмотр интерфейса, Split — то и другое рядом. Для первого знакомства удобнее всего Split: сразу видно, как код превращается в интерфейс.

Заготовка, которую сгенерировал шаблон Empty Activity, устроена так (это реальный код, который создаёт Android Studio — тот же самый, что показывает официальный курс Google на примере проекта с именем «Greeting Card»):

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
GreetingCardTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
Greeting("Android")
}
}
}
}
}

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
}

Этот код не запускается в обычной песочнице Kotlin (как KotlinPlay в этой главе) — он использует библиотеки Android и Jetpack Compose, которых вне Android Studio просто нет, поэтому его можно только прочитать здесь и увидеть в деле на эмуляторе. Разберём главное по частям:

  • onCreate — функция, с которой стартует любой экран (activity) в Android; именно её первой вызывает система, когда открывает твой экран, точно так же, как main() — точка входа обычной Kotlin-программы.
  • setContent { ... } — здесь описывается интерфейс через функции, помеченные аннотацией @Composable: они и рисуют то, что окажется на экране.
  • Greeting("Android") — вызов той самой функции Greeting, определённой чуть ниже, с аргументом "Android".
Нажми на часть выражения

Пересобери и посмотри на панель Design — там появится текстовый блок с надписью Hello Android!. Именно эта строка окажется на экране эмулятора, когда мы его запустим.

Отвечено вопросов: 0 из 4
В экране Configure your project поле Package name задано как com.pgkchamps.champ. Зачем нужен именно такой формат?
Ты выбрал Minimum SDK = API 24 (Android 7.0). Что это значит для владельца телефона с Android 5.0 (API 21)?
После нажатия Finish внизу экрана долго бегут полоски прогресса без видимого результата. Это зависшая программа?
В коде Greeting("Android") напечатает текст "Hello Android!" — откуда взялось восклицание и слово Android именно в такой форме?
Отвечено верно: 0 из 4

Весь путь от New Project до надписи на экране уложился в несколько шагов — проверь, что помнишь их порядок, а не только каждый по отдельности:

Клик по карточке внизу добавляет её сюда — выстрой шаги мастера по порядку

Эмулятор: создаём AVD

Настоящий Android-телефон для запуска не обязателен: в Android Studio встроен эмулятор (emulator) — виртуальный смартфон, который открывается в окне на твоём компьютере и ведёт себя как настоящий. Конкретная настроенная «модель» такого виртуального телефона называется AVD (Android Virtual Device).

Открываем Device Manager

Открыть панель Device Manager можно двумя путями: со стартового экрана — More Actions → Virtual Device Manager, или из уже открытого проекта — View → Tool Windows → Device Manager. В самой панели нажми + и выбери Create Virtual Device.

Select Hardware → System Image → Verify Configuration

Мастер создания AVD состоит из трёх экранов подряд.

DEVICE MANAGER · МАСТЕР AVD1Select Hardwareмодель телефона2System Imageверсия Android3Verify Configurationимя AVDFinish→ AVD готовтри экрана подряд — до Finish ничего не сохранено
Select Hardware → System Image → Verify Configuration — три экрана подряд, и только Finish на последнем реально создаёт AVD.
  1. Select Hardware. Выбери категорию устройства (Phone) и конкретную модель — например, любой Pixel из списка. Жми Next.
  2. System Image. Выбери образ системы (system image) — фактически версию Android, которая будет установлена на виртуальный телефон. Проще всего взять что-то из вкладки Recommended. Если рядом с нужным образом стоит иконка загрузки — образ ещё не скачан, кликни по ней и дождись загрузки (может занять несколько минут — это несколько гигабайт). Жми Next.
  3. Verify Configuration. Здесь можно поменять имя AVD (AVD Name) на более понятное и, раскрыв Show Advanced Settings, донастроить детали вроде оформления рамки (skin). Для старта ничего менять не обязательно. Жми Finish.

Новый AVD появится в списке Device Manager и в выпадающем списке устройств на верхней панели инструментов Android Studio.

Тот же мастер, что и при создании проекта, только теперь про виртуальный телефон — проверь, что помнишь порядок его экранов:

Клик по карточке внизу добавляет её сюда — выстрой шаги мастера по порядку

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

Выбери свежесозданный AVD в выпадающем списке устройств наверху и жми зелёный треугольник ▶ Run (или Shift+F10). Android Studio соберёт проект, запустит эмулятор — он откроется отдельным окном и какое-то время грузится, как настоящий телефон при включении, — и установит туда приложение. Через минуту-другую на виртуальном экране появится надпись «Hello Android!». Поздравляю — ты только что собрал и запустил своё первое Android-приложение.

Отвечено вопросов: 0 из 4
Чем AVD отличается от эмулятора как программы?
На экране System Image рядом с нужной версией Android стоит иконка загрузки (стрелка вниз). Что это значит?
Ты создал AVD, но перед нажатием Run забыл выбрать его в выпадающем списке устройств наверху. Что произойдёт при нажатии ▶?
На виртуальном экране появилась надпись «Hello Android!». Откуда взялся именно этот текст?
Отвечено верно: 0 из 4

Топ-10 горячих клавиш

Горячая клавиша (shortcut) — комбинация, которая делает то же, что несколько кликов мышью, но мгновенно. Таблица ниже — по официальной документации Android Studio для Linux и Windows (на macOS часть комбинаций другая, обычно Ctrl заменяется на Cmd, а Alt — на Option). Переключай вкладку под свою систему — платформа запомнит выбор для всех глав:

СочетаниеДействие
Alt+1Показать/скрыть панель Project
Shift, дваждыSearch Everywhere: найти файл, класс, действие или настройку — что угодно
Ctrl+SpaceБазовое автодополнение кода
Alt+EnterБыстрое исправление: показать intention actions — варианты того, как починить подчёркнутое место
Ctrl+/Закомментировать/раскомментировать текущую строку
Ctrl+Alt+LПереформатировать код: расставить отступы и пробелы по стилю проекта
Shift+F10Build & Run: собрать и запустить приложение на выбранном устройстве
Shift+F9Запустить в режиме отладки (Debug)
Alt+6Открыть панель Logcat
Shift+F6Переименовать (Rename) — переименует символ везде, где он используется в проекте

Не заучивай список — повесь на него глаза и пробуй по одной в день. Через неделю рука будет тянуться сама.

А чтобы рука начала запоминать уже сейчас, нажми каждое сочетание по-настоящему — прямо на этой странице:

Выполнено: 0 из 10

Нажми сочетание: Показать/скрыть панель Project

Сочетание Alt+1 перехватит браузер — здесь его не проверить. Потренируй его в той программе, где оно нужно.

Типичные ошибки

Четыре ситуации, с которыми рано или поздно столкнётся каждый, кто ставит Android Studio и пробует запустить свой первый эмулятор. Тексты сообщений — реальные формулировки, а не пересказ по памяти: первая и третья взяты из официальной документации Google, вторая и четвёртая — устойчивые, повсеместно воспроизводимые сообщения инструментов SDK и Gradle.

1. Gradle sync failed: несовместимая версия Gradle

Открыл в Android Studio чужой или очень старый проект — и синхронизация падает с сообщением в панели Build:

Minimum supported Gradle version is 8.9. Current version is 7.6. If using the gradle wrapper, try editing the distribution url in gradle/wrapper/gradle-wrapper.properties to gradle-8.9-all.zip and re-import the project.
Нажми на часть выражения

Перевод: «минимальная поддерживаемая версия Gradle — 8.9. Текущая версия — 7.6. Если используется gradle wrapper, попробуй отредактировать distribution url в gradle/wrapper/gradle-wrapper.properties на gradle-8.9-all.zip и заново импортировать проект». Причина: каждая версия плагина Android Gradle Plugin требует минимальную версию самого Gradle — если проект и IDE не совпадают по этим числам, синхронизация физически не может продолжиться. Как починить: открыть файл gradle/wrapper/gradle-wrapper.properties, найти строку distributionUrl и поменять номер версии на указанный в сообщении, затем запустить sync заново кнопкой на панели Gradle.

2. Gradle sync failed: SDK location not found

Открыл проект, скачанный откуда-то ещё (например, чужой репозиторий с GitHub) на новом компьютере, — и вместо привычного sync сразу ошибка:

SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

Перевод: «расположение SDK не найдено. Укажи его через sdk.dir в файле local.properties либо через переменную окружения ANDROID_HOME». Причина: файл local.properties хранит путь к Android SDK на конкретном компьютере — и специально не входит в git-репозиторий (он должен быть в .gitignore), потому что у каждого разработчика этот путь свой. Когда проект клонируют на новую машину, файла просто ещё нет. Как починить: обычно ничего вручную делать не нужно — при первом открытии такого проекта в самой Android Studio она сама создаёт local.properties с правильным путём. Если этого не произошло, можно создать файл вручную и прописать в нём одну строку вида sdk.dir=/home/<имя пользователя>/Android/Sdk.

3. Some licences have not been accepted

При попытке собрать проект с только что установленным SDK — или докачать новый уровень API — Gradle останавливается с сообщением:

Failed to install the following Android SDK packages as some licences have not been accepted.
platforms;android-24 Android SDK Platform 24
To install these packages, review the license agreements and accept them.

Перевод: «не удалось установить следующие пакеты Android SDK, поскольку некоторые лицензии не были приняты: platforms;android-24 Android SDK Platform 24. Чтобы установить эти пакеты, ознакомься с лицензионными соглашениями и прими их». Причина: каждый компонент SDK — не просто файлы, а программное обеспечение с отдельным лицензионным соглашением; Google требует явного согласия перед установкой, и мастер первого запуска принимает лицензии только для набора «по умолчанию», а не для всех возможных уровней API сразу. Как починить: можно принять лицензии прямо в Android Studio через Tools → SDK Manager → SDK Tools, но быстрее — из терминала утилитой sdkmanager, которая лежит внутри SDK:

sdkmanager --licenses

Команда покажет по очереди каждую непринятую лицензию и спросит:

5 of 7 SDK package licenses not accepted.
Review licenses that have not been accepted (y/N)?

На каждый вопрос нужно ответить y (yes — «принимаю»), пока счётчик не дойдёт до 0 of 7.

4. Эмулятор не стартует: виртуализация (KVM)

Жмёшь ▶, эмулятор пытается открыться — и падает с ошибкой про виртуализацию. На Linux в основе ускорения эмулятора лежит KVM (Kernel-based Virtual Machine) — модуль ядра, без которого виртуальный телефон либо не запустится совсем, либо будет работать мучительно медленно, эмулируя каждую инструкцию процессора программно.

Проверка, включён ли KVM. Официальный способ — команда самого эмулятора:

./Sdk/emulator/emulator -accel-check

Успех выглядит так:

accel:
0
KVM (version 12) is installed and usable.

Альтернативный способ — через пакет cpu-checker:

sudo apt-get install cpu-checker
egrep -c '(vmx|svm)' /proc/cpuinfo
sudo kvm-ok
Нажми на часть выражения

Если процессор поддерживает виртуализацию, egrep выведет число 1 или больше. Дальше sudo kvm-ok даёт окончательный вердикт. Если всё хорошо:

INFO: /dev/kvm exists
KVM acceleration can be used

Если процессор не поддерживает нужные расширения:

Нажми на часть выражения

Как починить, если поддержка есть, но не включена. Чаще всего дело не в процессоре, а в том, что виртуализацию нужно включить в BIOS/UEFI (пункт обычно называется Intel VT-x или AMD-V), либо KVM ещё не установлен:

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

Отдельный частый случай — KVM установлен, но эмулятор всё равно падает с сообщением прямо в диалоге запуска:

Нажми на часть выражения

Перевод: «устройство /dev/kvm: доступ запрещён. Выдай текущему пользователю доступ к /dev/kvm». Причина: доступ к /dev/kvm разрешён только пользователям из группы kvm, а свежеустановленный аккаунт в неё не входит. Как починить:

sudo adduser $USER kvm
Важно

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

Отвечено вопросов: 0 из 4
Сообщение Gradle гласит: Minimum supported Gradle version is 8.9. Current version is 7.6. Что нужно изменить, чтобы починить это?
Чем ошибка SDK location not found отличается от Gradle sync failed про версию Gradle?
Вывод sdkmanager --licenses показывает: 5 of 7 SDK package licenses not accepted. Review licenses that have not been accepted (y/N)? Что нужно сделать, чтобы продолжить?
kvm-ok вывел: INFO: Your CPU does not support KVM extensions. Поможет ли команда sudo adduser $USER kvm в этом случае?
Отвечено верно: 0 из 4

Символы и элементы главы

Элемент / командаЧто делаетПример
.tar.gzархив, сжатый tar и gzip — формат дистрибутива Android Studio для Linuxandroid-studio-*-linux.tar.gz
studio.shскрипт запуска Android Studio внутри распакованного архива, в папке bin/./studio.sh
Project (Android view)группировка файлов по смыслу: manifests, kotlin+java, res, Gradle Scriptsпанель слева
Logcatжурнал работающего приложения, включая трассировки крашейпанель внизу
Gradle syncGradle читает build.gradle.kts и готовит проект к сборкепосле Finish и после правок сборки
Text(text = "...")composable-функция Jetpack Compose, рисующая текст на экранеText(text = "Hello!")
Package nameобратная доменная нотация: пространство имён и application IDcom.pgkchamps.champ
Minimum SDKпорог совместимости: минимальный API level Android для установкиAPI 24
AVDAndroid Virtual Device — настроенный виртуальный телефон для эмулятораDevice Manager → Create Virtual Device
emulator -accel-checkпроверяет, доступно ли аппаратное ускорение (KVM на Linux)вывод: KVM ... is installed and usable.
sudo kvm-okвердикт: можно ли использовать KVM-ускорение на этой машинеKVM acceleration can be used
sdkmanager --licensesпринимает лицензии на компоненты Android SDK по однойответ y на каждый вопрос

Слова главы

IDE
1 / 10

Потренируйся печатать

Команды этой главы — установка, проверка KVM, лицензии SDK — набери их руками, связка за связкой:

Цель: скорость ≥ 100 зн/мин, точность ≥ 90%

sudo tar -xzf android-studio-*-linux.tar.gz -C /opt/
клавиша ``клавиша 11клавиша 22клавиша 33клавиша 44клавиша 55клавиша 66клавиша 77клавиша 88клавиша 99клавиша 00клавиша --клавиша ==клавиша ⌫клавиша TabTabклавиша QQклавиша WWклавиша EEклавиша RRклавиша TTклавиша YYклавиша UUклавиша IIклавиша OOклавиша PPклавиша [[клавиша ]]клавиша \\клавиша Caps LockCaps Lockклавиша AAклавиша SSклавиша DDклавиша FFклавиша GGклавиша HHклавиша JJклавиша KKклавиша LLклавиша ;;клавиша ''клавиша EnterEnterклавиша ShiftShiftклавиша ZZклавиша XXклавиша CCклавиша VVклавиша BBклавиша NNклавиша MMклавиша ,,клавиша ..клавиша //клавиша ShiftShiftклавиша CtrlCtrlклавиша WinWinклавиша AltAltклавиша ПробелПробелклавиша AltAltклавиша WinWinклавиша MenuMenuклавиша CtrlCtrl
следующая: S — безымянный левой руки

Команда, которая чаще всего чинит зависшую лицензию:

Цель: скорость ≥ 120 зн/мин, точность ≥ 90%

sdkmanager --licenses
Углубиться

Что на самом деле делает Gradle. «Собрать приложение» — это не один шаг: нужно скомпилировать Kotlin-код, упаковать картинки и настройки, скачать библиотеки, о которых просит проект, подписать итоговый файл и сложить всё в один APK (или более новый формат AAB) — установочный пакет Android. Gradle делает это по описанию из файлов build.gradle.kts: один — на уровне всего проекта, и по одному — на уровне каждого модуля. Поэтому когда меняются эти файлы (вручную или потому что ты добавил новую библиотеку), IDE и просит повторить sync — она должна перечитать «рецепт» заново.

Почему Kotlin — язык по умолчанию, а не Java. Исторически Android разрабатывали на Java, но с 2019 года Google официально называет Kotlin предпочтительным языком, а современные инструменты вроде Jetpack Compose (система построения интерфейса, которую генерирует шаблон Empty Activity) написаны специально под возможности Kotlin — на Java с ними работать неудобно и не рекомендуется. Отсюда и формулировка в мастере создания проекта — в поле Language шаблона Empty Views Activity, единственном месте, где выбор языка ещё предлагается: Java «поддерживается», но не «рекомендуется».

Как устроено аппаратное ускорение эмулятора шире, чем KVM. На Linux хватает одного KVM, но у самого эмулятора ускорение бывает двух разных видов: ускорение исполнения кода через гипервизор (KVM на Linux, Hypervisor.Framework на macOS, WHPX на Windows) и отдельно — ускорение графики (-gpu режимы host, swiftshader и другие), которое использует видеокарту компьютера для отрисовки интерфейса телефона. Раздел про эмулятор в этой главе разбирает только первое — второе стоит смежным углублением, если картинка в эмуляторе подтормаживает при, казалось бы, работающем KVM.

Дальше по теме:

Куда дальше: проверенные ресурсы

Русские материалы

Официальная документация Google

  • Install Android Studio — официальная страница с системными требованиями и инструкциями по установке для каждой ОС (открывается с автопереводом на русский).

  • Meet Android Studio — официальный обзор структуры проекта, системы сборки Gradle и инструментов отладки.

  • Managing AVDs — полное руководство по Device Manager: создание, редактирование и удаление виртуальных устройств.

  • Create your first Android app — официальный интерактивный курс: та же заготовка Empty Activity, но с заданиями по шагам, на английском.

  • Видео и материалы сообщества — ниже — ролики по теме и ссылки от студентов и преподавателей смотри в самом низу страницы.

Челлендж ⭐

Ступень 1. Пройди весь путь главы от начала до результата на экране.

  1. Установи Android Studio на Ubuntu официальным способом и дойди до конца мастера настройки SDK.
  2. Создай проект из шаблона Empty Activity с именем Champ и package name com.pgkchamps.champ, оставь Kotlin DSL в Build configuration language и выбери любой Minimum SDK не ниже API 24.
  3. Дождись Gradle sync, создай AVD с любым Pixel и системным образом из вкладки Recommended.
  4. Запусти проект (Shift+F10) и убедись, что видишь Hello Android! на виртуальном экране.

Ступень 2 ⭐. Проверь на практике сам принцип minSdk, не выходя из уже готового проекта.

  1. Поменяй текст в Greeting, чтобы приложение здоровалось с тобой по имени (например, "Привет, Олег!" вместо "Hello $name!"), и убедись, что новый текст появился на эмуляторе после повторного запуска.
  2. Открой Device Manager и создай второй AVD — с системным образом ниже, чем API, указанный в Minimum SDK твоего проекта (например, если minSdk — API 26, возьми образ API 23).
  3. Попробуй запустить проект именно на этом, «слишком старом», AVD через выпадающий список устройств и посмотри, что скажет Android Studio.
Решение (сначала попробуй сам)

Ступень 1 — если что-то пошло не так, сверься с разделами «Установка на Ubuntu» и «Эмулятор: создаём AVD» этой главы по шагам; ключевая проверка — надпись Hello Android! на экране виртуального телефона.

Ступень 2, шаг 1 — правка в MainActivity.kt:

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Привет, $name!",
modifier = modifier
)
}

Так как Greeting вызывается как Greeting("Android"), на экране появится Привет, Android! — чтобы увидеть своё имя, стоит поменять и сам аргумент вызова на Greeting("Олег") (или как тебя зовут).

Шаг 2–3 — второй AVD с образом ниже minSdk создаётся ровно теми же тремя экранами (Select Hardware → System Image → Verify Configuration), только на втором экране нужно выбрать образ с меньшим номером API, не из вкладки Recommended. При попытке запустить проект на нём Android Studio покажет в выпадающем списке устройств пометку о несовместимости прямо рядом с именем AVD (обычно значок предупреждения и уточнение вида «minSdk выше, чем API устройства») ещё до запуска — это тот же самый принцип, что и в runnable-примере из середины главы, только теперь показанный самой IDE, а не Kotlin-функцией.

Сводная проверка по всей главе: 7 вопросов, 5:00 на всё, без подсказок по ходу. Вопросы показываются по одному, ответ изменить нельзя. Если время выйдет — экзамен завершится с тем, что успел ответить. Пересдавать можно сколько угодно раз.

Что должен уметь

  • Ставить Android Studio на Ubuntu официальным способом: скачать с developer.android.com, распаковать .tar.gz, доустановить 32-битные библиотеки, запустить studio.sh, пройти мастер настройки SDK.
  • Показывать в окне Android Studio редактор, панель Project (и разницу между режимами Android и Project), Terminal, Logcat и панель Gradle — и объяснять, зачем нужна каждая.
  • Проходить создание проекта Empty Activity по шагам и объяснять смысл каждого поля: Name, Package name (и обратную доменную нотацию), Save location, Minimum SDK, Build configuration language.
  • Формулировать, что такое minSdk и API level, и предсказывать, установится ли приложение на устройство с конкретной версией Android.
  • Понимать, что происходит во время синхронизации (sync) Gradle и почему первая занимает дольше остальных.
  • Создавать AVD по шагам Select Hardware → System Image → Verify Configuration и запускать на нём приложение.
  • Пользоваться минимум пятью горячими клавишами из таблицы главы, не подглядывая в неё.
  • Узнавать по точному сообщению четыре типичные проблемы — несовместимую версию Gradle, ненайденный SDK location, непринятые лицензии SDK и неработающую виртуализацию (KVM) — и знать, какая команда или какое действие каждую из них чинит.

Комментарии

Комментарии появятся после настройки. Нужен аккаунт GitHub — вход прямо в виджете выше.