Выпуск мобильной платформы Android 17

Компания 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.

Среди изменений (1, 2, 3):

  • Добавлен новый режим многооконной работы — «Bubbles», позволяющий запускать любые приложения в плавающих окнах, напоминающих отображаемые поверх другого контента уведомления для отправки сообщений («пузыри»), но не привязанные к специализированному API. Открытие приложения в плавающем окне осуществляется через удержание нажатия на пиктограмму приложения. На больших экранах пиктограммы плавающих окон отображаются в отдельной области на панели задач. Подобные окна можно группировать, перемещать и закреплять на экране.

    CFD0C5CECEC5D4_1772262334.png

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

    CFD0C5CECEC5D4_1771062993.png

    CFD0C5CECEC5D4_1771063008.png

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



    CFD0C5CECEC5D4_1772263741.png

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

    CFD0C5CECEC5D4_1772264745.png

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

    CFD0C5CECEC5D4_1774613549.png

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

    CFD0C5CECEC5D4_1774637052.png

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

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

    CFD0C5CECEC5D4_1774641230.png

  • Реализованы интерактивные закреплённые окна, которые в отличие от традиционных окон в режиме «картинка в картинке» (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

© OpenNet