Android: що це таке, архітектура системи та розробка на Kotlin

Автор: IT Sectr Опубліковано: 2026-02-07 Час читання: 11 хв

Android — мобільна операційна система Google з відкритим вихідним кодом (AOSP), що працює на ядрі Linux. Розробка під Android ведеться на Kotlin у середовищі Android Studio. Стаття охоплює архітектуру ОС, компоненти застосунків, Jetpack Compose та публікацію в Google Play.

Головне

  • Android — ОС на ядрі Linux з чотирма шарами: ядро, HAL, Android Runtime, Application Framework
  • Kotlin — основна мова розробки з нульовою безпекою та корутинами для асинхронності
  • Activity, Service, BroadcastReceiver, ContentProvider — чотири обов'язкові компоненти Android-застосунку
  • Jetpack Compose — декларативний UI-фреймворк, рекомендований Google для нових проєктів
  • Google Play — основний канал поширення з комісією 15–30% і перевіркою безпеки Play Integrity

Що таке Android?

Android — мобільна операційна система на базі ядра Linux, що розробляється Google з 2007 року. Вихідний код відкрито за ліцензією Apache 2.0 у рамках проєкту Android Open Source Project (AOSP). Кожен виробник може модифікувати систему та встановлювати на свої пристрої.

За даними StatCounter (2026), Android займає близько 72% світового ринку мобільних ОС. Найбільші виробники — Samsung, Xiaomi, Oppo, Vivo, Google Pixel. Фрагментація — ключова проблема платформи: одночасно використовуються тисячі моделей з різними версіями ОС.

Архітектура Android побудована на принципі привілеїв (permissions): кожен застосунок працює під окремим UID Linux і має доступ лише до своїх даних. Доступ до системних ресурсів (камера, мікрофон, контакти) запитується через Android Permissions під час виконання, починаючи з Android 6 (API 23).

Історія версій Android

Android 1.0 вийшов у 2008 році на HTC Dream. Ключові віхи: Android 4.0 Ice Cream Sandwich (єдиний UI для телефонів і планшетів), Android 5.0 Lollipop (Material Design), Android 6.0 (дозволи runtime), Android 10 (темна тема, жести), Android 12 (Material You). З 2023 року Google перейшла на щорічні мажорні релізи без десертних назв.

Версія AndroidРікКлючове нововведення
Android 1.02008Перший реліз на HTC Dream
Android 4.0 (ICS)2011Єдиний дизайн для телефонів і планшетів
Android 5.0 (L)2014Material Design, ART замість Dalvik
Android 6.0 (M)2015Дозволи runtime, режим Doze
Android 8.0 (O)2017Kotlin як офіційна мова
Android 10 (Q)2019Scoped Storage, темна тема
Android 12 (S)2021Material You, Privacy Dashboard
Android 152024Private Space, супутниковий зв'язок

Архітектура Android: чотири ключові шари

Архітектура Android складається з чотирьох основних шарів, що ізолюють апаратне забезпечення від користувацьких застосунків. Кожен шар використовує сервіси нижчого шару через строго визначені інтерфейси.

Ядро Linux та HAL

Нижній шар — модифіковане ядро Linux (LTS, версія 6.x в Android 15). Воно забезпечує управління пам'яттю, процесами, мережевим стеком і драйверами. Hardware Abstraction Layer (HAL) надає єдиний API для взаємодії з обладнанням: камера, Bluetooth, Wi-Fi, сенсори. Виробники реалізують HAL-модулі, не зачіпаючи верхні шари.

Android Runtime (ART)

ART виконує DEX-байткод застосунків. Починаючи з Android 5.0, ART замінив Dalvik і використовує Ahead-of-Time (AOT) компіляцію для підвищення продуктивності. Кожен застосунок має власний процес з окремим екземпляром ART. Збирання сміття (GC) працює з мінімальними паузами — типовий GC pause становить 2–4 мс.

Application Framework

Framework — шар, з яким безпосередньо працює розробник. Включає Activity Manager (стек екранів), Content Providers (доступ до даних), Resource Manager (локалізація, ресурси), Notification Manager, Location Manager. Всі системні сервіси викликаються через Binder IPC — механізм міжпроцесної взаємодії Android.

kotlin
// Приклад роботи з Binder через AIDL-інтерфейс
interface IDataService : android.os.IInterface {
    fun getData(): List<DataItem>
    fun saveData(item: DataItem): Boolean
}

// Реалізація сервісу
class DataService : Service() {
    private val binder = object : IDataService.Stub() {
        override fun getData(): List<DataItem> = repository.getAll()
        override fun saveData(item: DataItem): Boolean = repository.save(item)
    }

    override fun onBind(intent: Intent?): IBinder = binder
}

Системні застосунки

Верхній шар — стандартні системні застосунки: Телефон, Контакти, Камера, Налаштування, Браузер. Вони не мають привілеїв вищих за користувацькі, але можуть бути замінені сторонніми застосунками. В Android 15 системні застосунки оновлюються через Google Play System Updates незалежно від OTA-оновлень виробника.

Kotlin — основна мова Android-розробки

Kotlin — статично типізована мова програмування від JetBrains, що працює поверх JVM. Google оголосила Kotlin офіційною мовою Android у 2017 році на Google I/O. Kotlin повністю сумісний з Java, але усуває її недоліки: null-safety, data класи, функції-розширення та корутини.

Null Safety та типи

Головна особливість Kotlin — вбудований захист від NullPointerException. Типи розділені на nullable (String?) та non-null (String). Компілятор перевіряє nullable-доступ на етапі збірки. Safe call (?.) та Elvis-оператор (?:) спрощують роботу з опціональними значеннями без вкладених перевірок.

kotlin
// Приклад Kotlin-коду з корутинами та Flow
data class User(
    val id: Long,
    val name: String,
    val email: String
)

class UserRepository(
    private val api: UserApi,
    private val dao: UserDao
) {
    suspend fun getUser(id: Long): Result<User> {
        return try {
            val cached = dao.getUser(id)
            if (cached != null) {
                return Result.success(cached)
            }
            val remote = api.fetchUser(id)
            dao.insertUser(remote)
            Result.success(remote)
        } catch (e: Exception) {
            Result.failure(e)
        }
    }

    fun observeUsers(): Flow<List<User>> {
        return dao.observeAll()
            .map { list -> list.sortedBy { it.name } }
            .flowOn(Dispatchers.Default)
    }
}

Приклад демонструє корутини (suspend function) для асинхронного доступу до мережі та бази даних, Flow для реактивного спостереження за змінами даних та Result для безпечної обробки помилок. Корутини замінюють callbacks та RxJava без накладних витрат на потоки.

Kotlin Coroutines та Flow

Корутини Kotlin — це легковагові потоки, що запускаються на спільному пулі потоків. Dispatchers.IO для мережі та диска, Dispatchers.Main для UI, Dispatchers.Default для CPU-інтенсивних завдань. viewModelScope та lifecycleScope автоматично скасовують корутини при знищенні компонента.

kotlin
// ViewModel з корутинами та StateFlow
class UserViewModel(
    private val repository: UserRepository
) : ViewModel() {

    private val _users = MutableStateFlow<List<User>>(emptyList())
    val users: StateFlow<List<User>> = _users.asStateFlow()

    private val _loading = MutableStateFlow(false)
    val loading: StateFlow<Boolean> = _loading.asStateFlow()

    init {
        viewModelScope.launch {
            repository.observeUsers().collect { userList ->
                _users.value = userList
            }
        }
    }

    fun refresh() {
        viewModelScope.launch {
            _loading.value = true
            repository.getUser(42).onSuccess { user ->
                _users.value = listOf(user)
            }
            _loading.value = false
        }
    }
}

Android Studio та інструменти розробки

Android Studio — офіційна IDE на базі IntelliJ IDEA, розроблена Google. Включає редактор коду, Layout Inspector, емулятор пристроїв, APK Analyzer, Profiler (CPU, Memory, Network, Energy) та інтеграцію з Firebase. Android Studio 2024 (Ladybug) підтримує Kotlin 2.0 з мультиплатформенним режимом KMP.

Емулятор Android

Android Emulator використовує KVM (Linux) або Hyper-V (Windows) для апаратного прискорення. Підтримує симуляцію GPS, датчиків, камери, дзвінків та SMS. Google Pixel 9 Pro — рекомендована конфігурація для тестування з API 35 та 8 ГБ RAM емулятора.

Android Profiler та налагодження

Profiler у реальному часі відображає завантаження CPU, виділення пам'яті, мережеві запити та енергоспоживання. Memory Profiler дозволяє дампити heap та аналізувати витоки через reference tree. Network Inspector записує всі HTTP/HTTPS запити з тілом та заголовками. Для глибокого аналізу використовується Android Studio Canary.

Компоненти Android-застосунку

Android-застосунок складається з чотирьох типів компонентів, кожен з яких має власну точку входу та життєвий цикл. Компоненти реєструються в маніфесті AndroidManifest.xml.

КомпонентПризначенняТочка входу
ActivityЕкран з UI для взаємодії з користувачемIntent з Action.MAIN та категорією LAUNCHER
ServiceФонове виконання завдань без UIstartService() або bindService()
BroadcastReceiverПрийом системних або кастомних подійРеєстрація в маніфесті або в коді
ContentProviderУправління доступом до структурованих данихURI через ContentResolver

Activity та Intent

Activity — базовий компонент користувацького інтерфейсу. Кожен екран — окрема Activity або Fragment всередині Activity. Навігація між екранами виконується через Intent — об'єкт, що містить дію (ACTION_VIEW, ACTION_SEND) та дані (URI). У Jetpack Navigation Graph навігація описується в XML.

Service та WorkManager

Service виконує фонові завдання, але починаючи з Android 8, фонові служби обмежені. WorkManager — рекомендована бібліотека для відкладених і гарантованих фонових завдань з підтримкою ланцюжків, обмежень (наприклад, тільки при зарядці) та перезапуску після крашу.

Jetpack Compose vs XML Layouts

Вибір між Jetpack Compose та традиційною XML-версткою — головне архітектурне рішення при старті Android-проєкту. XML Layouts (RecyclerView, ConstraintLayout, FrameLayout) — стандарт з 2008 року. Jetpack Compose представлений у 2021 році як декларативна альтернатива.

КритерійXML LayoutsJetpack Compose
ПарадигмаІмперативна (View tree)Декларативна (@Composable функції)
Мінімальна версіяБудь-яка (API 1+)API 21+ (Android 5.0)
ВерсткаXML + data binding / ViewBindingKotlin-код з Modifier
RecyclerView аналогRecyclerView + Adapter + ViewHolderLazyColumn / LazyGrid
PreviewXML Preview в Android Studio@Preview анотація з інтерактивністю
РекомпозиціяnotifyDataSetChanged (повна)Автоматична, точкова (DiffUtil)
ІнтероперабельністьПовна (всі бібліотеки)ComposeView в XML / AndroidView в Compose

Google рекомендує Jetpack Compose для всіх нових проєктів. XML Layouts залишаються актуальними для підтримки легасі-проєктів та для випадків, коли потрібна максимальна кастомізація View (Canvas, SurfaceView). Compose-код в середньому на 40% коротший за еквівалентний XML + ViewBinding.

kotlin
// Jetpack Compose — екран профілю користувача
@Composable
fun ProfileScreen(
    user: User,
    onEditClick: () -> Unit,
    modifier: Modifier = Modifier
) {
    Column(
        modifier = modifier
            .fillMaxSize()
            .padding(16.dp),
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        AsyncImage(
            model = user.avatarUrl,
            contentDescription = "Аватар пользователя",
            modifier = Modifier
                .size(120.dp)
                .clip(CircleShape)
        )

        Spacer(modifier = Modifier.height(16.dp))

        Text(
            text = user.name,
            style = MaterialTheme.typography.headlineMedium
        )

        Text(
            text = user.email,
            style = MaterialTheme.typography.bodyLarge,
            color = MaterialTheme.colorScheme.onSurfaceVariant
        )

        Spacer(modifier = Modifier.height(24.dp))

        Button(onClick = onEditClick) {
            Icon(Icons.Default.Edit, contentDescription = null)
            Spacer(modifier = Modifier.width(8.dp))
            Text("Редактировать профиль")
        }
    }
}

@Preview(showBackground = true, showSystemUi = true)
@Composable
fun ProfileScreenPreview() {
    MaterialTheme {
        ProfileScreen(
            user = User(1, "Анна Петрова", "anna@example.com"),
            onEditClick = {}
        )
    }
}

Функція ProfileScreen оголошена як @Composable — вона описує UI декларативно, без створення екземплярів View. Compose автоматично оновлює екран при зміні user. @Preview показує результат прямо в IDE без збірки та запуску на емуляторі.

Життєвий цикл Activity та Fragment

Кожна Activity в Android проходить через шість станів життєвого циклу: onCreate, onStart, onResume, onPause, onStop, onDestroy. Fragment додає onAttach, onCreateView, onViewCreated. Розуміння життєвого циклу критичне для управління пам'яттю та запобігання витокам.

Основні стани Activity

onCreate — викликається один раз при створенні Activity. Тут виконується ініціалізація: setContentView, налаштування адаптерів, підписка на LiveData. onResume — Activity на передньому плані та взаємодіє з користувачем. onPause — Activity втрачає фокус (діалог, інша Activity). onStop — Activity не видна. onDestroy — Activity знищується.

kotlin
// Activity з обробкою життєвого циклу через LifecycleScope
class MainActivity : ComponentActivity() {
    private val viewModel: UserViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
            MaterialTheme {
                lifecycleScope.launch {
                    repeatOnLifecycle(Lifecycle.State.STARTED) {
                        viewModel.users.collect { users ->
                            updateUi(users)
                        }
                    }
                }
            }
        }
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putString("last_search", searchQuery)
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        searchQuery = savedInstanceState.getString("last_search", "")
    }
}

Використання repeatOnLifecycle гарантує, що збір даних призупиняється, коли Activity йде у фон, і відновлюється при поверненні на передній план. Це запобігає витокам та зайвим мережевим запитам. onSaveInstanceState зберігає тимчасовий стан при повороті екрану.

Google Play: публікація та вимоги

Google Play — офіційний магазин застосунків Android. Реєстрація акаунта розробника коштує $25 разово. Кожен застосунок проходить автоматичну перевірку Google Play Integrity на наявність шкідливого коду, порушень політик та некоректного використання permissions.

Вимоги до публікації

Google вимагає підпис застосунку через Android App Bundle (AAB) або APK. AAB — рекомендований формат, що дозволяє генерувати оптимізовані APK для кожної конфігурації пристрою. Застосунок повинен бути підписаний ключем (keystore) з валідним сертифікатом. Google Play App Signing — опціональне шифрування ключа на стороні Google.

Політика конфіденційності

Всі застосунки, що запитують доступ до особистих даних, зобов'язані надати політику конфіденційності (Privacy Policy). З 2024 року Google вимагає декларувати Data Safety — форму із зазначенням типів зібраних даних та цілей обробки. Застосунки для Android 14+ повинні використовувати Declarations API для оголошення дозволів.

ВимогаОпис
Android App BundleФормат AAB для оптимізованої доставки
Data SafetyФорма про збір та обробку персональних даних
Target SDKЗастосунок повинен targeting останній API рівень Android
Content RatingАнкета вікового рейтингу
Store ListingНазва, іконка, скріншоти, опис

Часто задавані питання

Яка мова краща для Android розробки?

Kotlin — офіційно рекомендована мова Google для Android. Java також підтримується для легасі-проєктів. Kotlin пропонує нульову безпеку, корутини та extension-функції, скорочуючи обсяг коду на 30–40% порівняно з Java.

Що вибрати: Jetpack Compose чи XML Layouts?

Jetpack Compose рекомендується для всіх нових проєктів завдяки декларативному синтаксису та автоматичній оптимізації рекомпозиції. XML Layouts залишаються в легасі-проєктах та випадках, коли потрібна точкова кастомізація Canvas або SurfaceView.

Скільки коштує публікація в Google Play?

Реєстрація розробника Google Play коштує $25 разово. Комісія магазину — 15% для перших $1 млн доходу, далі 30%. Для підписок комісія 15% з першого дня. Немає щорічної плати на відміну від Apple Developer Program.

Що таке Android Jetpack?

Android Jetpack — набір бібліотек Google, що входять до офіційного SDK: Navigation (навігація), Room (SQLite ORM з compile-time перевіркою запитів), WorkManager (гарантовані фонові завдання), ViewModel (управління станом), LiveData та StateFlow для реактивності.

Які мінімальні вимоги до Android-застосунку?

Мінімальна підтримувана версія — API 24 (Android 7.0) для нових проєктів. AndroidManifest.xml описує компоненти та права застосунку. APK/AAB підписується keystore. Target SDK повинен відповідати останньому API-рівню на момент публікації.

Підсумки

  • Android — відкрита мобільна ОС на ядрі Linux з часткою 72% світового ринку та можливістю кастомізації виробниками
  • Kotlin — основна мова Android-розробки з null-safety, корутинами та 100% сумісністю з Java
  • Архітектура Android побудована на чотирьох шарах: ядро Linux, HAL, Android Runtime, Application Framework
  • Activity, Service, BroadcastReceiver, ContentProvider — чотири компоненти, що реєструються в маніфесті
  • Jetpack Compose — декларативний UI-фреймворк, рекомендований Google, з автоматичною рекомпозицією
  • Google Play — разовий платіж $25, формат AAB, обов'язковий Data Safety та Privacy Policy
  • WorkManager — рекомендований API для фонових завдань з гарантією виконання та обмеженнями

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також