Компания Google опубликовала релиз открытой мобильной платформы Android 15. Связанные с новым выпуском исходные тексты размещены в Git-репозитории проекта (ветка android-15.0.0_r1). В ближайшие недели обновление прошивки будет подготовлено для устройств серии Pixel, а в ближайшие месяцы для смартфонов производства Samsung, Honor, iQOO, Lenovo, Motorola, Nothing, OnePlus, Oppo, realme, Sharp, Sony, Tecno, vivo и Xiaomi. Дополнительно будут сформированы универсальные сборки GSI (Generic System Images), подходящие для разных устройств на базе архитектур ARM64 и x86_64.
Основные новшества:
- Расширены возможности для одновременной работы с несколькими приложениями на устройствах с большими экранами. Реализована поддержка добавления на экран панели задач для быстрого переключения между приложениями и закрепления ярлыков наиболее часто используемых программ.
- Добавлена возможность определения отдельной приватной секции с приложениями, появляющейся только после дополнительной аутентификации пользователя. Фактически приложения в данной секции хранятся в отдельном профиле, приостанавливаемом, когда доступ к приложениям не разблокирован (т.е. приложения из данного профиля активны только при разблокировке профиля). При просмотре списка приложений, содержимое приватной секции показывается в отдельном блоке. Связанные с приватными приложениями уведомления и настройки при блокировке скрываются, а созданные и загруженные с использованием данных приложений файлы отделены от файлов основного профиля (доступ к приватному контенту из приложений в основном профиле осуществляется через интерфейсы обмена файлами и доступа к изображениям).
- Предоставлена поддержка отображения персонализированных миниатюр. Приложения могут предоставлять виджетам релевантные для пользователя представления миниатюр, вместо выставленных по умолчанию заглушек.
- По умолчанию на уровне системы задействована визуализация при навигации при помощи экранных жестов, при помощи анимации предупреждающая пользователя о предстоящем действии, например, при сдвиге влево показывающая, что приложение будет свёрнуто и показан домашний экран.
- Для приложений предоставлена возможность использована небольших вспомогательных экранов (Cover screen), которыми оснащаются некоторые складные смартфоны, такие как Samsung Galaxy Z Flip. Например, вспомогательный экран позволяет быстро принять звонок, ответить на сообщение, управлять камерой и выполнять другие действия без раскрытия устройства.
- По умолчанию обеспечено отображение приложений в режиме “от края до края“, позволяющего выводить информацию на всей видимой области экрана, не упираясь в границы верхней панели состояния и нижней навигационной панели (данные панели выглядят полупрозрачными и перекрывают содержимое приложения). Для отображения содержимого за системными панелями теперь не нужно явно вызывать функции Window.setDecorFitsSystemWindows(false) и EnableEdgeToEdge().
- Расширены возможности работы через спутниковые каналы связи. Добавлены новые элементы интерфейса для унификации использования спутниковой связи. Приложениям предоставлена возможность определения использования спутникового канала при помощи метода ServiceState.isUsingNonTerrestrialNetwork(). В интерфейсе для работы с
SMS/MMS реализована поддержка отправки и приёма сообщений через спутниковые каналы. - Значительно расширены возможности для отрисовки PDF-документов (API PdfRenderer). Например, предоставлены средства для отрисовки защищённых паролем файлов, показа аннотаций, редактирования форм, поиска внутри документа и выделения областей для копирования через буфер обмена. Добавлены оптимизации, снижающие потребление ресурсов и ускоряющие просмотр локальных PDF-файлов. Реализация API PdfRenderer вынесена в отдельный модуль, обновляемый через Google Play и не привязанный к основной платформе.
- Предоставлена возможность управления запасом яркости для HDR (отношение самого яркого белого цвета на HDR-изображении к яркости белого цвета в изображении в стандартном динамическом диапазоне). Для установки запаса яркости добавлен метод setDesiredHdrHeadroom, при помощи которого можно сбалансировать яркость при отображении
содержимого в SDR и HDR. - Улучшен интерфейс для управления учётными записями и упрощена аутентификация на уровне подключения к отдельным приложениям с использованием технологии Passkeys, позволяющей пользователю проходить аутентификацию без паролей с использованием биометрических идентификаторов, таких как отпечаток пальца или распознавание лица.
- На базе прослойки ANGLE подготовлена реализация OpenGL ES, работающая поверх графического API Vulkan, который отмечен как приоритетный программный интерфейс для взаимодействия с GPU. Задействование прослойки ANGLE для OpenGL-приложений позволяет улучшить совместимость , а в некоторых ситуациях и повысить производительность. Для включения ANGLE в секцию настроек “Developer options/Experimental” добавлена опция “Enable ANGLE”. В 2025 году реализацию OpenGL ES на базе ANGLE планируют активировать по умолчанию, а в 2026 году сделать единственно поддерживаемой.
- Обеспечено использование библиотеки dav1d для программного декодирования видео в формате AV1 на устройствах без поддержки аппаратного ускорения. Библиотека развивается участниками проектов VideoLAN и FFmpeg, и нацелена на достижение максимально возможной производительности декодирования и обеспечение качественной работы в многопоточном режиме. В проведённых тестах dav1d в три раза обгоняет по производительности ранее используемый программный декодировщик. Библиотека пока доступна в виде опции, но в одном из следующих обновлений будет предложена по умолчанию.
- В графическую подсистему добавлена поддержка класса Matrix44 для преобразования координат с использованием матрицы 4×4 при манипуляции 2D-поверхностями в 3D-пространстве. Также добавлена функция clipShader для наложения клипа с указанным шейдером.
- Добавлена поддержка стандарта CTA-2075, определяющего возможности для нормализации громкости, позволяющие избежать изменения уровня громкости для разного контента. Согласование громкости достигается через определение метаданных о характеристиках громкоговорителей и громкости звукового AAC-контента. Для нормализации громкости предложен объект LoudnessCodecController и метод OnLoudnessCodecUpdateListener, корректирующий параметры громкости перед обращением к кодеку.
- В AndroidX media3 ExoPlayer 1.0 включено по умолчанию использование пространственного звука для многоканального звука, если пространственный звук поддерживается на устройстве. Объявлен устаревшим класс Virtualizer, вместо которого для определения поведения и возможностей пространственного звука следует использовать класс Spatializer.
- Расширены возможности управления камерой и алгоритмами обработки снятого изображения. В частности, добавлены параметры для увеличения яркости при слабом освещении и настройки интенсивности фотовспышки.
- Реализована возможность создания приложений с музыкальными инструментами и синтезаторами, выглядящими для других приложений как виртуальные MIDI-устройства, соответствующие спецификации MIDI 2.0.
- Продолжено развитие API для динамического управления производительностью – ADPF (Android Dynamic Performance Framework), позволяющего в играх и ресурсоёмких приложениях отслеживать энергопотребление и температуру. Добавлен режим power-efficiency при котором приоритет при выполнении потоков будет отдаваться экономии энергопотребления, а не производительности (например, можно использовать для длительно выполняемых фоновых работ). Предоставлена возможность передачи объединённой информации о потреблении GPU и CPU, что позволяет системе настроить частоту GPU и CPU или привязку потоков к ядрам, учитывая общую нагрузку.
Добавлен метод getThermalHeadroomThresholds для вывода сведений о состоянии регулирования температуры с учётом прогнозируемых значений. - Добавлена поддержка устройств, на которых используются страницы памяти размером 16 КБ. Для задействования 16-килобайтных страниц достаточно просто пересобрать приложения, напрямую или косвенно использующие библиотеки NDK (Native Development Kit). Задействование страниц размером 16 КБ вместо 4 КБ позволяет повысить производительность программ, интенсивно работающих с памятью. Например, при использовании 16-килобайтных страниц время запуска подобных программ в среднем снизилось на 3.16% (для некоторых на 30%), а энегропотребление снизилось на 4.56%. Повторный запуск программы для работы с камерой ускорился на 4.48%, а общее время загрузки системы сократилось на 0.8 сек. (1.5%).
- В операционную систему встроена возможность архивирования редко используемых приложений для высвобождения занимаемого ими пространства на накопителе. При возникновении потребности в приложении его можно вернуть из архива. Приложения с полномочиями REQUEST_DELETE_PACKAGES теперь могут вызвать метод requestArchive для запроса архивирования установленного пакета, что приведёт удалению пакета APK и всех файлов из кэша, но сохранит ярлык и связанные с приложением пользовательские данные. При попытке запуска заархивированного приложения оно заново будет загружено и восстановлено.
- Проведена работа по упрощению использования телефона с поддержкой NFC для оплаты товаров одним касанием (tap to pay). Приложениям предоставлена возможность перевода NFC-адаптера в режим наблюдения, при котором устройство принимает запросы по NFC и отправляет на обработку заданному процессу, но не отвечает и не предаёт данные NFC-ридерам. Реализована поддержка регистрации отпечатка (fingerprint) для получения уведомлений о связанной с NFC активности при одновременном использовании на устройстве нескольких приложений, работающих с NFC.
- Улучшены возможности для автоматического распознавания языка и переключения языков. Приложениям предоставлены расширенные опции для тонкой настройки переключения языков во время распознавания речи. Например, режим EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS допускает переключение только вначале звукового сеанса, а режим EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES отменяет переключение языка после определённого числа переключений, что может быть востребовано в ситуациях, когда заранее известно, что в одном сеансе будет использован только один язык.
- Проведена оптимизация работы механизма фоновых сервисов, позволяющего приложениям находиться в активном состоянии, когда с ними не взаимодействует пользователь. Фоновые сервисы, выполняющие синхронизацию данных (dataSync) или обработку мультимедийного контента (mediaProcessing), теперь принудительно останавливаются после работы в течение 6 часов.
- При предоставлении частичного доступа к контенту в интерфейсе выбора фотографий реализована возможность пометки только фото и видео, которые уже выбирали в недавнем прошлом, что позволяет упростить работу с часто запрашиваемыми фото и видео.
- В конфигураторе (Settings → System → Languages & Input → System languages → Choose how you’re addressed) предоставлена возможность выставления предпочитаемого обращения к пользователю (мужчина, женщина, нейтральное обращение), используемая для адаптации грамматики в выдаваемых системой обращениях. Настройка пока доступна только для французского языка.
- Добавлены дополнительные элементы API для обеспечения плавного перехода в режим “картинка в картинке” программ с элементами интерфейса, отображаемыми поверх основного интерфейса пользователя.
- Предоставлена возможность выбора виброэффекта для предупреждения о поступлении нового уведомления.
- В хранилище Health Connect добавлена поддержка новых типов данных, применяемых при занятиях спортом и контроле за питанием. Например, добавлено поле для контроля за температурой кожи и реализована структура для определения плана тренировок.
- Добавлен класс ProfilingManager, позволяющий запросить из приложения данные профилирования. Например, можно получить доступ к дампам памяти в куче, сведениям об использовании кучи и активности в стеке.
- Предоставлены средства для гибкого управления разрывом строк. В виджете TextView для улучшения читаемости при помощи тегов и можно управлять переносом групп слов или частей слов на другую строку. Например, в строке “The power and brains behind Pixel 8 Pro.” фраза “Pixel 8 Pro” будет всегда отображаться в одной строке.
- Добавлен API E2eeContactKeysManager для управления ключами сквозного шифрования (E2EE) в приложениях.
Интеграция E2eeContactKeysManager в адресную книгу позволяет предоставить пользователю централизованный интерфейс для управления открытыми ключами адресатов, а также верификации этих ключей. - Добавлена дополнительная защита от вредоносной активности фоновых приложений, нацеленных на активацию других приложений, повышение их привилегий и злоупотребление взаимодействием с пользователем.
- Расширены возможности фильтрации intent-запросов. При помощи класса UriRelativeFilterGroup можно задавать правила для блокирования или пропускания запросов на основе содержимого параметров URL и фрагментов URL. Правила фильтрации также могут задаваться через новый тег в манифесте приложения.
- Расширена поддержка API, предоставляемого в OpenJDK. Например, добавлена поддержка дополнительных методов классов Math и StrictMath, упорядоченных коллекций и списков, использования ByteBuffer в Deflater и обновления ключей.
- Добавлен API, позволяющий приложениям определять выполнение записи экрана. Приложение может задать callback-обработчик, который будет вызван, в случае если включена запись экрана и окно приложения попадает в видимую область. Предложенная возможность позволяет показывать пользователю предупреждения о записи в случае отображения конфиденциальных данных.
- Добавлен API ApplicationStartInfo, через который можно получить информацию о состоянии при запуске программы. Например, можно узнать прокэшированы ли компоненты приложения (состояния cold, warm или hot), как долго выполнялись разные стадии запуска, что послужило причиной запуска, а также определить метрики, полезные для оптимизации скорости запуска.
- Изменена обработка остановленного состояния, при котором выполнение приложения приостанавливается до связанного с приложением действия пользователя. В новой версии предоставлены возможности для определения приложением прекращения приостановки: обработка сообщения BOOT_COMPLETED или использование метода ApplicationStartInfo.wasForceStopped().
- Помимо метода StorageStats.getAppBytes(), позволяющего получить общие данные о размере установленного приложения, добавлен метод StorageStats.getAppBytesByDataType(), дающий возможность получить раздельные сведения о размере пакета APK, скомпилированном коде, извлечённых и сгенерированных данных.
- Внесены изменения в API запуска приоритетных сервисов (Foreground Service). Добавлен новый тип приоритетных сервисов – mediaProcessing, который можно использовать для ресурсоёмких операций с мультимедийным содержимым, например, перекодирования из одного формата в другой.
- Предложен новый API для работы с движком хранения на базе СУБД SQLite, предоставляющий доступ к расширенным возможностям SQLite.
- Добавлен класс AutomaticZenRules, позволяющий приложениям настроить правила применения режима “не беспокоить” и определить ситуации, когда эти правила должны применяться.
В сервисах для показа рекламы в мобильных приложениях (Android AD Services) задействованы последние наработки проекта Privacy Sandbox, нацеленного на создание техник персонализации показа рекламы без нарушения конфиденциальности пользователя (определение общей категории интересов пользователя без индивидуальной идентификации). - В хранилище Health Connect добавлена поддержка новых типов данных, применяемых при занятиях спортом и контроле за питанием. Например, добавлены поля для отслеживания среднего числа пройденных шагов и потребления трансжиров. Health Connect обеспечивает централизованное хранение данных с фитнес-браслетов и прочих устройств, имеющих отношение к здоровью пользователя, и организует совместный доступ разных приложений к данным о здоровье.
- В API FileIntegrityManager добавлена поддержка предоставляемого ядром Linux механизма fs-verity для прозрачного контроля целостности и подлинности отдельных файлов по ассоциированным с файлами криптографическим подписям, хранимым в области метаданных.
- В API для предоставления совместного доступа к экрану добавлена возможность захвата отдельных окон приложений, а не всего содержимого экрана.
Release.
Ссылка here.