Android Studio: знакомство с IDE
Зачем это нужно
Программа — это текст, а текст можно набрать хоть в блокноте. Но блокнот не знает, что ты пишешь код: он не подскажет, что в слове опечатка, не покажет, где не хватает скобки, и уж точно не соберёт из твоего текста работающее приложение. Для этого существует интегрированная среда разработки (IDE, Integrated Development Environment) — программа, в которой под одной крышей живут редактор кода, сборщик, запуск приложения и поиск ошибок. Разница как между отвёрткой и оборудованной мастерской: закрутить один шуруп можно и отвёрткой, но собирать шкаф удобнее там, где всё под рукой.
Для Android официальная IDE — Android Studio от Google, построенная на движке IntelliJ IDEA. В ней работают и профессиональные разработчики, и участники чемпионата «Профессионалы»: на площадке тебя будет ждать именно она, а не какой-то упрощённый онлайн-редактор. В этой главе мы пройдём весь путь по шагам: поставим Android Studio на Ubuntu официальным способом, разберём каждую панель окна по отдельности, создадим первый проект с объяснением каждого поля мастера, соберём виртуальный телефон и запустим на нём приложение — а в конце научимся узнавать по симптомам три самые частые беды новичка: неудавшуюся синхронизацию Gradle, эмулятор, который отказывается стартовать, и SDK, требующий принять лицензии. Ничего не считаем очевидным: если на экране появилась кнопка, поле или сообщение — разберём, что оно значит и откуда взялось.
- Зачем это нужно
- Чем IDE лучше блокнота
- Установка Android Studio: Windows, macOS, Ubuntu
- Окно Android Studio: что где
- Создаём первый проект: Empty Activity
- Эмулятор: создаём AVD
- Топ-10 горячих клавиш
- Типичные ошибки
- Символы и элементы главы
- Слова главы
- Потренируйся печатать
- Куда дальше: проверенные ресурсы
- Челлендж ⭐
- Что должен уметь
Как это было
Чем IDE лучше блокнота
IDE понимает язык, на котором ты пишешь. Пока ты набираешь код, она:
- подчёркивает ошибки сразу, а не после запуска — как проверка орфографии, только для Kotlin;
- дописывает за тебя: набрал три буквы — получил список подходящих продолжений (это называется автодополнением, completion);
- знает весь проект (project) — совокупность файлов приложения: код, картинки, настройки сборки. Переименуешь функцию в одном файле — IDE поправит её во всех остальных, где она использовалась;
- сама собирает и запускает приложение по нажатию одной кнопки, вместо того чтобы вручную вызывать десяток команд компилятора и упаковщика.
Всё это не магия, а работа нескольких инструментов под одной крышей — дальше в главе мы познакомимся с каждым из них по отдельности: панелью проекта, встроенным терминалом, системой сборки Gradle и монитором логов Logcat.
Установка Android Studio: Windows, macOS, Ubuntu
На площадке чемпионата встречаются все три системы — Windows, macOS и Ubuntu. Официальная страница сама определяет ОС компьютера и предлагает нужный установщик, но здесь — вкладками и по шагам, разверни свою:
- Windows
- macOS
- Ubuntu
Системные требования для Windows
- 64-битная Windows 10 или новее (ARM-версии Windows пока не поддерживаются — нужен обычный x86-64 процессор);
- 8 ГБ оперативной памяти для самой Android Studio, 16 ГБ — если параллельно нужен эмулятор;
- процессор с поддержкой аппаратной виртуализации (Intel VT-x или AMD-V, включена в BIOS) — про неё отдельно и подробно поговорим в разделе про эмулятор;
- 8 ГБ свободного места на диске для Studio, 16 ГБ — вместе с эмулятором.
Скачивание и установка
Официальная инструкция для Windows — это обычная установка приложения, без терминала:
- если скачан файл .exe (рекомендованный вариант) — просто дважды кликни по нему и пройди установщик;
- если скачан .zip — распакуй архив, перенеси папку
android-studioвProgram Files, открой в ней папкуbinи запустиstudio64.exe(для 64-битных машин;studio.exe— если система 32-битная, но такие сегодня не поддерживаются); - дальше в обоих случаях откроется мастер Setup Wizard — он же появится и на Ubuntu, и на macOS, разница только в первом шаге запуска.
Проверить обновления вручную можно через Help → Check for Update в меню самой программы.
Системные требования для macOS
- macOS 12 или новее;
- 8 ГБ оперативной памяти для самой Android Studio, 16 ГБ — если параллельно нужен эмулятор;
- чип Apple M1 или новее, либо Intel Core от 6-го поколения — поддержка Intel-чипов у Google постепенно сворачивается, для новой покупки лучше Apple Silicon;
- 8 ГБ свободного места на диске для Studio, 16 ГБ — вместе с эмулятором.
Скачивание и установка
Официальная инструкция для macOS — тоже без терминала:
- запусти скачанный файл .dmg;
- перетащи Android Studio в папку Applications, затем запусти её оттуда;
- при первом запуске macOS спросит, импортировать ли настройки прошлой установки — если это первая установка, просто жми OK;
- дальше откроется тот же мастер Setup Wizard, что и на Windows с Ubuntu, — он и докачает нужные компоненты Android SDK.
Проверить обновления вручную можно через Android Studio → Check for Updates в меню программы.
Системные требования для 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».
Первый запуск и мастер SDK
При первом запуске на любой из трёх систем открывается мастер настройки Setup Wizard. Он предложит импортировать настройки из предыдущей установки (если это первая установка — просто жми OK), а затем сам докачает Android SDK — набор инструментов и библиотек, без которых Android Studio не умеет собирать приложения под Android. Это несколько гигабайт, так что понадобятся стабильный интернет и терпение: первая загрузка идёт минут десять-двадцать в зависимости от скорости сети.
На Windows и macOS ярлык программы появляется в меню «Пуск» и Launchpad сам, установщик делает это за тебя. На Ubuntu это единственный ручной шаг: чтобы Android Studio появилась в общем списке приложений рабочего стола (а не только запускалась вручную через терминал), выбери в меню самой программы Tools → Create Desktop Entry.
Окно Android Studio: что где
Когда откроешь проект, экран будет выглядеть пугающе — панелей много. Разберём пять главных по отдельности: без них не обойтись уже в первый день.
Редактор
Редактор занимает центр экрана — это главное место в IDE, где ты пишешь и читаешь код. Он подсвечивает синтаксис разными цветами (ключевые слова, строки, типы — каждый своим), подчёркивает ошибки красной волнистой линией ещё до попытки собрать проект, а жёлтой — предупреждения (то, что технически работает, но обычно так не делают). Слева от строк кода — узкая полоса gutter: в ней появляются номера строк, точки останова отладчика (breakpoint) и маленькие зелёные треугольники ▶ рядом с функциями, которые можно запустить одним кликом.
Project — дерево файлов
Панель Project слева показывает файлы проекта — как проводник, только заточенный под структуру Android-приложения. По умолчанию она открыта в режиме Android — это не настоящая файловая структура на диске, а удобная группировка по смыслу:
- manifests — здесь лежит
AndroidManifest.xml, файл-паспорт приложения: какие экраны у него есть, какие разрешения ему нужны; - kotlin+java — здесь живёт весь код, который ты пишешь: файлы
.ktи, если проект их использует,.java; - res — здесь лежит всё, что не код: строки интерфейса, картинки, цвета, размеры;
- Gradle Scripts — здесь собраны файлы сборки,
build.gradle.kts, про которые пойдёт речь дальше.
Если переключить выпадающий список наверху панели с 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 попросит об этом сама.
Теперь то же самое — на интерактивной схеме окна: сначала кликай по панелям и читай, что где живёт, а потом запусти викторину и найди каждую панель по памяти:
Кликай по панелям схемы — узнаешь, что где живёт.
Создаём первый проект: 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).
Первая синхронизация в новом проекте занимает от одной до нескольких минут в зависимости от скорости интернета — не пугайся и ничего не нажимай, дождись сообщения об успехе внизу экрана или зелёной галочки рядом с иконкой Gradle.
Экран проекта: Code / Design / Split, разбор MainActivity.kt
Открой файл MainActivity.kt в панели Project (app → kotlin+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!. Именно эта строка окажется на экране эмулятора, когда мы его запустим.
Весь путь от 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 состоит из трёх экранов подряд.
- Select Hardware. Выбери категорию устройства (Phone) и конкретную модель — например, любой Pixel из списка. Жми Next.
- System Image. Выбери образ системы (system image) — фактически версию Android, которая будет установлена на виртуальный телефон. Проще всего взять что-то из вкладки Recommended. Если рядом с нужным образом стоит иконка загрузки — образ ещё не скачан, кликни по ней и дождись загрузки (может занять несколько минут — это несколько гигабайт). Жми Next.
- Verify Configuration. Здесь можно поменять имя AVD (AVD Name) на более понятное и, раскрыв Show Advanced Settings, донастроить детали вроде оформления рамки (skin). Для старта ничего менять не обязательно. Жми Finish.
Новый AVD появится в списке Device Manager и в выпадающем списке устройств на верхней панели инструментов Android Studio.
Тот же мастер, что и при создании проекта, только теперь про виртуальный телефон — проверь, что помнишь порядок его экранов:
Запуск приложения на эмуляторе
Выбери свежесозданный AVD в выпадающем списке устройств наверху и жми зелёный треугольник ▶ Run (или Shift+F10). Android Studio соберёт проект, запустит эмулятор — он откроется отдельным окном и какое-то время грузится, как настоящий телефон при включении, — и установит туда приложение. Через минуту-другую на виртуальном экране появится надпись «Hello Android!». Поздравляю — ты только что собрал и запустил своё первое Android-приложение.
Топ-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+F10 | Build & 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
После этой команды нужно выйти из системы и зайти заново (или перезагрузиться) — членство в группах применяется только к новым сессиям входа, поэтому одной команды в уже открытом терминале недостаточно.
Символы и элементы главы
| Элемент / команда | Что делает | Пример |
|---|---|---|
.tar.gz | архив, сжатый tar и gzip — формат дистрибутива Android Studio для Linux | android-studio-*-linux.tar.gz |
studio.sh | скрипт запуска Android Studio внутри распакованного архива, в папке bin/ | ./studio.sh |
| Project (Android view) | группировка файлов по смыслу: manifests, kotlin+java, res, Gradle Scripts | панель слева |
| Logcat | журнал работающего приложения, включая трассировки крашей | панель внизу |
| Gradle sync | Gradle читает build.gradle.kts и готовит проект к сборке | после Finish и после правок сборки |
Text(text = "...") | composable-функция Jetpack Compose, рисующая текст на экране | Text(text = "Hello!") |
| Package name | обратная доменная нотация: пространство имён и application ID | com.pgkchamps.champ |
| Minimum SDK | порог совместимости: минимальный API level Android для установки | API 24 |
| AVD | Android 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 на каждый вопрос |
Слова главы
Потренируйся печатать
Команды этой главы — установка, проверка KVM, лицензии SDK — набери их руками, связка за связкой:
Цель: скорость ≥ 100 зн/мин, точность ≥ 90%
sudo tar -xzf android-studio-*-linux.tar.gz -C /opt/
Команда, которая чаще всего чинит зависшую лицензию:
Цель: скорость ≥ 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.
Дальше по теме:
- Meet Android Studio — обзор IDE: из чего она состоит и что умеет
- Configure hardware acceleration for the Android Emulator — полностью про KVM, WHPX и графическое ускорение
- Keyboard shortcuts — полная таблица горячих клавиш для Linux/Windows/macOS
Куда дальше: проверенные ресурсы
Русские материалы
- Losst: установка Android Studio в Ubuntu — четыре разных способа установки на Ubuntu (snap, центр приложений, официальный сайт, JetBrains Toolbox) с системными требованиями и разбором каждого варианта.
- Android Tools: как установить Android Studio на Linux — ещё один пошаговый разбор установки специально под Linux, полезен как второе прочтение раздела про установку другими словами.
- ievetrov.ru — Урок 1: Android Studio, установка и настройка эмулятора — видеоурок и текстовый конспект первого занятия курса по Android на Kotlin с нуля: установка, первый проект, настройка эмулятора — от автора, чей курс по переменным Kotlin уже встречался в этой платформе.
- Яндекс Практикум: как пользоваться Android Studio — обзорная статья про интерфейс IDE и первые шаги разработки, хорошо ложится поверх этой главы как более короткий пересказ.
Официальная документация Google
-
Install Android Studio — официальная страница с системными требованиями и инструкциями по установке для каждой ОС (открывается с автопереводом на русский).
-
Meet Android Studio — официальный обзор структуры проекта, системы сборки Gradle и инструментов отладки.
-
Managing AVDs — полное руководство по Device Manager: создание, редактирование и удаление виртуальных устройств.
-
Create your first Android app — официальный интерактивный курс: та же заготовка Empty Activity, но с заданиями по шагам, на английском.
-
Видео и материалы сообщества — ниже — ролики по теме и ссылки от студентов и преподавателей смотри в самом низу страницы.
Челлендж ⭐
Ступень 1. Пройди весь путь главы от начала до результата на экране.
- Установи Android Studio на Ubuntu официальным способом и дойди до конца мастера настройки SDK.
- Создай проект из шаблона Empty Activity с именем
Champи package namecom.pgkchamps.champ, оставь Kotlin DSL в Build configuration language и выбери любой Minimum SDK не ниже API 24. - Дождись Gradle sync, создай AVD с любым Pixel и системным образом из вкладки Recommended.
- Запусти проект (Shift+F10) и убедись, что видишь
Hello Android!на виртуальном экране.
Ступень 2 ⭐. Проверь на практике сам принцип minSdk, не выходя из уже готового проекта.
- Поменяй текст в
Greeting, чтобы приложение здоровалось с тобой по имени (например,"Привет, Олег!"вместо"Hello $name!"), и убедись, что новый текст появился на эмуляторе после повторного запуска. - Открой Device Manager и создай второй AVD — с системным образом ниже, чем API, указанный в Minimum SDK твоего проекта (например, если minSdk — API 26, возьми образ API 23).
- Попробуй запустить проект именно на этом, «слишком старом», 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 — вход прямо в виджете выше.