Представлен проект Mainline, позволяющий обновлять отдельные системные компоненты без обновления платформы целиком. Подобные обновления загружаются через Google Play отдельно от OTA-обновлений прошивки от производителя. Предполагается, что прямая доставка обновлений не привязанных к оборудованию компонентов платформы позволит существенно сократить время получения обновлений, увеличить оперативность исправления уязвимостей и снизить зависимость от производителей устройств в поддержании безопасности платформы. Модули с обновлениями изначально будут поставляться с открытым кодом, будут сразу доступны в репозиториях AOSP (Android Open Source Project) и смогут включать улучшения и исправления, подготовленные сторонними участниками.
Среди компонентов, которые будут обновляться раздельно: мультимедийные кодеки, мультимедийный фреймворк, DNS-резолвер, Conscrypt Java Security Provider, Documents UI, Permission Controller, ExtServices, данные часовых поясов, ANGLE (прослойка для трансляции вызовов OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan), Module Metadata, сетевые компоненты, Captive Portal Login и настройки сетевого доступа. Обновления системных компонентов поставляются в новом формате пакетов APEX, который отличается от APK возможностью применения на раннем этапе загрузки системы. На случае возможных сбоев предусмотрен режим отката изменений;
На уровне системы реализована тёмная тема оформления которая может применяться для снижения утомления глаз при недостаточном освещении. Тёмная тема включается в настройках Settings > Display, через выпадающий блок быстрых настроек или при включении режима экономии энергии. Тёмная тема применяется как для системы, так и для приложений, в том числе предлагая режим автоматического преобразования в тёмные тона существующих тем;
Система автоматических быстрых ответов, ранее доступная для уведомлений, теперь может применяться для формирования рекомендаций наиболее вероятных действий в любых приложениях. Например, при показе сообщения с приглашением на встречу система предложит быстрые ответы с согласием или отклонением приглашения, а также покажет кнопку для просмотра намеченного места встречи на карте. Варианты выбираются с использованием системы машинного обучения на основании изучения особенностей работы пользователя;
Предоставлено больше инструментов для контроля за доступом приложений к информации о местоположении пользователя. Если раньше, в случае предоставления соответствующих полномочий, приложение могло получить доступ к местоположению в любое время, даже когда оно неактивно (работает в фоне), то в новом выпуске пользователь может разрешить получение информации о его местоположении только в случае активности сеанса с приложением;
Добавлен режим родительского контроля "Family Link", позволяющий ограничить время работы детей с устройством, предоставлять бонусные минуты за успехи и достижения, просматривать списки запускаемых приложений и оценивать сколько времени в них проводит ребёнок, рецензировать устанавливаемые приложения и назначать ночное время для блокирования доступа по ночам;
Добавлен "фокусный режим" (Focus Mode), позволяющий на время, когда нужно сосредоточится на решении какой-то задачи, выборочно приглушить отвлекающие приложения, например, приостановить получение почты и новостей, но оставить карты и мессенджер;
Добавлен режим навигации жестами, позволяющий использовать для управления только экранные жесты без отображения навигационной панели и выделяя всё экранное пространство под контент. Например, кнопки типа Back и Home заменяются на сдвиг от края и скользящее касание снизу-вверх, для вызова списка запущенных приложений применяется длительное касание к экрану. Режим включается в настройках "Settings > System > Gestures";
Добавлена функция "Live Caption", позволяющая автоматически на лету создавать субтитры при просмотре любого видео или прослушивания звуковых записей, независимо от используемого приложения. Распознавание речи производится локально без обращения к внешним сервисам;
Добавлена концепция "пузырей" для организации одновременной работы с несколькими приложениями. Пузыри позволяют выполнять действия в других приложениях не покидая текущей программы. Кроме того, пузыри дают возможность закрепления доступа к функциональности определённого приложения в процессе выполнения различных действий на устройстве. Например, при помощи пузырей можно в форме отображаемых поверх контента кнопок продолжать беседу в мессенджере, быстро отправлять сообщения, держать на виду список задач, вести заметки, обращаться к сервисам перевода и получать наглядные напоминания, параллельно c работой в других приложениях. Пузыри реализованы поверх системы уведомлений и позволяют использовать аналогичный API.
Добавлена поддержка устройств со сгибающимися складными экранами, таких как Huawei Mate X. На каждой половинке складного экрана теперь может размещаться отдельное приложение. Для поддержки новых типов экранов добавлена поддержка раздельной обработки множественных событий пробуждения и смены фокуса (когда одна половина экрана активна, а другая остаётся закрытой или когда обе половинки активны), а также расширен API для обработки изменения размера экрана (для того чтобы приложение корректно воспринимало увеличение размера экрана при раскрытии второй половины). В эмулятор Android добавлена симуляция устройств со сгибающимися экранами;
Добавлена поддержка ярлыков для отправки данных и сообщений (Sharing Shortcuts), позволяющих быстро перейти в приложение, осуществляющее отправку;
Добавлена поддержка всплывающих панелей с настройками, которые позволяют обратиться к ключевым системным настройкам в контексте пользовательского приложения. Для отображения панелей настройки из приложения предоставляется API Settings Panel. Например, мультимедийный проигрыватель может показать панель с системными настройками звука, а браузер настройки сетевого подключения и перехода в режим полёта;
Безопасность:
Добавлены дополнительные ограничения доступа приложений к совместно используемым файлам, таким как коллекции фотографий, видео и музыка;
Для доступа к загруженным файлам, размещённым в каталоге Downloads, приложение теперь обязательно должно использовать системный диалог выбора файла, который предоставляет пользователю полный контроль над тем, к каким конкретно файлам может обратиться приложение;
Блокирована возможность перехода приложений из фонового выполнения в активное состояние с выходом на передний план и получением фокуса ввода, прерывая таким образом работу пользователя с другим приложением. При необходимости привлечения внимания пользователя фоновым приложением, например, при входящем звонке, теперь следует использовать высокоприоритетные уведомление с получением полномочий на полноэкранный вывод;
Ограничен доступ к неизменяемым идентификаторам устройства, таким как IMEI и серийный номер. Для получения подобных идентификаторов приложение должно иметь привилегии READ_PRIVILEGED_PHONE_STATE. Приложениям также ограничен доступ к псевдо-ФС "/proc/net" со статистикой сетевой активности, а доступ к данным в буфере обмена отныне предоставляется только когда приложение активно (получило фокус ввода);
При отдаче списка контактов приложению прекращено ранжирование вывода по частоте обращения к контактам для сокрытия от приложений информации о предпочтениях пользователя;
По умолчанию включена рандомизация MAC-адресов: при подключении к разным беспроводным сетям теперь генерируются разные MAC-адреса, что не позволяет отслеживать перемещение пользователя между WiFi-сетями;
Для доступа к API сканирования сетей Bluetooth, сотовых сетей и Wi-Fi теперь требуется получение полномочий на получение точных сведений о местоположении (ранее требовались полномочия на получение приблизительных сведений о местоположении). При этом, если соединение устанавливается в режиме P2P или сеть для подключения определяется системой, то отдельные полномочия на доступ к информации о местоположении не требуются;
Реализована поддержка технологии защиты беспроводных сетей WPA3, в которой предоставляется защита от атак по подбору пароля (не позволит подбирать пароль в offline-режиме) и задействован протокол аутентификации SAE. Для генерации ключей шифрования в открытых сетях добавлена поддержка процесса согласования соединения, реализуемого расширением OWE (Opportunistic Wireless Encryption);
Добавлена и включена по умолчанию для всех соединений поддержка TLS 1.3. В тестах Google применение TLS 1.3 позволяет до 40% ускорить установку защищённых соединений, по сравнению с TLS 1.2.
Представлено новое хранилище Scoped Storage, предоставляющее уровень изоляции для файлов приложений. При помощи данного API приложение может создать на внешних накопителях (например, на sd-карте) отдельный изолированный каталог для своих файлов, к которому не смогут получить доступ другие приложения. Текущее приложение будет ограничено этим каталогом для хранения фотографий, видео и музыки, и не будет пересекаться с общими коллекциями мультимедийных файлов. Для получения совместного доступа к общим коллекциям файлов потребуется получение отдельных полномочий;
В API BiometricPrompt, унифицирующем вывод диалога биометрической аутентификации, добавлена поддержка пассивных методов аутентификации, таких как аутентификация по лицу. Предложены раздельные методы обработки явной и не явной аутентификации. При явной аутентификации пользователь должен подтвердить операцию, а при неявной - аутентификация может производится незаметно в пассивном режиме;
Беспроводной стек.
Добавлена поддержка стандарта мобильной связи 5G, для которого адаптированы имеющиеся API управления соединениями. В том числе через API приложения могут определять наличие высокоскоростного соединения и активности тарификации по трафику;
Добавлены два режима работы Wi-Fi - режим достижения максимальной пропускной способности и режим минимальных задержек (например, полезен для игр и голосовых коммуникаций);
Проведён рефакторинг беспроводного стека для усиления приватности и увеличения производительности, а также для улучшения управления устройствами интернета вещей через локальный Wi-Fi (например, для вывода на печать через Wi-Fi) и выбора точек подключения. Функции сканирования доступных точек доступа теперь предоставлюется платформой с выводом найденных сетей в интерфейсе Wi-Fi Picker и автоматической настройкой соединения в случае его выбора пользователем. Приложениям через API WifiNetworkSuggestions предоставлена возможность влиять на алгоритм выбора предпочитаемых беспроводных сетей путём передачи приложением ранжированного списка сетей и паролей для подключения к ним. Кроме того, при выборе сети, к которой осуществляется подключение, теперь учитываются метрики о пропускной способности при прошлом подключении (выбирается наиболее быстрая сеть);
Мультимедиа и графика
Добавлена поддержка графического API Vulkan 1.1. По сравнению с OpenGL ES использование Vulkan позволяет существенно снизить нагрузку на CPU (до 10 раз в тестах Google) и повысить производительность отрисовки. Конечной целью является повсеместная поддержка Vulkan на всех Android-устройствах, для чего Google работает с производителями оборудования в плане перевода Vulkan 1.1 в разряд обязательных требований для всех 64-разрядных устройств на базе Android 10;
Добавлена экспериментальная поддержка выполнения прослойки ANGLE (Almost Native Graphics Layer Engine) поверх графического API Vulkan. ANGLE позволяет выполнить отрисовку, абстрагируясь от специфичных для разных систем API, благодаря трансляции вызовов OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan). Для разработчиков игр и графических приложений ANGLE позволяет использовать обычный драйвер OpenGL ES на всех устройствах, использующих Vulkan;
Приложения для работы с камерой и изображениями теперь могут запросить у камеры передачу дополнительных XMP-метаданных в файле JPEG, включающих сведения, необходимые для обработки глубины на фотографиях (например, сохраняемая двойными камерами карта глубины). Указанные параметры можно применять для реализации различных режимов размытия фона и эффекта боке, а также для создания 3D-фотографий или в системах дополненной реальности;
Добавлена поддержка видеокодека AV1, который позиционируется как общедоступный и не требующий оплаты отчислений свободный формат кодирования видео, который заметно опережает H.264 и VP9 по уровню сжатия;
Добавлена поддержка свободного звукового кодека Opus, обеспечивающего высокое качество кодирования и минимальную задержку как при сжатии потокового звука с высоким битрейтом, так и при сжатии голоса в ограниченных по пропускной способности приложениях VoIP-телефонии;
Добавлена поддержка стандарта HDR10+, применяемого для кодирования видео с расширенным динамическим диапазоном;
В API MediaCodecInfo добавлен упрощённый метод для определения доступных на устройстве возможностей вывода видео (выводится список кодеков и поддерживаемых на устройстве разрешений и FPS);
Добавлен API Native MIDI, предоставляющий приложениям на C++ возможность напрямую взаимодействовать с MIDI-устройствами через NDK в неблокирующем режиме, позволяющем обрабатывать MIDI-сообщения с очень низкими задержками;
Добавлен API MicrophoneDirection для управления захватом звука с направленных микрофонов. При помощи данного API можно указать направление для ориентации микрофона при записи звука). Например, при создании селфи-видео можно указать setMicrophoneDirection( MIC_DIRECTION_FRONT) для записи с микрофона в лицевой части устройства. Через указанный API также можно управлять микрофонами с меняющейся областью охвата (zoomable), определяя размер области для записи.
Добавлен новый API для захвата звука, позволяющий одному приложению предоставить возможность обработки звукового потока другим приложением. Для предоставления доступа других приложений к звуковому выводу требуется предоставление специального разрешения;
Система и расширенные API.
Проведены значительные оптимизации производительности runtime ART, позволившие сократить потребление памяти и ускорить запуск приложений. В Google Play обеспечено распространение профилей PGO (Profile Guided Optimization), включающих сведения о наиболее часто выполняемых частях кода. Предкомпиляция подобных частей позволяет существенно сократить время запуска. В самом ART проведена оптимизация для более раннего запуска процесса приложения и перемещения его в изолированный контейнер. В образе памяти приложения обеспечено сохранение дополнительных данных, таких как классы. Реализован многопоточный режим загрузки образов памяти приложений. Повышена эффективность работы сборщика мусора, за счёт раздельной обработки недавно созданных объектов;
До версии 1.2 обновлён API Neural Networks, предоставляющий приложениям возможности по задействованию средств аппаратного ускорения для систем машинного обучения. API позиционируется как базовая прослойка для функционирования в Android фреймворков машинного обучения, таких как TensorFlow Lite и Caffe2. Для использования на мобильных устройствах предложен ряд готовых моделей нейронных сетей, в том числе MobileNets (распознавание объектов на фотографиях), Inception v3 (компьютерное зрение) и Smart Reply (подбор вариантов ответа на сообщения). В новом выпуске добавлено 60 новых операций, включая ARGMAX, ARGMIN и квантуемый LSTM, а также проведены значительные оптимизации производительности, что позволило использовать API для поддержки новых моделей машинного обучения, таких как определение объектов и сегментация изображений;
В SDK добавлен новый эмулятор устройств со сгибающимися складными экранами, который доступен в выпуске Android Studio 3.5 в форме дополнительного виртуального устройства, представленного в вариантах с экранами в 7.3 (4.6) и 8 (6.6) дюймов. В платформе для складных устройств расширены обработчики onResume и onPause, в которых добавлена поддержка раздельного отключения нескольких экранов, а также реализованы расширенные уведомления о попадании приложения в фокус;
Добавлен Thermal API, позволяющий приложениям контролировать показатели температуры CPU и GPU и самостоятельно принимать меры для снижения нагрузки (например, снижать FPS в играх и уменьшать разрешение транслируемого видео), не дожидаясь пока системе принудительно не начнёт урезать активность приложений.