Часто слышу вопрос: какой карманный софтверный мир выбрать — Android либо iOS. Обходил сборочные линии, исследовал прошивки, писал драйверы, разбирал дампы ядра, поэтому готов поделиться наблюдениями без маркетинговой пудры.

Истоки спора уходят в разницу подходов. Android стартует с ядра Linux, iOS опирается на гибридную микрокернель XNU. Две школы инженерии приводят к разным компромиссам по латентности, энергопотреблению, валидации памяти.
Уровень ядра
Linux-ядро следует принципу «монолит плюс модули»: драйвер от камеры, аудио-подсистема, стэк сети загружаются динамически. Такой дизайн упрощает портирование под широкий пул чипсетов, но расшатывает предсказуемость таймеров при высокой нагрузке. XNU держит критичные сервисы в пространстве Mach, а пользовательские драйверы помещает в I/O Kit с жёсткой песочницей, снижая вероятность race-condition и аварийной эскалации привилегий.
Вырабатывая патчи, замечал интересный эффект: Android-ведро любит «грязные» паузы сборщика мусора ART, iOS благодаря ARC вытягивает аллокации назад в лакуну свободной памяти без ощутимых замираний. Разница подчёркивается при многопоточном UI.
Экосистема приложений
Google Publication Flow пропускает apk через статические линтеры и машинное сканирование, а затем отправляет в продакшн практически мгновенно. App Store Review снабжён ручной верификацией, хантингом приватных API, строгим тестом на энергопрофиль. Первый маршрут ускоряет инкубацию стартапов, второй усиливает контур безопасности.
Фрагментация вызывает боль менеджеру релизов. В реестре Google сотни комбинаций GPU, RAM, плотностей дисплея. Приходится внедрять split-bundles, ABI-фильтрацию, проверку OpenGL ES версии. Купертиновская линейка ограничена десятком SoC, благодаря чему профилировщик Instruments часто находит боттлнек быстрее.
Оптимизация и батарея
Android Power HAL реагирует на hint’ы трассы SurfaceFlinger: скролл, тач, воспроизведение мультимедиа. Алгоритм governors выстраивает частоты big.LITTLE кластера, полагаясь на heuristics. iOS использует собственную схему Dynamic Borrows: контроллер зарядки общается с API CoreDuet, запрашивая пассивное охлаждение перед фазой Turbo Burst A-серии.
В полях тестировал термокамерами: при одинаковой яркости панель TOP Android-флага нагревается на 4 °C сильнее, что ускоряет троттлинг GPU. Причина — открытый доступ к драйверам, где вендоры держат legacy-код. У iOS кодогенерация Metal Shading Language под конкретный GPU лишена подобного багажа.
Финальный аккорд вопроса обычно звучит об интерфейсе. Один пользователь обожает кастомные лончеры, другой ценит гомогенную навигацию. Складываю личное резюме: алгоритмы и принципы достаточно зрелые на обеих сторонах, победителя нет. Я держу два телефона, выбирая инструмент под задачу: профилировка датчиков BLE — Android, низкоуровневая AR — iPhone. Вопрос остаётся неразрешимым, как спор о вкусе меди в музыке кольцевой шины.














