Старт: создать первое Android‑приложение на Kotlin

Коротко: установите Android Studio, создайте проект "Empty Activity" с Language = Kotlin, оформите layout в activity_main.xml, добавьте логику в MainActivity.onCreate и запустите на эмуляторе или реальном устройстве — подробные шаги ниже.

Установка и подготовка среды

  1. Скачайте и установите Android Studio (инсталлятор автоматически предложит SDK и JDK). Для стабильной работы используйте JDK 17+.
  2. При первом запуске Studio скачает дополнительные компоненты (SDK Platforms, Platform Tools, образ эмулятора) — это ~2–4 ГБ.
  3. Рекомендуемые системные требования: 8+ ГБ RAM (лучше 16 GB), SSD, включённая виртуализация в BIOS.

Если у вас 8 ГБ RAM — закройте лишние приложения и в Settings отключите ненужные плагины.

Создание проекта и структура файлов

  1. New Project → Empty Activity.
    • Name: MyFirstApp
    • Package name: com.example.myfirstapp
    • Language: Kotlin
    • Minimum SDK: API 24 (Android 7.0) — хорошее соотношение покрытия/функций.
  2. Выберите Gradle Kotlin DSL (build.gradle.kts) для современных конфигураций.
  3. Структура проекта: app/src/main/AndroidManifest.xml, MainActivity.kt (в app/src/main/java), res/layout/activity_main.xml, build.gradle.kts.
  4. Всегда нажимайте "Sync Now" после правок в build.gradle.kts.

Разметка и код: быстрый пример "Hello + Button"

В activity_main.xml используйте ConstraintLayout и добавьте TextView + Button:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@+id/myButton"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>

    <Button
        android:id="@+id/myButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Нажми меня"
        app:layout_constraintTop_toBottomOf="@id/textView"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.kt — корректный пример с view binding не обязателен, но onCreate обязателен:

package com.example.myfirstapp

import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val textView = findViewById<TextView>(R.id.textView)
        val button = findViewById<Button>(R.id.myButton)

        button.setOnClickListener {
            textView.text = "Кнопка нажата! Время: ${System.currentTimeMillis()}"
        }
    }
}

Для удобства развития сразу включите ViewBinding (в build.gradle.kts) или исследуйте Jetpack Compose — он упрощает UI и это будущее Android.

Сборка и запуск

  • AVD Manager → Create Virtual Device (рекомендуется Pixel); выберите образ с API, который вы указали.
  • Для реального устройства: включите USB-отладку (Опции разработчика) и подключитесь по USB.
  • Нажмите Run (зелёная стрелка). Первый запуск может занимать несколько минут.

Частые ошибки

  • Gradle sync failed — проверьте интернет, версию JDK и переменные окружения; нажмите "Sync Now".
  • Эмулятор не стартует — включите виртуализацию в BIOS/UEFI, выделите больше RAM в AVD.
  • No view found for id — неверный android:id в XML или опечатка в findViewById.
  • APK не подписан — для публикации используйте Build > Generate Signed Bundle/APK и создайте keystore.

Не забывайте запрашивать runtime‑разрешения (например, CAMERA) через API запроса прав при необходимости — иначе функции не будут работать на устройствах с Android 6+.

FAQ

  • Нужно ли учить Java? Нет: Kotlin полностью покрывает современные практики Android и рекомендован Google.
  • Как перейти на Jetpack Compose? Создайте новый проект с шаблоном Compose или добавьте зависимости Compose в build.gradle, затем учитесь по небольшим примерам.
  • Как опубликовать в Google Play? Сначала соберите signed APK / AAB, подготовьте описание и иконки — через Play Console (отдельная регистрация разработчика).

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