21 мая 2017 г.

Представляем Treble: модульную основу для Android

    Статья является переводом вот этой запси в блоге для разработчиков под Android: https://android-developers.googleblog.com/2017/05/here-comes-treble-modular-base-for.html Как и всегда прежде, я рекомендую вам читать оригинал, если ваш уровень владения английским языком выше моего (наверняка это так).
    Сама запись важна хотя бы тем, что я пока не встречал упоминания об этом проекте нигде в Твиттере, Фейсбуке и Гугл Плюс. Единственный человек, который упоминал о нём — мой коллега, сидящий у меня за спиной. А между тем, это очень интересная фича. Впрочем, как и всегда, производители устройств её наверняка проигнорируют. Спойлер: Sony — молодцы.

    Мы, в Android team, считаем, что каждый сладкий (прим. перев.: буквально «сладкий», «десертный», если хотите; думаю, вы понимате, почему так) релиз — это причина сделать Android лучше для наших пользователей и партнёров по экосистеме. И каждый рах мы слышим от партнёров, создающих устройства, что обновление существующих устройств на новую версию Android чрезвычайно трудозатратно и дорого.
    При разработке Android O, мы очень тесно работали с изготовителями устройств и чипсетов, делали шаги к решению проблемы и теперь, с волнением, представляем вам Project Treble — самое большое низкоуровневое изменение в архитектуре Android на сегодня.


Жизнь релизов Android

     Первое, что нужно понять — это «жизнь релизов Android». Новые релизы Android проходят несколько этапов перед тем, как попасть в руки пользователей:
Рис. 1. Как очередной релиз доходит (чаще НЕ доходит) до пользователей
    Два пояснения по терминам в картинке. Board Support Package и SKU.
  1. Команда Android публикует для мира исходные коды последнего релиза
  2. Производители чипсетов вносят изменения, специфичные для своих железок
  3. Производители чипсетов передают уже модифицированный релиз производителям устройств. Производители устройств повторно вносят изменения, специфичные для конкретных аппаратов
  4. Производители устройств работают совместо с операторами связи — тестируют новый релиз для его сертификации
  5. Производители устройств и операторы связи делают релиз доступным для конечных пользователей
   С Project Treble мы внесли изменения в архитектуру Android для того, чтобы производителям было проще, быстрее и менее затратно обновлять устройства на новую версию Android. 

 

The Vendor Interface (интерфейс для производителя)

    Android был представлен в 2007 как бесплатная мобильная операционная система с открытым исходным кодом. Вначале мы решили, что Android будет мастшабироваться под самых разных производителей. Мы знали, что консистентность API была очень важна для разработчиков, потому мы создали программу совместимости для Developer API, описанную в Compatibility Definition Document (CDD) и связанный с ним Compatibility Test Suite (CTS), который сейчас содержит более миллиона тестов.
    В итоге сегодня разработчики приложений могут писать единое приложение, которое работает на более миллиарда устройствах, под разным железом от разных производителей.

    Project Treble нацелен на то, чтобы сделать для Android OS framework то, что CTS сделал для приложений. Суть идет состоит разделении vendor implementation (т.е. того, что делает производитель для себя самого, «реализации производителя») — специфичного для устройства низкоуровнего ПО, написанного по большей части производителями чипсетов — от Android OS Framework.

    Это достигается новым vendor interface («интерфейсом производителя») между Android OS framework и реализации производителя. Для обеспечения прямой совместимости (прим. перев.: почему-то редко встречающееся определение. Означает, что, к примеру, старое ПО должно работать на новой ОС) с реализацией производителя новый интерфейс производителя проверяется Vendor Test Suite (VTS), подобно тому, как делается в CTS. 

 

Польза Project Treble

    Сегодня, без официального интерфейса прозводителя, для перехода на новую версию Android нужно обновить кучу кода в самом Android:
     Со стабильным интерфейсом производителя, предоставляющий доступ к аппаратно-специфичным частям Android, производители устройств могут выбрать доставку нового релиза Android к клиенту просто обновлением Android OS framework без необходимости дополнительной работы с производителями чипсетов:
      Project Treble будет представлен на всех новых устройствах, работающих под Android O и выше. Фактически архитектура Project Treble уже работает на смартфонах Pixel под Developer Preview версией Android O.
    Дополнительно к архитектурным изменениям, мы работаем совместно с нашими чипсетовыми и девайсовыми партнерами над тем, чтобы взять их изменения в коде, такие как фичи для поддержки операторских сетей в разных странах, и затянуть их в кодовую базу Android Open Source Project (AOSP). К примеру Sony и Qualcomm принесли массу фич и сотни багфиксов в Android O, так что теперь им больше не нужно раз за разом повторять одну и ту же работу с одними и теми же патчами для каждого релиза Android.

    Позже мы планируем опубликовать полный текст документации по Project Treble на source.android.com после запуска Android O этим летом.