Компания Google опубликовала предварительный выпуск следующей версии открытой мобильной платформы Android - Android P Developer Preview. Релиз Android P, который будет поставляться под номером Android 9, ожидается в третьем квартале 2018 года. До этого времени периодически будут выпускаться предварительные выпуски Developer Preview, предоставляющие средства для разработки приложений с учётом новых возможностей платформы.
Для оценки новых возможностей платформы предложена программа бета-тестирования, в рамках которой экспериментальную ветку можно установить и поддерживать в актуальном виде через штатный интерфейс установки обновлений (OTA, over-the-air), без необходимости ручной замены прошивки. Обновления доступны для пользователей устройств Pixel, Pixel XL Pixel 2 и Pixel 2 XL.
Ключевые особенности Android P Developer Preview:
● Поддержка протокола Wi-Fi RTT (WiFi Round-Trip-Time, IEEE 802.11mc) для получения информации о расстоянии до точек доступа, что можно использовать в приложениях для определения местоположения и навигации внутри зданий. Функциональность доступна через новый RTT API и требует наличия в устройстве поддержки IEEE 802.11mc. Зная расстояние до 3 и более точек доступа можно рассчитать позицию смартфона в пространстве с точностью в 1-2 метра, чего достаточно для организации навигации в помещениях и для активации привязанных к местоположению сервисов. Расстояние определяется без соединения с точкой доступа, что позволяет сохранить приватность;
● Приложениям предоставлены средства для полноэкранного вывода на устройствах с безрамочными экранами. Для управления отображением контента на таких экранах добавлен API DisplayCutout, при помощи которого приложение может проверить наличие на экране неотображаемых областей (например, закругление экрана и островок для фронтальной камеры, громкоговорителя и сенсоров), определить какие части изображения попадут в неотображаемые области и выбрать режим размещения контента относительно этих областей. В средства для разработчиков добавлена возможность симуляции подобных экранов на любых устройствах, что позволяет протестировать корректность отображения контента приложений;
● Улучшен вывод уведомлений о поступлении новых сообщений. Подобные уведомления теперь могут выводиться в стиле мессенджера с показом нити разговора, привязкой к отправителям, подсказками для быстрого ответа и поддержкой вставки изображений;
● Добавлен Multi-camera API, позволяющий организовать одновременный доступ сразу к нескольким камерам. Например, на устройствах с двумя раздельными фронтальными или задними камерами можно реализовать такие функции как бесшовное масштабирование, размытие фона (боке) и стереовидение. Для камеры также добавлен параметр Session, позволяющий сократить задержку перед началом записи, и параметр Surface для организации доступа приложений к непрерывному потоку данных с камеры. Добавлены API для использования подсветки ярким экраном в качестве фотовспышки и для доступа к данным оптического стабилизатора изображения для создания спецэффектов и программной стабилизации;
● Добавлен класс ImageDecoder, позволяющий декодировать изображение из буфера, файла или URL в виде битмапа для последующего использования с классами Bitmaps и Drawable. По сравнению с классом BitmapFactory, который теперь объявлен устаревшим, в ImageDecoder поддерживается масштабирование, пошаговое декодирование, постобработка (например, можно применить различные эффекты, такие как закругление углов) и декодирование анимированных изображений;
● Добавлена встроенная поддержка воспроизведения HDR-видео (профиль HDR VP9 Profile 2), в том числе на устройствах поддержкой HDR можно просматривать HDR-фильмы, доступные на YouTube и Play Movies;
● Добавлена поддержка кодирования изображений в формате HEIF (HEIC у Apple), использующего эффективные методы сжатия HEVC (H.265), позволяющего хранить в одном файле несколько снимков или видео и поддерживающего операции кадрирования без перекодирования;
● JobScheduler, управляющий запуском плановых заданий и применяющий ограничения при работе приложений в фоновом или спящем режиме, теперь может учитывать состояние сетевой подсистемы при выполнении работ, связанных с сетевым взаимодействием. В том числе JobScheduler может учитывать предоставляемые операторами сингналы о состоянии сети, оценивать перегруженность или наличие безлимитного доступа. С другой стороны, заявленные для выполнения задачи могут объявлять приблизительный размер данных, который потребуется передать/отправить, характер трафика (например, упреждающая загрузка) и режим работы сети (безлимитный или ограниченный). Сопоставляя информацию о состоянии сети и параметры сетевых задач JobScheduler может принимать решения по запуску или приостановке определённых задач, например, при нахождении в сети с ограниченным трафиком может отложить большие сетевые запросы, а для безлимитного соединения разрешить упреждающую загрузку;
● До версии 1.1 обновлён API Neural Networks, предоставляющий приложениям возможности по задействованию средств аппаратного ускорения для систем машинного обучения. API позиционируется как базовая прослойка для функционирования в Android фреймворков машинного обучения, таких как TensorFlow Lite и Caffe2. Для использования на мобильных устройствах предложен ряд готовых моделей нейронных сетей, в том числе MobileNets (распознавание объектов на фотографиях), Inception v3 (компьютерное зрение) и Smart Reply (подбор вариантов ответа на сообщения). В новом выпуске добавлен набор новых операторов Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub и Squeeze. Для устройств Pixel 2 включён драйвер Qualcomm Hexagon HVX для ускорения квантованных моделей;
● Улучшены средства автозаполнения полей, предоставляемые фреймворком Autofill. API расширен возможностями, позволяющими менеджерам паролей расширять функциональность Autofill, например, производить фильтрацию данных, проверку ввода и применять режим совместимости для приложений без прямой поддержки Autofill;
● Добавлена реализация GlobalPlatform Open Mobile API (OMAPI API) для доступа к защищённым элементам (Secure Elements, SE) при проведении платежей по смарткартам и реализации различных защищённых сервисов. Для абстрагирования доступа к аппаратным защищённым элементам (eSE, UICC и т.п.) предусмотрена специальная HAL-прослойка;
● В рамках инициативы по уходу от использования нешифрованного HTTP в пользу TLS/HTTPS, настройки по умолчанию в NSC (Network Security Configuration) изменены для блокировки всего незашифрованного трафика. При использовании Network Security Configuration все соединения теперь должны создаваться поверх TLS;
● Добавлены новые правила SELinux, блокирующие доступ приложений к камере, микрофону и всем сенсорам, в случае работы процессов в фоновом режиме (нахождение в состоянии idle). Изменение поможет бороться с вредоносным и шпионским ПО, осуществляющим скрытую запись случайных разговоров или создание снимков окружающего пространства;
● В дальнейших тестовых выпусках планируется включить шифрование резервных копий с использованием секретной фразы, хранимой на стороне клиента, а также добавить возможность генерации случайных MAC-адресов для борьбы с отслеживанием беспроводными точками доступа;
● Реализован более целостный пользовательский интерфейс для использования в приложениях аутентификации по отпечаткам пальцев. Android теперь предоставляет унифицированный диалог, предлагающий коснуться пальцем к сенсору, выбирая текст и размещение в зависимости от устройства. Новый диалог можно вызвать из приложений при помощи API FingerprintDialog;
● Продолжена оптимизация производительности и эффективности работы ART runtime. Профили выполнения изменены для задействования дополнительных оптимизаций и сокращения потребления памяти в скомпилированном коде приложений. Для популярных приложений размер DEX-файлов сокращен в среднем на 11%, что привело к снижению потребления системной памяти и ускорению запуска приложений;
● Проведены оптимизации для увеличения производительности кода на языке Kotlin. В компилятор добавлены изменения, оптимизирующие обработку циклов;
● Продолжена работа по снижению энерогопотребления в режимах Doze и App Standby, а также ограничению фоновой активности приложений для продления автономной работы устройств;
● В рамках подготовки к обязательной поддержке 64-разрядной архитектуры, в Google Play начиная с ноября 2018 года станут приниматься только новые приложения и обновления к существующим приложениям, поддерживающие как минимум APIv26 (SDK от Android 8), т.е. включающие 64-разрядные варианты библиотек, помимо 32-разрядных.
Кроме того, можно отметить выход мартовского набора исправлений проблем с безопасностью для Android, в котором устранено 37 уязвимостей, из которых 11 присвоен критический уровень опасности, а 26 высокий уровень опасности. Четыре критические уязвимости найдены в медиафреймворке и позволяют организовать выполнение кода с правами процесса mediaserver при обработке специально оформленного контента. Ещё четыре критические уязвимости найдены в системных компонентах и позволяют выполнить код в контексте привилегированного процесса. Три удалённо эксплуатируемые критические уязвимости найдены в беспроводном драйвере Qualcomm и закрытых прошивках к чипам Qualcomm.