Компания Google опубликовала релиз открытой мобильной платформы Android 17. Связанные с новым выпуском исходные тексты размещены в Git-репозитории проекта (ветка android-17.0.0_r1). Сборки прошивки подготовлены для устройств Pixel 6/6a/6 Pro, Pixel 7/7a/7 Pro, Pixel 8/8a/8 Pro, Pixel 9/9a/9 Pro/9 Pro XL/9 Pro Fold, Pixel 10/10 Pro/10 Pro XL/10 Pro Fold, Pixel Fold и Pixel Tablet. Предварительные сборки прошивок доступны для устройств HONOR, iQOO, Lenovo, OnePlus, OPPO, realme, Sharp, vivo и Xiaomi. В процессе формирования универсальные сборки GSI (Generic System Images), подходящие для разных устройств на базе архитектур ARM64 и x86_64.
- Добавлен новый режим многооконной работы — «Bubbles», позволяющий запускать любые приложения в плавающих окнах, напоминающих отображаемые поверх другого контента уведомления для отправки сообщений («пузыри«), но не привязанные к специализированному API. Открытие приложения в плавающем окне осуществляется через удержание нажатия на пиктограмму приложения. На больших экранах пиктограммы плавающих окон отображаются в отдельной области на панели задач. Подобные окна можно группировать, перемещать и закреплять на экране.

- Продолжено развитие платформы для устройств с большими экранами, такими как планшеты, ноутбуки, настольные системы и смартфоны со складными экранами. Убраны ранее действовавшие опции для отключения нового поведения на устройствах с экранами шириной более 600 условных пикселей (dp), связанного с игнорированием некоторых API для управления изменением размера и ориентацией экрана (screenOrientation, resizeableActivity, [min|max]AspectRatio), а также адаптивным размещением приложений в окнах, допускающих изменение размера и перемещение по экрану.


- Добавлен системный API EyeDropper API, при помощи которого приложение может получить информацию о цвете любого пикселя на экране без необходимости получения полномочий на захват экрана. Безопасность обеспечивается благодаря тому, что пользователь сам выбирать область для определения цвета через управляемый платформой интерфейс c «пипеткой, не подконтрольный приложению, т.е. приложение не может запросить информацию о конкретном пикселе и попиксельно воссоздать содержимое экрана.

- Добавлен системный интерфейс выбора контакта из адресной книги, доступ к которому предоставляется при получении полномочия ACTION_PICK_CONTACTS. Интерфейс позволяет обойтись без запроса полномочия READ_CONTACTS, позволяющего прочитать все контактные данные. При вызове нового интерфейса пользователь принимает решение о том, какую именно информацию из адресной книги передать приложению с возможностью выбора только отдельных полей.

- Добавлен API PhotoPickerUiCustomizationParams для изменения интерфейса выбора фотографий, что позволяет приблизить его к стилю вызывающего приложения. Например, можно изменить соотношение сторон эскизов фотографий с 1:1 (квадрат) на 9:16 (портрет).

- Добавлено полномочие USE_LOCATION_BUTTON, позволяющее встроить в интерфейс приложения системную кнопку предоставления доступа к точным данным о местоположении. Кнопка отрисовывается системой и после нажатия пользователем открывает доступ к местоположению только на время действия текущего сеанса.

- Добавлена настройка, позволяющая убрать показ названий приложений под их пиктограммами.


- Изменено оформление панели инструментов для записи скринкастов.

- Добавлена поддержка экранных реакций (Screen Reactions), совмещающих запись видео с передней камеры с созданием скринкаста для наложения своих комментариев к действиям на экране.
- Добавлен режим для игр на устройствах со складными экранами, при котором одна половина раскладного экрана используется для отображения игрового процесса, а другая для виртуального геймпада.

- Реализованы интерактивные закреплённые окна, которые в отличие от традиционных окон в режиме «картинка в картинке» (Picture-in-Picture) остаются интерактивными при закреплении поверх других приложений в десктоп-режиме.
- Добавлен API Handoff, позволяющий передать состояние приложения на находящееся поблизости другое Android-устройство (например, планшет) и продолжить там работу.
- Добавлены два новых API: API UWB DL-TDOA — определение позиции устройства внутри здания при помощи Wi-Fi для навигации в помещениях; API Proximity Detection для обнаружения находящихся поблизости устройств через Wi-Fi.
- Добавлена поддержка формата видео VVC (Versatile Video Coding), известного также как стандарт сжатия видео H.266, разработанный совместно рабочими группами MPEG (ISO/IEC JTC 1) и VCEG (ITU-T), при участии таких компаний, как Apple, Ericsson, Intel, Huawei, Microsoft, Qualcomm и Sony. H.266 идёт на смену H.265 (HEVC) и обеспечивает высокую эффективность передачи и хранения всех экранных разрешений (от SD и HD до 4K и 8K), поддерживает видео с расширенным динамическим диапазоном (HDR, High Dynamic Range) и панорамное видео в режиме 360 градусов.
- Добавлена возможность записи видео с постоянным уровнем качества. Режим настраивается в объекте MediaRecorder, используя метод setVideoEncodingQuality(), позволяющий зафиксировать уровень качества без привязки к битрейту.
- Добавлена поддержка формата изображений RAW14, применяемого в профессиональных цифровых камерах и обеспечивающего хранение 15 бит на цветовой канал
- Добавлен программный кодировщик звукового формата HE-AAC (High-Efficiency Advanced Audio Coding), поддерживающий как низкие, так и высокие битрейты.
- Добавлено новое полномочие ACCESS_LOCAL_NETWORK для ограничения доступа приложений к локальной сети. Наличие данного полномочия позволяет приложениям определять и подключаться к устройствам в локальной сети, например, к устройствам умного дома и мультимедийным системам. Полномочие добавлено чтобы блокировать сканирование вредоносными приложениями ресурсов в локальной сети, например, для скрытой идентификации окружения пользователя.
- Расширена защита от перехвата одноразовых паролей (OTP) и кодов подтверждения, отправляемых через SMS. Прямой доступ к подобным сообщениям теперь открывается большинству приложений лишь спустя три часа после поступления сообщения. В штатном приложении для чтения SMS подобные сообщения показываются сразу.
- Механизм защиты динамической загрузки кода (DCL, Dynamic Code Loading) расширен для применения с нативными библиотеками, загружаемыми через метод System.load(), а не только
файлами в форматах DEX и JAR. DCL позволяет избежать подстановки вредоносного кода в динамически загружаемые исполняемые файлы, благодаря выставлению для подобных файлов прав доступа, допускающих только чтение. - Включён по умолчанию механизм Certificate Transparency, ведущий публичный лог всех выданных и отозванных сертификатов,
- Предоставлена возможность заверения APK-пакетов цифровой подписью на базе гибридного алгоритма, сочетающего классический алгоритм с алгоритмом ML-DSA, стойким от подбора на квантовом компьютере.
- Для приложений, работающих в фоновом режиме, ограничен доступ к API для воспроизведения звука, подключения к звуковым устройствам и изменения громкости. Подразумевается, что только активные приложения, с которыми в данный момент взаимодействует пользователь, могут начинать воспроизведение и менять громкость.
- Добавлена поддержка гибридного шифрования на основе механизма HPKE (Hybrid Public Key Encryption, RFC 9180), совмещающего простоту передачи ключа в шифровании с открытым ключом с высокой производительностью симметричного шифрования (данные шифруются быстрым симметричным ключом, а сам ключ шифруется медленным асимметричным).
- Для упрощения реализации поддержки тачпадов в играх унифицирована обработка событий от мыши и тачпада — по умолчанию события тачпада, связанные с перемещением указателя и жестами прокрутки, теперь преобразуются в формат с относительными координатами, как для мыши. Доступ к абсолютным координатам предоставляется при явном указании режима POINTER_CAPTURE_MODE_ABSOLUTE.
- В объект ChooserSession добавлен метод getInitialRestingBounds(), позволяющий узнать финальную позицию и размер диалога выбора (Chooser) после прекращения анимации и загрузки данных.
- Добавлены методы getStreamingAppMaxDownlinkKbps и getStreamingAppMaxUplinkKbps для определения максимальной пропускной способности канала связи с целью выбора уровня качества при потоковом вещании.
- Производителям оборудования предоставлен API для создания расширений для камер, позволяющих использовать в приложениях специфичные возможности, такие как механизм улучшения детализации Super Resolution, режимы подавления шумов и AI-оптимизаторы качества.
- Добавлен API для получения информации о типе камеры (встроенная камера, подключаемая через USB web-камера или виртуальная камера).
- Добавлена поддержка слуховых аппаратов, подключаемых через интерфейс Bluetooth Low Energy (BLE). Подобные устройства отнесены к новой категории TYPE_BLE_HEARING_AID, что позволяет приложениям разделять слуховые аппараты и наушники, а также отдельно управлять воспроизведением системных звуков (например, можно воспроизводить звуки уведомлений, звонков и будильника на встроенном динамике телефона, а не на слуховом аппарате).
- Добавлены раздельные настройки для включения показа пароля, вводимого на физической клавиатуре и на сенсорном экране. По умолчанию символы пароля, вводимые при помощи физической клавиатуры, сразу скрываются.
- Улучшено отображение виджетов приложений на внешних экранах, за счёт учёта разницы в DPI при масштабировании.
- Добавлен запрос ACTION_VPN_APP_EXCLUSION_SETTINGS, при помощи которого можно вызвать системный экран с настройками, позволяющими открыть приложению сетевой доступ в обход VPN-туннеля.
- Добавлена поддержка доступных в OpenJDK 25 возможностей языка и Java-классов.
- При сборке ядра Linux включена оптимизация AutoFDO (Auto-Feedback-Directed Optimization), использующая результаты профилирования c информацией о частоте выполнения различных участков кода для повышения производительности часто выполняемых операций. В проведённых тестах включение AutoFDO для ядра привело к сокращению времени загрузки на 2.1%, ускорению первого запуска программ на 4.3%, повышению эффективности системных вызовов на 9.3%, сокращению времени выполнения mmap-транзакций Binder на 12.3%, HwBinder на 20% и Binder RPC на 21.7%.
- Предложена новая реализация очереди сообщений android.os.MessageQueue, работающая без блокировок. Новая реализация позволяет повысить производительность и снизить потерю кадров.
- В Android Runtime (ART) реализован поколенческий сборщик мусора (Generational Concurrent Mark-Compact Garbage Collector), использующий раздельную обработку «старых» и «молодых» объектов, что повышает эффективность очистки недавно созданных объектов с небольшим временем жизни. Применение поколенческого сборщика мусора уменьшает риск приостановок во время выделения ресурсов и снижает нагрузку на CPU, что повышает эффективность потребления энергии.
- Приложениям, заявляющим о поддержке Android 17 и более новых выпусков, запрещено изменять значения полей, помеченных как «static final», что позволяет задействовать более агрессивные оптимизации производительности в runtime.
- Для снижения потребления памяти ограничен размер собственных раскладок оформления уведомлений (notification view).
- В профилировщик ProfilingManager добавлены дополнительные триггеры TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM и TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE для сбора данных, полезных при отладке проблем с производительностью.
- Расширены возможности программных интерфейсов для работы с камерой. В объект CameraCaptureSession добавлен метод updateOutputConfigurations() для прикрепления или отключения на лету областей вывода без необходимости перенастройки всего сеанса захвата данных с камеры. На практике изменение позволяет реализовать плавное переключение между разными режимами работы камеры (например, записью видео и съёмкой фотографий). При работе с логическими камерами, охватывающими несколько физических сенсоров, добавлена возможность получения метаданных о каждом сенсоре, а не только о первичном.
- Объявлен устаревшим атрибут android:usesCleartextTraffic, разрешавший приложению передачу незашифрованного трафика, например, обращения по «http://». При необходимости использования незашифрованного трафика следует использовать отдельные файлы с настройками безопасности.
- Добавлены настройки для управления историей VoIP-вызовов, позволяющие управлять сохранением сведений в логах и показом в интерфейсе информации о совершённых вызовах.
- В API Wi-Fi RTT (Round-Trip-Time) расширены возможность непрерывного определения приблизительного расстояния до точек доступа и безопасного определения узлов для P2P-соединений (peer-to-peer).
- В CompanionDeviceManager добавлены новые профили для запроса полномочий и взаимодействия приложений с медицинскими устройствами и фитнес-трекерами.
Источник: http://www.opennet.ru/opennews/art.shtml?num=65701
