ОС и устройства
Операционная система — слой между железом и приложениями; под каждый класс устройств существует своя ОС, самая массовая из них — Android.
Что такое ОС и устройства
Операционная система (ОС) — программный слой между железом и приложениями. Она управляет процессами и памятью, работает с файловой системой, а главное — прячет за собой конкретные устройства: приложению незачем знать, чей у вас диск или сетевая карта, оно просто просит ОС записать файл.
Основа ОС — ядро (kernel). Оно распределяет процессорное время, управляет памятью и содержит драйверы устройств. Всё остальное — оболочка, утилиты, графика — работает поверх ядра и общается с ним через системные вызовы.
Класс устройства диктует выбор ОС:
| Класс | Типичные ОС | Особенность |
|---|---|---|
| Серверы | Linux, Windows Server | Без графики, управление по SSH |
| Десктопы | Windows, macOS, Linux | GUI, широкая поддержка периферии |
| Смартфоны, планшеты | Android, iOS | Тач-интерфейс, батарея, песочница приложений |
| ТВ, авто, часы | Android TV, Automotive, Wear OS | Варианты Android под форм-фактор |
| Встраиваемые | RTOS, урезанный Linux | Минимум ресурсов, реальное время |
Что такое Android
Android — операционная система для мобильных и встраиваемых устройств, развиваемая Google. Самая распространённая ОС в мире по числу устройств: смартфоны, планшеты, телевизоры, автомобили, часы.
Устройство Android по слоям, снизу вверх:
- Ядро Linux — управление памятью, процессами, драйверы. То же ядро, что на серверах, с патчами под мобильные задачи.
- HAL (Hardware Abstraction Layer) — стандартный интерфейс к камере, экрану, датчикам конкретного вендора.
- ART (Android Runtime) — среда исполнения приложений, пришедшая на смену Dalvik.
- Фреймворк и приложения — то, что видит пользователь. Пишут на Kotlin и Java, тяжёлые части — на C/C++ через NDK.
Важный нюанс, который часто упускают: Android — это не Linux в привычном смысле. Ядро общее, но всё вокруг другое: своя стандартная библиотека Bionic вместо glibc, нет привычного набора GNU-утилит, нет X11. Программа для Ubuntu на Android просто так не запустится.
Кодовая база открыта как AOSP (Android Open Source Project) — на ней строят HyperOS, One UI и другие оболочки вендоров. А вот сервисы Google (Play, карты, push) в AOSP не входят и лицензируются отдельно. Отсюда и берутся устройства «на Android, но без Google Play».
Приложение распространяется как APK — архив с кодом, ресурсами и манифестом. В Google Play публикуют формат AAB, из которого магазин сам собирает APK под конкретное устройство.
Что такое эмулятор Android
Эмулятор Android — программа, которая создаёт виртуальную машину с Android на обычном компьютере. Нужен разработчикам и тестировщикам: проверить приложение на десятке версий ОС и разрешений экрана, не покупая десять телефонов.
Основные варианты:
- Android Emulator (AVD) из состава Android Studio — официальный, построен на QEMU. Стандарт для разработки.
- Genymotion — коммерческий, ориентирован на тестирование и CI.
- BlueStacks, LDPlayer — потребительские, в основном для запуска мобильных игр.
- Waydroid — Android в контейнере на Linux, без полноценной эмуляции, использует ядро хоста.
Ключ к скорости — аппаратное ускорение. Без него эмулятор мучительно медленный.
- Архитектура образа. Системный образ x86_64 исполняется на процессоре хоста напрямую. ARM-образ требует трансляции инструкций и работает в разы медленнее. Берите x86_64, если не тестируете что-то ARM-специфичное.
- Виртуализация. На Linux — KVM, на Windows — WHPX/Hyper-V, на macOS — Hypervisor.framework. Аппаратную виртуализацию нужно включить в UEFI (Intel VT-x / AMD-V) — самая частая причина «эмулятор не запускается».
- Графика. Режим
-gpu hostотдаёт рендеринг реальной видеокарте; программный рендеринг медленнее, но выручает на серверах без GPU.
На сервере это тоже работает: фермы эмуляторов под автотесты — обычная практика в CI. Требования — процессор с виртуализацией и включённая вложенная виртуализация, если сам сервер виртуальный. Для тестов с тяжёлой графикой к узлу пробрасывают видеокарту через GPU passthrough.
Что такое Android Debug Bridge (ADB)
ADB (Android Debug Bridge) — утилита командной строки для управления Android-устройством с компьютера. Входит в состав Android SDK Platform Tools и работает и с реальным телефоном по USB, и с эмулятором.
Устроен ADB из трёх частей: клиент на вашей машине, локальный сервер-посредник (слушает порт 5037) и демон adbd на самом устройстве.
# Список подключённых устройств и эмуляторов
adb devices
# Интерактивная оболочка на устройстве
adb shell
# Установить и удалить приложение
adb install app.apk
adb uninstall com.example.app
# Обмен файлами
adb push local.txt /sdcard/
adb pull /sdcard/log.txt .
# Логи системы и приложений
adb logcat
# Подключение по сети вместо USB
adb tcpip 5555
adb connect 192.168.1.50:5555
Чтобы устройство отвечало на ADB, нужно включить режим разработчика: в «О телефоне» семь раз нажать на номер сборки, затем в появившемся меню разработчика включить «Отладка по USB». Если adb devices показывает unauthorized — на экране телефона висит неподтверждённый запрос на доверие компьютеру.
Связанные термины
- Linux — ядро, на котором построен Android
- Виртуализация — без неё эмулятор Android бесполезно медленный
- Виртуальная машина — чем по сути является эмулятор
- Гипервизоры (VirtualBox/KVM/Hyper-V) — движки аппаратного ускорения эмуляции
- GPU passthrough — проброс видеокарты для тестов с графикой
- CLI — среда, в которой живёт ADB
Готовы запустить GPU-задачу?
Запустить GPU-сервер