Перейти к основному содержимому

Android

Разработчику Архитектору Инженеру

Android

Android – мобильная ОС с открытым исходным кодом, основанная на ядре Linux и разработанная Google. Она предназначена в первую очередь для смартфонов и планшетов, но также используется в телевизорах (Android TV), часах, автомобилях и других устройствах. Но это не просто мобильный Linux, это полноценная многозадачная ОС с мощными возможностями разработки, изоляции приложений и интеграции с Google-сервисами.


★ Как устроена Android?

Основные компоненты Android:

  • Ядро Linux – управляет взаимодействием с железом;
  • Hardware Abstraction Layer (HAL) – интерфейс между драйверами и системой;
  • Android Runtime (ART) – среда исполнения приложений;
  • Framework API – набор классов и сервисов для разработки;
  • Пользовательский интерфейс – launcher, System UI;
  • Google Mobile Services (GMS) – дополнительные функции от Google.

1. Ядро

★ Ядро Android – это Linux, но сильно модифицированное под мобильные устройства, с возможностями управления процессами, памятью, файловой системой, поддержкой драйверов Wi-Fi, Bluetooth, GPS, камер, а также многозадачности и безопасности. Производители могут использовать разные версии ядра Linux, что влияет на обновления безопасности и совместимость.


2. Открытость

★ Открытость. Android имеет множество вариаций, где часть – официальные, от Google, а часть – по производителям.

По произвоодителям есть следующие вариации Android (оболочки):

  • OnePlus OxygenOS;
  • Samsung One UI;
  • Xiaomi MIUI;
  • OPPO ColorOS;
  • Sony Xperia UI;
  • Realme UI;
  • Pixel Experience (чистый Android от Google).

Кроме того, имеются и альтернативные прошивки:

  • LineageOS – самая популярная "чистая" замена;
  • Pixel Experience, crDroid, Evolution X;
  • GrapheneOS – фокус на безопасности;
  • PostmarketOS – экспериментальная Unix-подобная ОС на базе Linux.

3. Среда и ПО

★ Среда и ключевое ПО, службы.

Графическая среда:

  • Launcher – пользовательская оболочка (например, Nova Launcher);
  • System UI – отвечает за статусбар, навигацию, блокировку;
  • Settings App – центр управления.

Интеграция с Google:

  • Google Play Services – API для карт, геолокации, оплаты;
  • Google Assistant, Voice Typing, Lens;
  • Google Photos, Drive, Gmail.

Ключевые приложения:

  • Google Messages, Phone, Browser;
  • Camera, Gallery, Clock, Calculator;
  • Play Store, YouTube, Chrome, Maps.

Службы:

  • Zygote – запуск новых приложений;
  • SurfaceFlinger – управление отображением;
  • AudioFlinger – звуковая система;
  • PackageManagerService – управление приложениями;
  • ActivityManagerService – жизненный цикл приложений.

4. Инструменты

★ Полезные инструменты Android

На уровне пользователя:

  • Google Assistant – голосовое управление;
  • Digital Wellbeing – контроль времени использования;
  • Split Screen, Picture-in-Picture;
  • Files by Google, Gallery Go, Camera Go.

Для разработчиков и продвинутых:

  • ADB (Android Debug Bridge) – CLI-инструмент для работы с устройством;
  • Fastboot – загрузка в режим восстановления и перепрошивка;
  • Logcat – просмотр логов системы;
  • Android Studio / IntelliJ IDEA – IDE;
  • Termux – Linux-терминал на Android.

Примеры ADB-команд:

adb devices                 # список подключенных устройств
adb shell # вход в shell
adb install app.apk # установка приложения
adb logcat # просмотр логов


5. Сеть

★ Работа с сетью в Android

Wi-Fi и Bluetooth:

  • Wi-Fi Settings – выбор сети, DNS, заблокированные сети;
  • Bluetooth Pairing – подключение аксессуаров;
  • Hotspot & Tethering – раздача интернета.

Инструменты диагностики:

  • Settings > Network & Internet > Data Usage;
  • Wi-Fi Diagnostics Mode (на некоторых устройствах);
  • Ping via Termux / Terminal Emulator;
  • IPerf3 – тестирование скорости сети.

Удалённый доступ:

  • Scrcpy – управление Android с ПК через USB;
  • Vysor, AirDroid, TeamViewer – удалённый доступ;
  • SSH (через Termux или root).

6. Запуск с других ОС

Запуск с других ОС:

  • Android Emulator (входит в Android Studio);
  • Genymotion;
  • Bluestacks, Nox Player, LDPlayer;
  • VirtualBox / QEMU;
  • Phoenix OS / PrimeOS / AnLinux.

Запуск других ОС на Android:

  • ExaGear, Parallels Access – Windows;
  • Termux, UserLAnd, AnLinux, Debian Noroot, PRoot – Linux;
  • RetroArch, PPSSPP, Dolphin, ePSXe, Mupen64Plus, Gambatte, Nestopia – эмуляторы игровых консолей.

Файловая система и структура каталогов Android

Файловая система Android построена на базе ядра Linux, но адаптирована под мобильные устройства и требования безопасности. В отличие от классических дистрибутивов Linux, Android использует собственную организацию каталогов, оптимизированную для изоляции приложений, управления ресурсами и безопасной загрузки. Архитектура соответствует стандартам AOSP (Android Open Source Project) и дополняется производителями устройств.

Каждый каталог в Android имеет чёткое функциональное назначение. Система применяет строгую модель разграничения доступа: пользовательские данные изолируются от системных компонентов, а приложения работают в песочницах с ограниченными правами.

/apex — обновляемые системные компоненты

Каталог /apex содержит APEX-пакеты — специальные образы файловых систем, которые монтируются как read-only разделы. Эти пакеты используются для доставки обновлений критически важных системных компонентов без полной перезаписи системы. Примеры содержимого:

  • com.android.runtime — ART (Android Runtime);
  • com.android.tzdata — данные часовых поясов;
  • com.android.conscrypt — криптографические библиотеки.

APEX-механизм позволяет обновлять низкоуровневые части ОС через Google Play System Updates.

/bin — базовые утилиты командной строки

В /bin находятся символические ссылки на исполняемые файлы из /system/bin. Этот каталог обеспечивает совместимость с POSIX-стандартом и предоставляет минимальный набор CLI-инструментов:

  • sh — оболочка;
  • ls, cp, mv — работа с файлами;
  • ps, top — мониторинг процессов.

Большинство этих утилит — упрощённые версии BusyBox или toybox, адаптированные под Android.

/boot — компоненты начальной загрузки

Хотя /boot не всегда присутствует как отдельный каталог в корне файловой системы (чаще это отдельный раздел), он логически представляет собой набор файлов, необходимых для старта устройства:

  • kernel — образ ядра Linux;
  • ramdisk — временная корневая файловая система, загружаемая до монтирования основной системы;
  • dtb — Device Tree Blob (на некоторых устройствах).

Эти компоненты загружаются загрузчиком (bootloader) и инициируют запуск Android.

/data — пользовательские данные и установленные приложения

Каталог /data — центральное хранилище всего пользовательского контента и данных приложений. Доступ к нему строго ограничен: только root и владельцы приложений могут читать свои подкаталоги.

/data/app — APK-файлы приложений

Содержит установленные APK-файлы пользовательских приложений. Каждое приложение размещается в отдельной директории с уникальным именем пакета. Начиная с Android 11, APK может быть разделён на несколько частей (split APKs).

/data/data — приватное хранилище приложений

Здесь хранятся внутренние данные каждого приложения:

  • базы данных SQLite (/databases);
  • настройки SharedPreferences (/shared_prefs);
  • кэш (/cache);
  • внутренние файлы (/files).

Путь к данным конкретного приложения выглядит как /data/data/com.example.app.

/data/media — общее пользовательское хранилище

Этот каталог служит основой для эмулированного внешнего хранилища (/sdcard). Он содержит медиафайлы, документы и другие данные, доступные пользователю и другим приложениям (при наличии разрешений). Изоляция достигается через механизм FUSE (Filesystem in Userspace), который предоставляет каждому приложению свой «вид» файловой системы.

/dev — интерфейсы аппаратных устройств

Как и в Linux, /dev содержит специальные файлы устройств:

  • /dev/block — блочные устройства (разделы диска);
  • /dev/input — события ввода (тачскрин, клавиатура);
  • /dev/graphics/fb0 — фреймбуфер дисплея;
  • /dev/snd — аудиоустройства.

Доступ регулируется SELinux-политиками и группами пользователей.

/metadata — метаданные безопасности и обновлений

Используется для хранения служебной информации:

  • ключи шифрования (в связке с vold);
  • состояние OTA-обновлений;
  • данные dm-verity (проверка целостности системы).

Этот каталог недоступен обычным приложениям и защищён на уровне ядра.

/mnt — точки монтирования

Служит корнем для всех точек монтирования:

  • /mnt/runtime/default — стандартный доступ к хранилищу;
  • /mnt/runtime/read и /mnt/runtime/write — изолированные представления для приложений с разными уровнями разрешений;
  • /mnt/media_rw — прямой доступ к SD-карте (если есть).

Android использует многоуровневую систему монтирования для реализации scoped storage.

/proc — информация о процессах и ядре

Виртуальная файловая система, предоставляемая ядром Linux:

  • /proc/cpuinfo — характеристики процессора;
  • /proc/meminfo — использование памяти;
  • /proc/[pid] — данные о конкретном процессе;
  • /proc/net — сетевая статистика.

Доступ к большинству файлов ограничен из соображений безопасности (особенно начиная с Android 7).

/product — компоненты производителя и партнёров

Введён в Android 10 как часть Project Treble. Содержит:

  • OEM-приложения (например, фирменные утилиты Samsung или Xiaomi);
  • конфигурационные файлы;
  • overlay-ресурсы для кастомизации интерфейса.

Раздел /product может обновляться независимо от /system.

/recovery — среда восстановления

Отдельный раздел, содержащий минимальную ОС для:

  • сброса устройства к заводским настройкам;
  • установки OTA-обновлений;
  • диагностики ошибок.

Обычно основан на упрощённом Linux с ограниченным набором утилит.

/sdcard — эмулированное внешнее хранилище

Символическая ссылка на /storage/emulated/0, представляющая пользователю удобный доступ к медиа и документам. На самом деле это не физическая SD-карта, а FUSE-монтирование из /data/media/0. Реальная SD-карта (если есть) доступна через /storage/[UUID].

/sys — информация об оборудовании и драйверах

Виртуальная файловая система sysfs, экспортирующая данные из ядра:

  • /sys/class — классы устройств (power_supply, backlight, bluetooth);
  • /sys/devices — иерархия устройств;
  • /sys/kernel — параметры ядра.

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

/system — основная системная партиция

Read-only раздел, содержащий ядро Android и все базовые компоненты. Обновляется только через официальные прошивки или ADB (в режиме разработчика).

/system/app — предустановленные приложения

Системные приложения, поставляемые с устройством (например, Калькулятор, Настройки). Не имеют повышенных привилегий.

/system/bin — системные исполняемые файлы

Основные бинарники Android:

  • surfaceflinger — композитинг графики;
  • zygote — родительский процесс для всех приложений;
  • logcat — просмотр системных логов;
  • dumpsys — диагностика служб.

/system/etc — конфигурации и политики

Содержит:

  • permissions/ — XML-файлы разрешений;
  • sysconfig/ — глобальные настройки функций;
  • seccomp/ — политики фильтрации системных вызовов;
  • hosts — локальное сопоставление доменов.

/system/fonts — системные шрифты

TTF/OTF-файлы, используемые во всём интерфейсе:

  • Roboto-Regular.ttf;
  • NotoColorEmoji.ttf — эмодзи;
  • региональные шрифты (например, для китайского или арабского).

/system/framework — Android Framework

Сердце платформы:

  • framework.jar — основные API;
  • services.jar — системные службы;
  • boot.art — предварительно скомпилированный ART-образ.

Эти JAR-файлы загружаются в каждый процесс через Zygote.

/system/lib и /system/lib64 — нативные библиотеки

Shared-библиотеки для 32- и 64-битных приложений:

  • libc.so — стандартная библиотека C;
  • libandroid.so — нативные Android API;
  • libgui.so — графический стек.

/system/media — системные аудиофайлы

Стандартные звуки:

  • audio/ — рингтоны, уведомления, будильники;
  • bootanimation.zip — анимация загрузки.

/system/priv-app — привилегированные приложения

Системные приложения с расширенными правами:

  • Settings;
  • SystemUI;
  • Launcher.

Они могут использовать signature|privileged-разрешения, недоступные обычным приложениям.

/system/usr — пользовательские ресурсы

Содержит:

  • keychars/ — раскладки клавиатур;
  • keylayout/ — маппинг физических кнопок;
  • share/zoneinfo/ — данные часовых поясов.

/system_ext — расширения системы

Введён в Android 10. Содержит дополнительные компоненты от OEM или Google, которые не входят в базовый AOSP, но требуются для работы системы:

  • библиотеки для камер;
  • сервисы Google Play;
  • проприетарные API.

/tmp — временные файлы

В большинстве реализаций Android этот каталог либо отсутствует, либо является ссылкой на /data/local/tmp. Используется разработчиками для временного размещения файлов при отладке через ADB.

/vendor — компоненты производителя оборудования

Содержит проприетарные HAL (Hardware Abstraction Layer), драйверы и библиотеки, специфичные для конкретного SoC или устройства:

  • lib/hw/ — модули HAL (camera, sensors, audio);
  • firmware/ — микрокоды для чипов;
  • etc/ — конфигурации оборудования.

Раздел /vendor изолирован от /system благодаря Project Treble, что упрощает обновление ОС без участия производителя.