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, что упрощает обновление ОС без участия производителя.