Взгляд на обновления Android с точки зрения разработчика
Кода без ошибок не бывает. Питер Нортон говорил: «Идеальному коду место в музее: там ценят всякие древности». А для исправления ошибок — существуют обновления.
Хотелось бы поделиться своим взглядом на обновления с точки зрения разработчика рантайма Android. Часть нашей большой команды находится в России, я занимаюсь подсистемой Java, оптимизацией виртуальной машины и исправлением недочетов по мелочам. Зона нашей ответственности — всё, что выше ядра и ниже приложений. Мы хотим добиваться максимальной эффективности приложений, в том числе — энергоэффективности. Это то подразделение Samsung, которое не видно пользователю, но очень важное, ведь ошибка в этом слое ведет к неправильному поведению многих приложений.
Сегодня мы поговорим о том, как устроено обновление системы Android на текущий момент, каково мнение вендоров на этот счёт, и какие новые тенденции наблюдаются на ближайшие годы. А также советы пользователям: как часто обновляться, какие патчи ставить и как помочь разработчикам быстрее находить баги.
Источник — xkcd
Как обновляться
Есть проблема, которая заключается в том, что большое количество пользователей, как оказалось, вообще не обновляют свой телефон после покупки. Многие ошибки не случились бы, если бы пользователи вовремя обновляли свой телефон. Несколько лет назад обновления ставились не так часто, надо было ставить много галочек, периодически нажимать кнопку апдейта. Сейчас в современных версиях Android все достаточно просто, достаточно поставить галочку при покупке телефона, и оно будет обновляться.
Если апдейты выключить, то мы не получаем исправления критических ошибок. Да, могут обновиться отдельные приложения через Google Play, но серьёзные ошибки, особенно в безопасности, остаются неисправленными, а часть людей, которые не нажали эту кнопку или не знают, как это сделать, продолжают жаловаться на ошибки в приложениях.
Также, достаточно интересен момент, как вендор может повлиять на использование только самых новых образов ОС. Например, в устройствах Samsung за последние несколько лет есть такая фича, как Rollback Prevention: хардверные фьюзы, которые кодируют минимально приемлемые версии ОС. В старых версиях могут содержаться известные уязвимости, поэтому просто так старую операционку вы не загрузите на телефон.
Обновления в корпоративной среде
На B2B рынке есть свои особенности. Там обновляться можно только по рекомендации и под чутким руководством IT и ИБ департаментов. Корпоративным, пользователям нужно внимательно прислушиваться к рекомендациям IT-служб, а IT-службам использовать решения, позволяющие минимизировать риски. Например, Samsung Knox E-FOTA.
Там функционал такой:
- Выборочное обновление определённого списка устройств
- Контроль списка используемых в компании прошивок
- Выбор времени для обновления, согласно графику работы
Как будут выглядеть обновления в будущем
Сейчас идет тенденция на модуляризацию Android. В долгосрочных перспективах, Google ведет разработку новой операционной системы Fuchsia, она ещё достаточно сырая, но принципы, заложенные там, уже потихоньку переходят в Android. Одна из вещей — это модуляризация. Из монолитной операционной системы выделяются некоторые компоненты, которые могут обновляться независимо, через Google Play, точно так же, как приложения. Google пошла на этот шаг, поскольку их тоже не устраивает ситуация, когда люди не ставят обновления, плюс они пытаются уменьшить фрагментацию своих устройств, чтобы компонента была меньше завязана на вендора и больше на Google. Рядовой пользователь не знает, что такое Android Runtime, и говорить «Не хотели бы вы скачать новую версию Android Runtime?» выглядит немножко глупо. Поэтому Google внедряет систему невидимого апдейта. Она в принципе существует давно, например для GMS (Google Mobile Services), эта система основана на плагинах, и там плагины обновляются невидимым образом. Такой же принцип сейчас Google внедряет и для базовых компонентов Android. То есть в какой-то момент мы получим операционную систему, которая будет редко обновлять ядро, но по факту она будет обновляться часто в своих подсистемах. Даже будет не нужна перезагрузка телефона. Сейчас переходный период. У монолитной системы есть плюсы, есть минусы (вспоминаем полемику Торвальдса и Таненбаума 27-летней давности), но сейчас Google пошёл к микроядерной архитектуре и независимому обновлению компонентов.
Девелоперы приложений хотели бы иметь стабильную систему и меньшую степень фрагментации. Но не всегда это плюс для производителей телефонов, поскольку уменьшение фрагментации ведет к меньшей дифференциации, поскольку мы уже не можем внедрять новые оптимизации в этот компонент в случае, если обновление происходит из Google Play. Это другая сторона медали. А пользователь в скором времени будет освобожден от необходимости думать о том, нужно ли ему обновить тот или иной компонент. В дальнейшем Google сделает систему такой, что если вы покупаете телефон и подключаете Google Play, то вы автоматически подписываетесь на все обновления.
Как помочь разработчикам
Очень важен фидбек от пользователей, нужно ставить галочку, чтобы автоматически отсылать его. Какие-то проблемы могут быть решены просто при помощи небольшого обновления операционной системы. На основе фидбека Samsung решает, что же именно нужно исправлять и чем пользователи недовольны, например, отслеживает время старта приложения — конечно, если человек согласился отсылать эти данные и поставил соответствующую галочку.
Итак, подводя итог, что мы, как разработчики, ждем от пользователя:
- Обязательно ставить обновления безопасности, и делать это сразу
- Отправлять фидбек и не стесняться сообщать о том, что что-то не работает
- Если вы корпоративный пользователь, то следовать регламенту, принятому в вашей компании
Автор: Иван Майданский,
Expert Software Engineer
AI Compiler Lab
Исследовательский центр Samsung в России