Как стать автором
Обновить

Долгая дорога к быстрым обновлениям Android

Время на прочтение9 мин
Количество просмотров14K
Всего голосов 26: ↑24 и ↓2+29
Комментарии61

Комментарии 61

Из этой картинки видно, как много людей все еще используют телефоны со старыми версиями Android – почти все.

Похоже, эта картинка показывает охват с учётом каждой версии, а не то, что версию 4 используют почти все. То есть если понизить минимальную поддерживаемую с 4.2 до 4.1, прирост аудитории будет 0.6%.

Производитель чипов в новой модели отвечал за нижнюю часть, в то время как Google и производители устройств могли сконцентрироваться на верхней.

А как они умудрились изначально сделать по-другому? У них код пространства пользователя напрямую к железу обращался?

Каким образом они решают вопрос обновления API между драйверами и модулями?
Например, для повышения безопасности модулям нужно изменить API общения с драйверами. Как в таком случае происходит обновление?
Похоже, эта картинка показывает охват с учётом каждой версии, а не то, что версию 4 используют почти все. То есть если понизить минимальную поддерживаемую с 4.2 до 4.1, прирост аудитории будет 0.6%.

Вы верно поняли, именно так я её и следует читать. Я хотел обратить внимание на то, что на Android 10 менее 10% пользователей, а Android 11 вообще на ней не виден. К сожалению, Google данную статистику не обновлял уже давольно давно, так что цифры неактуальные. На данный момент, как я понимаю, на 10 и 11 примерно половина пользователей. Но это все-равно означает что вторая половина живет на Android версиях 9 и старее.

А как они умудрились изначально сделать по-другому? У них код пространства пользователя напрямую к железу обращался?

Если очень коротко, то до Treble HALы был библиотеками и подлинковывались в системные сервисы. Поэтому при обновлении HALов требовалось перекомпилять сервисы (то есть по-сути всю систему).

Каким образом они решают вопрос обновления API между драйверами и модулями?
Например, для повышения безопасности модулям нужно изменить API общения с драйверами. Как в таком случае происходит обновление?

Между Android Framework и драйверами есть прослойка — HAL. По-сути имеено HAL определяет интерфейс между системой и драверами. После Treble у этих интерфейсов появились версии. То есть, если новый Android хочет обновить интерфейс работы с Bluetooth HAL, например, то Google выпускает новую версию данного интерфейса — 2.0. При этом старая версия интерфейса 1.0 может все еще поддерживаться. Таким образом, когда на устройство со старой версией HAL придет OTA обновление с новым Андроидом, телефон продолжит работать на старом интерфейсе.
Т.е. в вашей терминологии HAL это слой пространства пользователя между ОС и остальным кодом, так?

например, то Google выпускает новую версию данного интерфейса — 2.0. При этом старая версия интерфейса 1.0 может все еще поддерживаться. Таким образом, когда на устройство со старой версией HAL придет OTA обновление с новым Андроидом, телефон продолжит работать на старом интерфейсе.

ОК, при незначительных изменениях они видимо могут работать с 2мя версиями API.
Но рано или поздно через версию 1 будет нельзя получить тот же функционал, что и у новой версии. То есть в итоге все равно обновиться будет нельзя, так?
Условно говоря выходит первая версия, потом вторая, потом третья, потом выходит четвертая и первая становится деприкейтед. Таким образом, старое железо через какое-то время перестанет поддерживать новые версии Андроида, но это не должно просиходить каждый год. Цель Google, как они её декларируют — это примерно 4 года поддержки для каждой весии HAL интерфейса. Но это цель, а на практике все, кончено, может меняться.
Интересно, Android для телефонов — это как Windows для ПК. Как Microsoft борется с фрагментацией?
НЛО прилетело и опубликовало эту надпись здесь
правильно, с самого начала разработка/адаптация кода NT велась под руководством Dave C. и его группы, т.е. централизовано, отсюда все вытекает, как велась/ведется разработка linux вы вероятно сами знаете, проблема фрагментации была предопределена с самого начала выбором os, porting на новое hw делается асинхронно и по-другому не получится
ps
толковые люди из google должны были предвидеть
А у вас никогда при обновлении Windows драйвера не слетали?:)
А если серьезно — комментарий очень правильный. Проблема не новая, и Windows её решает уже давно — решает стандартизацией своих низкоуровневых интерфейсов. И Android по-сути сейчас пошел той же дорогой.
Просто интерфейсы, читай WinAPI, не меняется с каждой версией, насколько я знаю. Только добавляются новые функции.
На новых андроидах старые приложения (времён Android 4.x, например) более-менее нормально работают (как и старые приложения win32 работают на Windows 10)

Тут дело в другом. Почему я могу поставить Windows 10 на компьютер 2010 года выпуска, а Android 10 не могу поставить на телефон не то что 2010, а даже 2018 года?
Драйверов нет. Под каждую железку надо писать отдельно.
Может, потому что ARM, а не x86? Покажите мне хоть одно устройство десятилетней давности на ARM, на которое было бы можно поставить современную версию какой-либо ОС.
ARM — это конструктор вендорно огороженных SoC'ов. И покупая устройство на ARM, вы гарантированно покупаете вендорно огороженный SoC, на который можно поставить только то, что разрешено разработчиком железа и только тех версий, которые разрешены разработчиком железа.
x86 гораздо более открыта, именно поэтому разработчики железа так мечтают о том дне, когда она наконец полностью (включая десктопы) умрёт в пользу ARM.
Помещая «ядерный» функционал в отдельный модуль, Google гарантирует единообразие работы этого функционала на всех телефонах.
А мне кажется, что это очень похоже на бэкдор, завязанный конкретно на одну компанию.
Они таким образом могут на «нужный» девайс пушнуть нужное обновление, и получить все данные без терморектального криптоанализа.
Они давно это могут. Google Services Framework обновляется само, без спроса пользователя.
Это было всегда, да. Но тут все слои теперь под их контролем.
Смотрите, в теории код Android открыт почти весь, и вы можете посмтореть, что там внутри. Но на практике, у вас на телефоне работают какие-то бинарники, которые были либо залиты туда на заводе, либо пришли позже OTA. Большую часть этих бинарей вам присылает производитель вашего телефона. Теперь некоторые из них (но далеко не все) будет присылать Google напрямую. Но в любом случае, вам остается только поверить, что открытый код каждого бинарника никто не добавлял каких-то своих пропиетарных закладок. Проверить это вам будет весьма непросто. Так что по-сути вопрос лишь в том, кому вы больше доверяете — Google или условным Samsung/Xiaomi/Motorola.
Я вот об этом и думаю как раз. Как-то слишком много контроля на всех уровнях ушло одному Гуглу. Так-то я больше доверяю моей любимой Сони.

Посмотрел статистику приложения над которым работаю - 10% для Андроид 11. Прогрессом это назвать я не могу(

И тем не менее это прогресс :). 5 лет назад это был бы 1% максимум.
Посмотрел тоже, цифры примерно такие.

Android 11 — 13%
Android 10 — 36%
Android 9 — 17%
Android 8 — 9,2%
Android 7 — 5%
Android 6 — 1.21%
Android 5 — 1.3%
Android 4 — 0.21%
Нужен открытый стандарт для ARM, подобный открытому стандарту x86. Если таковой будет создан, (пусть тем же Гуглем) и поддержан открытыми драйверами, то он тут же победит и проблема решится сама собой.
Стандарт чего именно? Архитектура ARM документирована. Архитектура x86 такая же не свободная, как ARM, в том смысле, что если захочешь её производить, придётся договариваться о лицензии с Intel/AMD.

Если на x86 есть такой «стандарт», примерно в каком направлении искать этот документ?
Стандарт чего именно? Архитектура ARM документирована.

Отлично, это уже начало ;) Но почему-то Линукс не запускается на различных АРМ устройствах без серьёзных, да ещё зачастую закрытых доработок, а на различных х86 устройствах запускается.

Почему это так? Очевидно потому что есть серьёзные отличия от устройства к устройству. Но почему они есть? Почему разработчики телефонов не делают совместимыми свои устройства, ведь они могли бы сэкономить массу денег и времени? Ведь каждому телефону нужна оперативная память, биос, процессор, шина для работы с устройствами, графическая карта, зачем это всё делать несовместимым? Вот это всё и должно стать единообразным. В х86 у нас есть стандартный PCIe, USB на которые можно цеплять устройства, есть более-менее стандартный биос, UEFI, SATA, NVME и т.п. Что есть из этого в ARM? По-моему только USB.

А как это сделать единообразным? Кто-нибудь крупный, типа Гугла должен разработать стандарт, следуя которому можно максимально упростить поддержку твоего устройства стандартным ядром.
Ну сделает гугл стандарт, а вендорам это зачем?
Проблема, что Android сидит на открытом linux-ядре. Было бы ядро проприетарное, как у Windows, не было бы такой фрагментации. Хочешь, чтобы запустилась ОСь — следуй стандартам, делай стандартное железо. А с открытым ядром всегда его можно подправить под своё железо.
Ведь каждому телефону нужна оперативная память, биос, процессор, шина для работы с устройствами, графическая карта, зачем это всё делать несовместимым?
Был бы смысл делать совместимым, если бы пользователь сам мог собирать телефон из кубиков, как ПК. А поскольку части телефона не подлежат замене, делать их заменяемыми и совместимыми нет причины.
Ну сделает гугл стандарт, а вендорам это зачем?

Ну как раз чтобы и можно было запускать новые версии Линукса без доработок. В этом же сейчас и проблема — вендоры не справляются с поддержкой своих же устройств. А если следовать стандартам, то и устройства внутри телефона будет проще подключать (вендорам) и сами драйверы упростятся и новые обновления будут запускаться без проблем. Такие телефоны будут дольше поддерживаться без дополнительных усилий от вендора. Это добавит этим телефонам конкурентоспособности и снизит затраты на содержание «доработчиков».

В свою очередь, это позволит всем пользователям ставить всегда новую версию ОС со всеми обновлениями, что позволит разработчикам выкинуть или сократить поддержку для старых версий ОС, что снизит издержки разработки и ещё больше добавит конкурентоспособности андроидофонам.

Или ты намекаешь что вендоры на 3 шага вперёд подумать неспособны?
Мне кажется, вы только что изобрели Generic Kernel Image: source.android.com/devices/architecture/kernel/generic-kernel-image. Так что да, Google уже идет в этом направлении. Но это прямо таки новинка — большинство телефонов пока GKI не поддерживают. По этой теме, по идее, стоит отдельную статью наисать…
«moving SoC and board support out of the core kernel into loadable modules» — звучит как правильное решение, но сработает ли это на практике?

Гугл там же ещё и Фуксию сделал с микроядром, это тоже один из способов изолировать драйвера.

Но я всё же говорил об эволюции железа, а не софта, потому что я честно не понимаю, зачем каждому вендору лепить что-то своё нестандартное. Что там такого может быть принципиально отличного в телефонах?

Говорю про железо с дилетантской точки зрения, потому что мои знания о железе ARM ограничены.
зачем каждому вендору лепить что-то своё нестандартное
Чтобы иметь свой бутерброд с маслом. Иначе телефоны будут собираться из стандартных комплектующих, и что Samsung, что Sony, что HTC, что китайский подвальный ноунейм — какая юзерам разница, кто собрал, результат плюс-минус одинаковый. А так, можно лепить свои огромные наценки «за бренд».
Ну так всё так и останется, будут лепить свои огромные наценки за бренд. Просто будут меньше тратить. Вендорам это выгодно!
Нет, потому что любая подвал-фирма возьмёт стандартый SoC, стандартную периферию, припаяет её на плату, зальёт стандартную ОСь и получится ничуть не хуже, чем флагман от Samsung.

Как сборка ПК — нет смысла переплачивать за бренд, когда тебе в любом DNS соберут ничуть не хуже.
Ну как раз чтобы и можно было запускать новые версии Линукса без доработок. В этом же сейчас и проблема — вендоры не справляются с поддержкой своих же устройств
А зачем им такая поддержка? Сейчас я каждые полгода-год вижу новый флагман, а старые девайсы поддерживаются по остаточному принципу (выкатили обновление с задержкой год-полтора относительно релиза новой версии от гугла, и пусть пользователи считают это за великий подарок).
Android One — это проект дешевых Android смартфонов для развивающихся рынков ( весьма успешный проект, кстати). Для этих телефонов Google сам делает прошивки, а от вендоров идет только железо. По0сути это такой Pixel на минималках.
На самом то деле не только дешевых, ну точнее не совсем, ноки вроде пили не самые плохие телфоны на нем, + серия Xiaomi Mi A, которую многие считают одной из лучших у компании вообще.
Жаль что сяоми на нее забили, хотя понятно почему, им оно вообще не выгодно.
Да, я имел ввиду, что проект изначально позиционировался на дешевые телефоны.
Вроде как это связано с тем, что вендоры могут так же продолжать не поддерживать новые системы, особенно если поверх андроида накатили какую-нибудь свою оболочкy

То есть бедный добрый Google борется против злых вендоров с кастомными прошивками? Скорее наоборот, Google сначала захватил большой рынок, позволив вендорам быть не просто "производителями чипов", а полноправными партнёрами, теперь же полностью подминает под себя всех (+ ARMv9 с переносом некоторых интересных вещей в Realms, подальше от вендоро-зависимой трастзоны -- это ARM+Google вместе реализовали + странная новая цепочка подписей). И все это под соусом "заботы о пользователях", ага.

В общем, да. Google тут пытается ройти по лезвию — с одной стороны, хочется контроля и стандартизации, а с другой, чтобы вендоры продолжали придумывать кастомные фичи и развивать платформу. Изначально маятник был на стороне кастомизации, а сейчас качнулся в сторону «закручиванья гаек». Но если верить высказываниям людей из Google, их цель это найти какой-то баланс между этими двумя крайностями. Так что есть надежда, что полностью они вендоров «подминать» не будут.
Эх, мечты, мечты…
А почему мечты? Что хорошего мы вообще видим от вендоров? Глючные оболочки, баги которые опять же в их облочках и их сборках не фиксятся по куче обновлений подряд, и попытки пропихать свой софт и экосистему, что в итоге ломает весь опыт использования андроид смартфонов в целом.
Ибо мало того что два разных андроид устройства из за оболочек могут быть по управлению и юзер экспириенсу отличаться больше, чем чистый андроид от айос, так еще и каждый в свою сторону лепит, жесты у всех разные, стандарты передачи файлов быстро — разные, по умолчанию подсовываются разные программы.
В итоге это приводит к тому, что на каличной айос мы с комфортом имеем айрдроп, а на андроиде каждый производитель свой аналог лепит по своему, они не совместимы и странно работают.
И вроде как айос в этом плане должна быть хуже — закрытая фс, сплошные ограничения, но там ты имеешь айдроп, а на андроиде скидывай по синезубу.
И только гугл, именно вот в рамках тех задач которые описывает эта статья, пропихнул через свои сервисы аналог айрдропа, который сам встает на ВСЕ устройства от 6 андроида, без обновления прошивки.
А сверху на все это накладывается реклама своей шлаковой экосистемы, привет гнусмас и сяоми, и попытки ее навязать, весьма настырные и мерзкие.

Я был бы рад если бы гугл вообще НИЧЕГО вендорам бы не оставил, пусть будут как на Win PC, пилите железки, а в операционку свои лапы не суйте, хотите что то добавить и представить свой взгляд — пилите просто доп ПО для прошивки, не как ее часть, а как просто приложения.
Дать им еще что то вроде расширенного варианта настроек разработчика, для какой то уникальности настроек, параметров и так далее, но на этом все.

Конечно помимо грязи вендоры делали и полезные вещи, то что гугл добавлял в андроид сильно позже, доп настроечки, модификации, и прочее — но в итоге по факту лучшие Андроид прошивки — это Pixel, от самой же гугл, и оксигенОс, от 1+, которая по факту тот же почти чистый андроид, без мусорных приложений, просто с кучей доп настроек и без переманивая пользователя в свою экосистему.
Я имел ввиду поиск баланса. Мне кажется, он недостижим.
И вы забыли Сони, у них Андроид тоже почти как стоковый, только работу с камерой они как-то сильно модифицируют.
Я был бы рад если бы гугл вообще НИЧЕГО вендорам бы не оставил, пусть будут как на Win PC, пилите железки, а в операционку свои лапы не суйте
Увы, обратная сторона открытости ОС. Android открыт — что хотим, то и суём, делаем любые свои вендор-локи, как нам нравится. Победил бы Windows Mobile — имели бы мы более-менее стандартную ОС на всех телефонах, но сборкой от Microsoft, и сами бы не смогли пересобирать ядро и прочие бинарники.
С одной стороны вы правы, с другой, пример Huawei показал, что люди не андроидом пользуются, люди пользуются андроидом с гугл сервисами.
То есть с одной стороне многие на этом сайте их выпиливают конечно, а у нас на рынке( как и в Китае), можно без них жизнь, есть вон Яндекс, люди пользуются +- успешно, телефонами без гугл сервисов, в Китае вообще отдельная история, но в массе своей люди используют не андроид, а пуш уведомления, плеймаркет, гугл почту, диск, карты и вот это все, а они на андроиде завязаны на гугл сервисы.
И просто андроид без них мало кому нужен, особенно если гугл позаботится о том, что просто так их на телефон без своих сервисов не поставишь.
Поэтому под угрозой отлучения от своих сервисов гугл по идее может давить на вендоров, ставить им условия и вот это все.
Тут главное палку не перегнуть, а то все начнут как хуавей пилить свое, благо что тот же самсунг, сяоми и прочее и так это все имеют, не полностью конечно, но основа есть.

А так — ну вот кто кроме энтузиастов и тех кто прошивки делает пересобирают ядро, и вот это все?)
Открытость это здорово, но массовый потребитель не за нее андроид смартфоны использует.
Полностью согласен — мобильные сервисы это ключевой продукт, с точки зрения Google. И ни же являются главным рычагом давление на вендоров.
Единственно что могу добавить — открытость создает конкуренцию. И за счет неё Андроид развивается гораздо быстрее чем iOS. И я думаю, что Google это понимает.
Такая открытость – одна из сильных сторон Android. Она создает конкуренцию, способствует инновациям, позволяет Android эволюционировать намного быстрее. Но увы, за это разнообразие приходится платить, и усложнение процесса обновлений – часть этой цены.

Похоже на какой то маркетинг. Взаимоисключающие параграфы же.
Вот у одних:


Пользователю лишь остается принять эти обновления и наслаждаться последним iOS на телефоне.

у других:


Длинная цепочка и полгода-год до апдейта (если вообще придет)

Но при этом вторые развиваются быстрее и вносят инновации пачками да?
Расшифруйте — что здесь "развиваться" и эволюционировать быстрее? Полгода-год апдейта ждать? Или андроид по три мажорных релиза в году делает в отличии от?

Ну, за маркетинг Андроида мне точно никто не заплатит:)
Что я имею ввиду: в iOS новые фичи придумывает Apple и только Apple. Да эти фичи приходят сразу всем владельцам iPhone, но это всегда одна «управляемая » ветка эволюции.
В Android новые фичи придумывают не Google, а сразу десяток конкурирующих вендоров. Google смотрит, какие из этих фич нравятся пользователям и затаскивают эти фичи upstream. Получается такой естественный отбор. В таком варианте новых фич появляется больше и они разноообразнее, но на телефоны пользователей они приходят медленнее.

По факту конечно фичи придумывают все и все смотрят у всех. Но приживаются в итоге фичи придуманные самим гуглом, эплом, и крупными вендорами.


Как пользователь, я бы предпочел чтобы разработчики собрались сделали вместе что то одно но хорошее. Я даже закрытый код готов простить если от этого жизнь станет проще. Но вот от 1001 велосипеда в плеймаркете жизнь как-то лучше не становится, эволюции там не видать.

Если вам открытость не нужна, а нужны сервисы, iOS — хороший вариант.

Ага, а также ATF, подписи и пр. -- пусть все это идёт в руки _компании, заботящейся о приватности и безопасности_.

>То есть бедный добрый Google борется против злых вендоров с кастомными прошивками?

>А сверху на все это накладывается реклама своей шлаковой экосистемы, привет гнусмас и сяоми, и попытки ее навязать, весьма настырные и мерзкие.

для google — реклама это главное во всех случаях, imho весь этот бизнес с android был затеян с главной целью монополизировать рекламу на мобильных устройств, как они сделали на desktop, ведь как было до google — каждый размещает рекламу на своем сайте как хочет, и хозяин рекламы ему платит за это, и что сделал google — они использовали технологию alta vista (отделение digital) когда spider script переодически индексирует страницы на вашем сайте и возвращает результат на сервер, где работает search engine, и строится общая база данных для поиска, так вот они скопировали эту технологию и дополнили тем что это делается не бесплатно, как раньше, а только при условии, если вы будете размещать рекламу, которую они вам пришлют, иначе вас просто не будет в индексе, и никто вас не найдет в интернете, тем самым всю рекламу пустили через себя, а это серьезные деньги, примерно так, как обычно строго imho
Это неправда. А именно, гугл хорошо индексирует сайты, независимо от того, есть на них гугл-реклама или нет.

Гугл победил добром, а не злом. А именно, предоставив лучший поиск. А для рекламодателей — лучшую биржу. Ведь кому охота договариваться с 10 сайтами, изучать их аудиторию и т.п. когда можно пойти на биржу и сказать: вот мои деньги, хочу 200 показов этого баннера домохозяйкам в возрасте от 30 до 35 лет. Всё, гугл всё остальное сделает сам.

Аналогично веб-мастерам. Проще продать рекламную площадь гуглу (да, денег выйдет меньше, зато гарантированно), чем искать спонсоров.
>Гугл победил добром, а не злом. А именно, предоставив лучший поиск

это не вся правда, управление порядком чтения результатов поиска тоже дополнительный источник доходов, до google можно было к примеру сделать поиск только по сообщениям на форумах, исключив всю эту муть которую навязывает google, это крайне полезно при поиске технической информации, где все это сейчас?
какой процент сайтов вообще сейчас индексирует google?
назовите пожалуйста свою оценку, и пусть читающие эту страницу сами решат, кто из нас прав
После того, как гугл победил, он может творить любую дичь, у него нет конкурентов. Но побеждал он честно, а не так, как вы написали.

И какая разница, какой я процент назову? Важно то, что сайты без гугл-рекламы индексируются, это факт, и это опровергает ваше заявление выше, что
только при условии, если вы будете размещать рекламу, которую они вам пришлют, иначе вас просто не будет в индексе, и никто вас не найдет в интернете
>После того, как гугл победил, он может творить любую дичь, у него нет конкурентов.
>И какая разница, какой я процент назову? Важно то, что сайты без гугл-рекламы индексируются, это факт, и это опровергает ваше заявление выше, что

разница есть, это могло бы показать насколько вы знаете ситуацию, про бизнес модель google — они имеют право делать все, что не нарушает закон, насколько мне известно с самого начала имели те же цели, что и сейчас, т.е. индексируют тех, кто им приносит выгоду, можно добавить дипломатично «в первую очередь», но это не материально
А можете раскрыть мысль? Привести примеры значимых сайтов, которые google не индексирует, потому что это «не приносит им выгоду»? Разумеется, кроме тех сайтов (типа facebook), которые явно запретили гуглу себя индексировать через robots.txt
мысль уже раскрыта, если вам не понятно, сожалею, остается только добавить declaimer, к вашему мнению отношусь с уважением, как и пюбому другому

Допустим, Гуглу очень помогла покупка doubleclick на сомнительных условиях

В общем, да — для Google основной продукт это не сам Андроид, а их мобильные сервисы: Поиск, Карты, YouTube, и.т.д. ИМенно через них они продают рекламу. Но и не стоит недооценивать их привязанность к данным пользователей. На этом они тоже зарабатывать умеют :)
imho, данные пользователей это пока скромные деньги, типа на будущее, тоже для добрых дел
да, в хозяйстве все пригодится…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий