Компания Google представила бета-версию открытой мобильной платформы Android Q. Релиз Android Q, который скорее всего будет поставляться под номером Android 10, ожидается в третьем квартале 2019 года. Для оценки новых возможностей платформы предложена программа бета-тестирования, в рамках которой экспериментальную ветку можно установить и поддерживать в актуальном виде через штатный интерфейс установки обновлений (OTA, over-the-air), без необходимости ручной замены прошивки. Обновления доступны для устройств Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3 и Pixel 3 XL.
Ключевые новшества Android Q:
- Добавлены дополнительные ограничения доступа приложений к совместно используемым файлам, таким как коллекции фотографий, видео и музыка;
- Для доступа к загруженным файлам, размещённым в каталоге Downloads, приложение теперь обязательно должно использовать системный диалог выбора файла, который предоставляет пользователю полный контроль над тем, к каким конкретно файлам может обратиться приложение;
- Блокирована возможность перехода приложений из фонового выполнения в активное состояние с выходом на передний план и получением фокуса ввода, прерывая таким образом работу пользователя с другим приложением. При необходимости привлечения внимания пользователя фоновым приложением, например, при входящем звонке, теперь следует использовать высокоприоритетные уведомление с получением полномочий на полноэкранный вывод;
- Ограничен доступ к неизменяемым идентификаторам устройства, таким как IMEI и серийный номер. Для получения подобных идентификаторов приложение должно иметь привилегии READ_PRIVILEGED_PHONE_STATE. Приложениям также ограничен доступ к псевдо-ФС "/proc/net" со статистикой сетевой активности, а доступ к данным в буфере обмена отныне предоставляется только когда приложение активно (получило фокус ввода);
- При отдаче списка контактов приложению прекращено ранжирование вывода по частоте обращения к контактам для сокрытия от приложений информации о предпочтениях пользователя;
- По умолчанию включена рандомизация MAC-адресов: при подключении к разным беспроводным сетям теперь генерируются разные MAC-адреса, что не позволяет отслеживать перемещение пользователя между WiFi-сетями;
- Для доступа к API сканирования сетей Bluetooth, сотовых сетей и Wi-Fi теперь требуется получение полномочий на получение точных сведений о местоположении (ранее требовались полномочия на получение приблизительных сведений о местоположении). При этом, если соединение устанавливается в режиме P2P или сеть для подключения определяется системой, то отдельные полномочия на доступ к информации о местоположении не требуются;
- Реализована поддержка технологии защиты беспроводных сетей WPA3, в которой предоставляется защита от атак по подбору пароля (не позволит подбирать пароль в offline-режиме) и задействован протокол аутентификации SAE. Для генерации ключей шифрования в открытых сетях добавлена поддержка процесса согласования соединения, реализуемого расширением OWE (Opportunistic Wireless Encryption);
- Проведён рефакторинг беспроводного стека для усиления приватности и увеличения производительности, а также для улучшения управления устройствами интернета вещей через локальный Wi-Fi (например, для вывода на печать через Wi-Fi) и выбора точек подключения. Функции сканирования доступных точек доступа теперь предоставлюется платформой с выводом найденных сетей в интерфейсе Wi-Fi Picker и автоматической настройкой соединения в случае его выбора пользователем. Приложениям через API WifiNetworkSuggestions предоставлена возможность влиять на алгоритм выбора предпочитаемых беспроводных сетей путём передачи приложением ранжированного списка сетей и паролей для подключения к ним. Кроме того, при выборе сети, к которой осуществляется подключение, теперь учитываются метрики о пропускной способности при прошлом подключении (выбирается наиболее быстрая сеть);
- Добавлены два режима работы Wi-Fi - режим достижения максимальной пропускной способности и режим минимальных задержек (например, полезен для игр и голосовых коммуникаций);
- Приложения для работы с камерой и изображениями теперь могут запросить у камеры передачу дополнительных XMP-метаданных в файле JPEG, включающих сведения, необходимые для обработки глубины на фотографиях (например, сохраняемая двойными камерами карта глубины). Указанные параметры можно применять для реализации различных режимов размытия фона и эффекта боке, а также для создания 3D-фотографий или в системах дополненной реальности;
- Добавлена поддержка видеокодека AV1, который позиционируется как общедоступный и не требующий оплаты отчислений свободный формат кодирования видео, который заметно опережает H.264 и VP9 по уровню сжатия;
- Добавлена поддержка свободного звукового кодека Opus, обеспечивающего высокое качество кодирования и минимальную задержку как при сжатии потокового звука с высоким битрейтом, так и при сжатии голоса в ограниченных по пропускной способности приложениях VoIP-телефонии;
- Добавлена поддержка стандарта HDR10+, применяемого для кодирования видео с расширенным динамическим диапазоном;
- В API MediaCodecInfo добавлен упрощённый метод для определения доступных на устройстве возможностей вывода видео (выводится список кодеков и поддерживаемых на устройстве разрешений и FPS);
- Добавлен API Native MIDI, предоставляющий приложениям на C++ возможность напрямую взаимодействовать с MIDI-устройствами через NDK в неблокирующем режиме, позволяющем обрабатывать MIDI-сообщения с очень низкими задержками;
- Добавлена поддержка графического API Vulkan 1.1. По сравнению с OpenGL ES использование Vulkan позволяет существенно снизить нагрузку на CPU (до 10 раз в тестах Google) и повысить производительность отрисовки. Конечной целью является повсеместная поддержка Vulkan на всех Android-устройствах, для чего Google работает с производителями оборудования в плане перевода Vulkan 1.1 в разряд обязательных требований для всех 64-разрядных устройств на базе Android Q;
- Добавлена экспериментальная поддержка выполнения прослойки ANGLE (Almost Native Graphics Layer Engine) поверх графического API Vulkan. ANGLE позволяет выполнить отрисовку, абстрагируясь от специфичных для разных систем API, благодаря трансляции вызовов OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan). Для разработчиков игр и графических приложений ANGLE позволяет использовать обычный драйвер OpenGL ES на всех устройствах, использующих Vulkan;
- До версии 1.2 обновлён API Neural Networks, предоставляющий приложениям возможности по задействованию средств аппаратного ускорения для систем машинного обучения. API позиционируется как базовая прослойка для функционирования в Android фреймворков машинного обучения, таких как TensorFlow Lite и Caffe2. Для использования на мобильных устройствах предложен ряд готовых моделей нейронных сетей, в том числе MobileNets (распознавание объектов на фотографиях), Inception v3 (компьютерное зрение) и Smart Reply (подбор вариантов ответа на сообщения). В новом выпуске добавлено 60 новых операций, включая ARGMAX, ARGMIN и квантуемый LSTM, а также проведены значительные оптимизации производительности, что позволило использовать API для поддержки новых моделей машинного обучения, таких как определение объектов и сегментация изображений;
- В API BiometricPrompt, унифицирующем вывод диалога биометрической аутентификации, добавлена поддержка пассивных методов аутентификации, таких как аутентификация по лицу. Предложены раздельные методы обработки явной и не явной аутентификации. При явной аутентификации пользователь должен подтвердить операцию, а при неявной - аутентификация может производится незаметно в пассивном режиме;