Компанія 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. Відкриття програми у плаваючому вікні здійснюється через утримання натискання на піктограму програми. На великих екранах піктограми вікон, що плавають, відображаються в окремій області на панелі завдань. Подібні вікна можна групувати, переміщувати та закріплювати на екрані.

- Продовжено розвиток платформи для пристроїв з великими екранами, такими як планшети, ноутбуки, настільні системи та смартфони зі складними екранами. Прибрані раніше діяли опції для відключення нової поведінки на пристроях з екранами шириною більше 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), совмещающих запись видео с передней камеры с созданием скринкаста для наложения своих комментариев к действиям на экране.
- Добавлен режим для игр на устройствах со складными экранами, при котором одна половина раскладного экрана используется для отображения игрового процесса, а другая для виртуального геймпада.

- Додано API Handoff, що дозволяє передати стан програми на інше, що знаходиться поблизу. Android-пристрій (наприклад, планшет) та продовжити там роботу.

- Реалізовані інтерактивні закріплені вікна, які на відміну від традиційних вікон у режимі «картинка в картинці» (Picture-in-Picture) залишаються інтерактивними при закріпленні поверх інших додатків у десктоп-режимі.
- Додано два нові 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 бит на цветовой канал.
- Добавлено поддержка формата HDR-видео Eclipsa Video.
- Додано програмний кодувальник звукового формату 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), совмещающего простоту передачи ключа в шифровании с открытым ключом с высокой производительностью симметричного шифрования (данные шифруются быстрым симметричным ключом, а сам ключ шифруется медленным асимметричным).
- При вводе паролей и PIN-кодов при помощи физической клавиатуры по умолчанию отключено отображение последнего введённого символа по мере набора.
- Для спрощення реалізації підтримки тачпадів в іграх уніфіковано обробку подій від миші та тачпада — за умовчанням події тачпада, пов'язані з переміщенням покажчика та жестами прокручування, тепер перетворюються на формат із відносними координатами, як для миші. Доступ до абсолютних координат надається за явної вказівки режиму POINTER_CAPTURE_MODE_ABSOLUTE.
- В об'єкт ChooserSession доданий метод getInitialRestingBounds(), що дозволяє дізнатися фінальну позицію та розмір діалогу вибору (Chooser) після припинення анімації та завантаження даних.
- Додано методи getStreamingAppMaxDownlinkKbps та getStreamingAppMaxUplinkKbps для визначення максимальної пропускної спроможності каналу зв'язку з метою вибору рівня якості при потоковому мовленні.
- Виробникам обладнання надано API для створення розширень для камер, що дозволяють використовувати в додатках специфічні можливості, такі як механізм покращення деталізації Super Resolution, режими придушення шумів та AI-оптимізатори якості.
- Доданий API для отримання інформації про тип камери (вбудована камера, що підключається через USB-камера або віртуальна камера).
- Додано підтримку слухових апаратів, що підключаються через інтерфейс Bluetooth Low Energy (BLE). Подібні пристрої віднесені до нової категорії TYPE_BLE_HEARING_AID, що дозволяє програмам розділяти слухові апарати та навушники, а також окремо керувати відтворенням системних звуків (наприклад, можна відтворювати звуки сповіщень, дзвінків та будильника на вбудованому динаміці телефону, а не на слуховому).
- Додано окремі налаштування для ввімкнення показу пароля, що вводиться на фізичній клавіатурі та сенсорному екрані. За промовчанням символи пароля, що вводяться за допомогою фізичної клавіатури, одразу ховаються.
- Покращено відображення віджетів програм на зовнішніх екранах, за рахунок обліку різниці в DPI при масштабуванні.
- Додано запит ACTION_VPN_APP_EXCLUSION_SETTINGS, за допомогою якого можна викликати системний екран з налаштуваннями, що дозволяють відкрити програмі мережевий доступ в обхід VPN-тунелю.
- Додано підтримку доступних в OpenJDK 25 можливостей мови та Java-класів.
- Розширено можливості програмних інтерфейсів для роботи з камерою. У об'єкт CameraCaptureSession додано метод updateOutputConfigurations() для прикріплення або відключення на льоту областей виведення без необхідності переналаштування всього сеансу захоплення даних із камери. Насправді зміна дозволяє реалізувати плавне перемикання між різними режимами роботи камери (наприклад, записом відео та зйомкою фотографій). При роботі з логічними камерами, що охоплюють кілька фізичних сенсорів, додано можливість отримання метаданих про кожен сенсор, а не тільки первинний.
- Оголошено застарілим атрибут android:usesCleartextTraffic, який дозволяв додатку передачу незашифрованого трафіку, наприклад, звернення «http://». За необхідності використання незашифрованого трафіку слід використовувати окремі файли з налаштуваннями безпеки.
- Додані настройки для керування історією VoIP-дзвінків, які дозволяють керувати збереженням відомостей у логах та показом в інтерфейсі інформації про здійснені дзвінки.
- В API Wi-Fi RTT (Round-Trip-Time) розширено можливість безперервного визначення приблизної відстані до точок доступу та безпечного визначення вузлів для P2P-з'єднань (peer-to-peer).
- У CompanionDeviceManager додані нові профілі для запиту повноважень та взаємодії додатків із медичними пристроями та фітнес-трекерами.
- В Android Runtime (ART) реализован поколенческий сборщик мусора (Generational Concurrent Mark-Compact Garbage Collector), использующий раздельную обработку «старых» и «молодых» объектов, что повышает эффективность очистки недавно созданных объектов с небольшим временем жизни. Применение поколенческого сборщика мусора уменьшает риск приостановок во время выделения ресурсов и снижает нагрузку на CPU, что повышает эффективность потребления энергии.
- Реализовано ограничение на максимальный объём оперативной памяти, которое может занимать приложение. При превышении лимита, вычисляемого на основе имеющегося в устройстве ОЗУ, приложение принудительно завершается. Для сокращения размера потребляемой памяти предложен R8 Optimizer, упаковывающий имена классов, методов и полей, а также удаляющий неиспользуемый код и ресурсы.
- При сборке ядра 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 17 и более новых выпусков, запрещено изменять значения полей, помеченных как «static final», что позволяет задействовать более агрессивные оптимизации производительности в runtime.
- Для зниження споживання пам'яті обмежений розмір своїх розкладок оформлення повідомлень (notification view).
- У профільувачі ProfilingManager додані додаткові тригери TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM та TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE для збору даних, корисних при налагодженні проблем з продуктивністю.
Джерело: opennet.ru












