Вчера на специальной конференции, проведённой главой мобильного направления Google Сундаром Пичаи, был анонсирован компактный планшет нового поколения - Nexus 7 под управлением Android 4.3 Jelly Bean. В этой статье речь пойдёт не о планшете, а о системе, её новшествах для разработчиков приложений, а также о реакции сообщества создателей альтернативных реализаций Android.
Увеличить рисунок
Одной из основных проблем, преследующей Android со времён его появления, является рывковая отрисовка интерфейса при выполнении операций, что отрицательно сказывается на впечатлении от системы. Вся ветка Jelly Bean с момента своего появления летом прошлого года акцентирована на исправление данного недостатка: внедрение тройной буферизации, уменьшение задержек для вертикальной синхронизации и обработки тактильного ввода оказались недостаточным решение. Компания Google переписала рендерер, отвечающий за отрисовку 2D-графики интерфейса, оптимизировав поток команд рендеринга в более эффективный для GPU формат путём перестроения и слияния операций отрисовки. Для многоядерных процессоров рендерер оптимизирован под многопоточное выполнение, поэтому система сможет интеллектуально понять, на каком ядре выполнять операции отрисовки. Дополнительным эффектом оптимизации стало повышение качества отображения шрифтов и спецэффектов, но при этом затраты ресурсов на эти задачи были снижены. Улучшение функций распределения оконного буфера позволит приложениям начинать процесс отрисовки интерфейса значительно раньше, что, опять же, повысит и быстроту, и плавность. Google заявила, что многие инструменты, использованные для переписывания рендерера, включены в SDK, поэтому разработчики смогут использовать эти улучшения и для своих приложений.
Дабы не уходить далеко от графики, то сразу отмечу, что Android 4.3 стала первой мобильной ОС, в которой реализованы спецификации нового стандарта для встраиваемой графики, принятого в августе прошлого года: Khronos OpenGL ES 3.0. Конечно, для работы с ним аппаратное обеспечение должно иметь аппаратную поддержку на уровне GPU, но Google реализовала необходимые биндинги (связи) между ядром, NDK и виртуальной машиной Dalvik. В новом стандарте чётко установлены спецификации форматов графических буферов, внедрена поддержка унифицированных объектов буфера. Кроме того, в стандарте утверждены спецификации GLSL ES 3.0, высокоуровневого языка программирования шейдеров, который позволит создавать более сложные шейдеры, а также упрощает портирование кода между “взрослым” OpenGL и “маленьким” OpenGL ES. Ещё одним важным шагом новой версии спецификации стала стандартизация единого формата сжатия текстур - ETC2. Дело в том, что большинство современных мобильных GPU поддерживают разные форматы сжатия, такие как: PVRTC (PowerVR SGX), ATITC (Adreno), DXT (GeForce ULP). Этот зоопарк усложнял жизнь разработчикам, особенно под Android и Blackberry 10, которым приходилось создавать несколько наборов текстур, которые предназначались для разных устройств. Благодаря компании Ericsson, которая решила отдать в свободный доступ спецификации своего формата ETC2 и дать публичное обещание защиты от преследования по своим патентам на этот формат (которые ныне лицензируются либо по FRAND (минимальные отчисления), либо FRAND-zero (бесплатно)), этот формат официально стандартизован.
Если говорить простым языком, то новый стандарт позволит разработчикам создавать игры с более насыщенной графикой - качественные текстуры, реалистичное освещение и многие другие улучшения. Так как большинство геймеров больше знакомы с технологией DirectX от Microsoft, то набор API OpenGL ES 3.0 находится где-то между DirectX 9.3 и DirectX 10. До функциональности последнего стандарту не хватает геометрических шейдеров. Так или иначе, для смартфонов и планшетов это хороший задел для создания хорошей графики. Если говорить о доступности, то здесь есть сложности - среди поддерживаемых GPU можно отметить видеоускрители от Adreno 305 и старше, а также от Mali T-604 и старше. Если говорить о SoC, то это Snapdragon S4 Pro или новее (Google Nexus 4, HTC One, Sony Xperia Z и многие другие), или Samsung Exynos 5250 или новее (Samsung Nexus 10). Видеоускорители PowerVR 5XT (Galaxy Nexus, Galaxy S4 на Exynos 5 Octa) или все Tegra (Nexus 7 первого поколения, NVIDIA Shield) данный стандарт не поддерживают, либо, как в случае с Tegra 4, поддерживают только на 90-95% (нет поддержки ETC2). Таким образом, даже если ваш смартфон или планшет обновится до Android 4.3, то нет гарантий, что он будет поддерживать полностью OpenGL ES 3.0.
Административное управление профилями
Третьим важным обновлением стало внедрение административного управления профилями пользователей на планшетах (функция недоступна на смартфонах). Разделение профилей было анонсировано зимой прошлого года, но каждый профиль обладал по сути административными полномочиями, а это влияло на безопасность. Теперь в настройках администратор может ограничить доступ к определённым функциям, выставить возрастные ограничения для приложений из Google Play, заблокировать покупки внутри приложений и многие другие вещи. Кроме того, Google предоставила сторонним разработчикам целый набор API, чтобы те смогли внести в свои приложения гибкие настройки, дабы администратор устройства смог блокировать не всё приложение целиком, а только “опасные” функции. Сами профили пользователей изолированы друг от друга, пользовательские хранилища зашифрованы ключом от аккаунта Google, поэтому профили становятся вполне значимым инструментом. Вчера на презентации Хьюго Барра, один из руководителей проекта Android, заявил, что данная функция заложена не только для пользовательских нужд, но и для корпоративных, поэтому это профильное разделение позволяет как использовать устройство по схеме BYOD, так и для режима киоска. Другой представитель компании заявил, что привязка к аккаунту Google опциональна, тогда как в исходных кодах системы заложены инструменты по другим методам разделения и шифрования. Таким образом, можно сделать вывод, что интернет-корпорация намеревается навязывать конкуренцию не только на рынке смартфонов и планшетов, но и на рынке встраиваемых систем.
Если говорить о безопасности, то здесь сделаны несколько важных нововведений. Модуль SELinux, который был внедрён, но выключен, в Android 4.2, теперь включен в Android 4.3 в разрешительном режиме. Это значит, что все нарушения политик безопасности, установленных Google, будут игнорироваться, но заноситься в журнал. Видимо, Google пока хочет удостовериться, насколько SELinux может повлиять на совместимость с обычными пользовательскими приложениями, прежде, чем включать управление доступом в рабочий режим. Для корпоративных пользователей важным нововведением является дискретное управление данными аутентификации по стандарту WPA2-Enterprise. Таким образом, разработчики могут через специальные API задавать параметры для конфигурации Extensible Authentication Protocol (EAP) и Encapsulated EAP (Phase 2) для конкретных приложений. Кроме того, внесены изменения в структуру Setuid, что осложняет получение прав суперпользователя через использование эксплойтов от уязвимостей системы.
Дополнительные возможности для локализации
Среди других нововведений стоит отметить унифицированную поддержку на уровне системы для Bluetooth 4.0 LE, что пойдёт на пользу индустрии аксессуаров для активного отдыха (шагометры и прочее). Кроме того, появилась поддержка профиля AVRCP 1.3 для трансляции дополнительного медиа-контента на Bluetooth-периферию. Для поставщиков видео и аудио добавлены многочисленные API для DRM-фреймворка. Разработчики приложений для захвата видео теперь могут программного кодировать видео по кодеку VP8 или аппаратно, если SoC это поддерживает. Для этого в OpenMAX были добавлены специальные заголовки и расширения, которые в целом увеличили функциональность данных компонентов. В состав системы включены новые инструменты для локализации, как для пользователей, так и для разработчиков. Разработчикам предлагаются также новые утилиты для оценки производительности, профилировки и дебаггинга прямо на устройстве с выводом дампа данных на экран.
В первый раз за время существования ветки Android 4.* исходные коды системы стали доступны в день анонса - об этом заявил глава Android Open Source Project (AOSP), сотрудник Google, Жан-Батист Керу. Представители крупнейших альтернативных прошивок уже заявили о том, что приступили к изучению различий между 4.2 и 4.3, а также готовятся начать слияние исходных кодов. Об этом заявил глава CyanogenMod, Стив Кондик, а также представители ParanoidAndroid. Пока конкретных сроков выпуска альтернативных реализаций названо не было, но скорее всего ночные сборки для поддерживаемых устройств будут выпущены в течение нескольких недель до конца лета. Компания Sony, названная сообществом сторонних разработчиков наиболее дружелюбной к идеологии свободного ПО, уже выпустила несколько видео, демонстрирующих работу Android 4.3 на своих устройствах. Видео выше показывает работу AOSP на Sony Xperia Tablet Z.