Сообщество

Now in Android #121

Время на чтение: 9 минут
Посмотреть профиль Дэниела Галпина
Daniel Galpin Специалист по связям с разработчиками

Добро пожаловать в Now in Android – ваш путеводитель по миру разработки для Android.

В этом выпуске: Android 16 QPR2 beta 1, Android Studio Narwhal feature drop, Jetpack Compose 1.9, Media 3 1.8, Shape Morphing, автозаполнение в Compose и многое другое.

Вы можете посмотреть краткий пересказ видео:

 

 

А ещё у нас есть подкаст.

Но в этой записи содержится самая подробная информация, так что читайте дальше!

Встречайте Android 16 QPR2 Beta 1 ✨

Вышла первая бета-версия Android 16 QPR2 – первого выпуска Android с дополнительной версией Android SDK. В минорных версиях SDK могут быть новые API, расширяющие возможности платформы, но не должно быть изменений в поведении, связанных с targetSdkVersion. Это позволяет сократить объем тестирования приложений.

sdk-release-graph.webp

Вы можете вызывать новые API, сравнивая SDK_INT_FULL с перечислением VERSION_CODES_FULL:

if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
  // Call new APIs from the Android 16 QPR2 release
}

VERSION_CODES_FULL нельзя использовать в атрибутах манифеста uses-sdk.

Вот некоторые ключевые обновления из QPR2 Beta 1.

Интерфейс, системные функции и специальные возможности

  • Расширенная тёмная тема автоматически инвертирует цвета в приложениях со светлой темой для пользователей, которые предпочитают тёмную.
  • Если в вашем приложении нет монохромного слоя, система может автоматически сгенерировать тематические значки приложения.
  • Интерактивные сеансы выбора позволяют сохранить активность интерфейса приложения, пока открыто окно отправки. Для этого используются ChooserManager и ChooserSession.
  • Новый API для передачи данных позволяет надежнее и безопаснее переносить данные между Android и iOS. Для этого нужно обновить XML-файл с правилами извлечения данных приложения и реализацию BackupAgent.
  • Пакет android.graphics.pdf теперь поддерживает аннотирование и редактирование PDF-документов с помощью PdfRenderer.Page.
  • Значения ViewConfiguration теперь адаптированы для отдельных виртуальных устройств. Для сценариев с несколькими дисплеями перейдите на ViewConfiguration.get(context).
  • Вы можете более точно настроить виброотклик, указав VibrationAttributes с View.performHapticFeedback(HapticFeedbackRequest).
  • Теперь параметрам быстрых настроек можно назначать стандартные категории в файле AndroidManifest.xml.

Медиа и аудио:

  • Программное декодирование для Immersive Audio Model and Formats (IAMF) – открытого формата пространственного звучания.
  • Функция передачи аудио для устройств с поддержкой Bluetooth LE Audio интегрирована непосредственно в системный переключатель вывода.
  • Пользователи могут настраивать яркость HDR с помощью ползунка HDR/SDR.
  • Дополнения для инструмента выбора фотографий могут выделять определенные альбомы или поисковые запросы.

Подключение.

  • Улучшения в Companion Device Management (CDM) позволяют добавлять собственные значки устройств, прослушивать обратный вызов EVENT_ASSOCIATION_REMOVED и включать проверку в разных приложениях с помощью DeviceId.
  • Обновления Bluetooth включают поддержку пассивного сканирования для BluetoothLeScanner (ScanSettings.SCAN_TYPE_PASSIVE), причины потери связи (BluetoothDevice.EXTRA_BOND_LOSS_REASON) и прямое получение UUID сервиса (BluetoothDevice.EXTRA_UUID_LE).
  • Обновления Wi-Fi RTT Ranging (RttStationRangingParams) поддерживают определение расстояния до станций.
  • Доступен новый PhoneNumberManager для синтаксического анализа и проверки номеров телефонов из заголовков IMS P-Associated-URI.
  • Улучшения конфиденциальности сети MediaRouter позволяют транслировать контент через новые среды, такие как Bluetooth и UWB. Используйте системный переключатель вывода или запросите разрешения NEARBY_DEVICES для пользовательских средств выбора в приложении.

Конфиденциальность и безопасность

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

Продуктивность разработчиков

  • Новые API AppWidgetManager позволяют запрашивать показатели взаимодействия с виджетами.
  • Приложения, доступные для отладки и установленные через ADB, теперь будут получать ранние предупреждения о совместимости со страницами размером 16 КБ.
  • В ProfilingManager добавлена поддержка новых триггеров профилирования, инициируемых системой, и requestRunningSystemTrace для записи фоновых трассировок.
  • Переключатель "Подробный журнал печати" в разделе "Для разработчиков" позволяет получить дополнительные сведения для отладки Android Print Framework.
  • Новые API UiAutomation для скриншотов на дополнительных экранах и общедоступный AccessibilityWindowInfo.refresh позволяют более тщательно тестировать приложения для компьютеров и устройств с несколькими экранами.
  • Добавлена поддержка API для новой библиотеки androidx.core:core-backported-fixes.
  • Приложения с графическим интерфейсом теперь поддерживаются в терминале Linux
  • WindowInspector.addGlobalWindowViewsListener поддерживает уведомления об изменении корневого представления в реальном времени.

Вы можете зарегистрировать любое поддерживаемое устройство Pixel, чтобы получать бета-обновления по беспроводной сети, или использовать 64-разрядные образы системы с эмулятором Android в Android Studio. Стабильность платформы запланирована на октябрь 2025 года.

Стабильная версия Android Studio Narwhal Feature Drop – начните использовать режим агента 🐳

narwhal.webp

Вышел стабильный выпуск Android Studio Narwhal Feature Drop. В него вошли следующие новые функции и улучшения:

Потоковая передача с устройств Android на базе Firebase

device-streaming.webp

В Android Device Streaming на базе Firebase добавлена стабильная поддержка Android Partner Device Labs. Теперь вы можете удаленно подключаться к физическим устройствам Android, размещенным у OEM-партнеров, включая Samsung, Xiaomi, OPPO, OnePlus и vivo.

Ускорение разработки благодаря ежемесячным выпускам Android Studio – в два раза чаще, чем раньше

accelarating-releases.webp

Android Studio переходит на ежемесячный выпуск стабильных версий, чтобы вы быстрее получали новые функции и критические исправления ошибок. Среда разработки Android Studio будет обновляться ежемесячно, а новые версии платформы IntelliJ будут выходить раз в несколько месяцев. В промежутках между ними будут выпускаться наборы функций. Эмулятор Android и плагин Android Gradle будут по-прежнему обновляться отдельно каждые два месяца. Такой ускоренный график выпуска поддерживается долгосрочными инвестициями в инфраструктуру тестирования.

Что нового в выпуске Jetpack Compose за август 2025 года 🚀

jetpack-compose.webp

Выпуск Jetpack Compose за август 2025 года (версия 1.9) теперь стабилен. В этом выпуске представлены Modifier.dropShadow и Modifier.innerShadow для отрисовки эффектов box-shadow. Новые модификаторы onVisibilityChanged и onFirstVisible позволяют отслеживать видимость элементов для обновления интерфейса или регистрации показов. Вы можете применять расширенное форматирование в OutputTransformation, используя TextFieldBuffer.addStyle для преобразования текста.

Строительные блоки LazyLayout теперь стабильны, и вы можете определить LazyLayoutCacheWindow для повышения производительности Lazy List и Grid с улучшенной предварительной выборкой. Scrollable2D позволяет выполнять двумерную прокрутку, включая прокрутку с ускорением и вложенную прокрутку, а также содержит различные улучшения для взаимодействия прокрутки и вложенной прокрутки с представлениями. API для согласия (Composer.setDiagnosticStackTraceEnabled) предоставляет более подробные сведения о месте сбоя в трассировках стека. Рекомендуется только для отладочных сборок. Новые аннотации @RememberInComposition и @FrequentlyChangingValue, а также связанные с ними проверки Lint доступны в новой библиотеке аннотаций среды выполнения. Контекстные меню можно настраивать с помощью правил Modifier.appendTextContextMenuComponents и Modifier.filterTextContextMenuComponents. Теперь требуется плагин Android Gradle (AGP) или Lint версии 8.8.2 или выше.

Что нового в Media3 1.8.0 🚀

media3.webp

Вышла версия Media3 1.8.0 с новыми функциями и улучшениями. В ExoPlayer добавлен режим прокрутки для частого поиска по запросу пользователя. Его можно включить с помощью ExoPlayer.setScrubbingModeEnabled. HlsInterstitialsAdsLoader теперь поддерживает прямые трансляции со вставкой объявлений, управляемой сервером.

В MetadataRetriever добавлена возможность получать длительность медиаобъектов без воспроизведения. В Transformer ускорена обрезка с помощью списков редактирования MP4 с experimentalSetMp4EditListTrimEnabled и оптимизацией кодировщика для конкретного чипсета через CodecDbLite, которая включается вызовом setEnableCodecDbLite в DefaultEncoderFactory.Builder.

Другие обновления включают поддержку частичного скачивания в Downloader с PreCacheHelper, автоматическую маршрутизацию аудио XR в ExoPlayer и более эффективное взаимодействие с MediaCodec. Теперь уведомления модуля MediaSession по умолчанию показываются дольше, а в демоприложении MediaSession демонстрируется функция возобновления воспроизведения. Новое демоприложение Composition, созданное с помощью Kotlin и Compose, демонстрирует расширенные возможности редактирования видео с несколькими объектами.

Статьи 📚

#WeArePlay: познакомьтесь с разработчиками, которые делают мир лучше

weareplay.webp

В рамках инициативы #WeArePlay мы рассказываем об играх и приложениях для Android, которые помогают решать экологические проблемы. Игра BoRa — Iguaçu National Park, разработанная Майлой, Флавией, Андреей и Арианой, предлагает интерактивный опыт в игровой форме и с учетом специальных возможностей для изучения природы во время посещения парка. Приложение CyberTracker, созданное Луисом и Джастином, позволяет неграмотным коренным жителям записывать данные о биоразнообразии с помощью интерфейса на основе значков, поддерживая усилия по сохранению природы. И наконец, Earth5R, сооснователями которого являются Бхарати и Саурабх, предлагает экологическое образование и связывает пользователей со стажировками и проектами для развития навыков в области зеленой экономики.

Что такое HDR? 🌟

hdr.webp

Расширенный динамический диапазон (HDR) позволяет разработчикам Android повысить пиковую яркость по сравнению со стандартным динамическим диапазоном (SDR), что улучшает визуальную точность. Android поддерживает HDR для видео и изображений, включая такие технологии, как UltraHDR для обратной совместимости.

Понимание цвета включает три компонента:

  • Глубина цвета. Определяет точность цветопередачи. Чем выше глубина цвета, тем плавнее переходы.
  • Функция передачи. Сопоставляет числовые значения пикселей с отображаемой яркостью или цветом, корректируя нелинейный зрительный отклик человека. Примеры: sRGB, HLG и PQ.
  • Цветовая гамма. Диапазон цветов, которые может воспроизводить устройство.

Распространенные заблуждения о HDR

  • Яркие цвета. Более широкие цветовые гаммы, такие как Display P3 и Adobe RGB, были доступны и до появления HDR. Большинство дисплеев по-прежнему обрезают цвета до P3, даже если контент поддерживает BT.2020.
  • Более высокая контрастность и лучшая детализация черного цвета. На одном и том же экране HDR не обеспечивает более темные оттенки черного, чем SDR. OLED-дисплеи обеспечивают бесконечную контрастность для обоих режимов. Хотя PQ выделяет больше битов для темных областей, это не универсальная функция HDR.
  • Более высокая битовая глубина. Некоторые профили HDR-видео (например, HDR10) используют 10- или 12-битные потоки, но это характерно для этих профилей и не является неотъемлемой частью HDR. Более высокая битовая глубина также распространена в других графических форматах.

HDR в первую очередь означает более высокую пиковую яркость. Этот запас HDR определяется как плавающая область относительно SDR. В традиционных HDR-видео часто используется фиксированный запас яркости, а в современных дисплеях – динамический, что может приводить к различиям в качестве. Такие технологии, как Ultra HDR и карты усиления, предлагают альтернативные варианты с эффективным использованием битов. Набор инструментов пользовательского интерфейса Android использует API extendedRangeBrightness для обеспечения HDR, даже с RGBA_8888.

Видео 📹

Advanced shared elements with shape morphing | Jetpack Compose Tips

Jetpack Compose теперь поддерживает расширенные переходы между общими элементами, сложную трансформацию фигур и анимацию появления. Разработчики могут настроить SharedTransitionLayout на верхнем уровне приложения и использовать Modifier.sharedBounds для связывания элементов.

Преобразование фигур – ключевая новая функция, реализованная с помощью библиотеки графических фигур AndroidX в Material 3. Для этого нужно создать объект Morph с заданными начальной и конечной фигурами, управлять его ходом с помощью animateFloat (из AnimatedVisibilityScope) и применить его в качестве клипа через пользовательский OverlayClip. Для эффектов появления используются skipToLookaheadSize и skipToLookaheadPosition. Все эти расширенные анимации также совместимы с предпросмотром для жеста "Назад".

Мультимодальный Gemini в Android Studio: разработка интерфейса на основе искусственного интеллекта

ИИ Gemini в Android Studio помогает разрабатывать интерфейсы, генерируя код на основе макетов (в том числе по изображениям), создавая предварительные версии Compose с синтетическими данными и улучшая существующие интерфейсы с помощью прямых команд.

Как использовать SDK с поддержкой SDK Runtime

В Android 14 появилась Среда выполнения SDK – новая технология, которая изолирует сторонние SDK в безопасной отдельной песочнице, чтобы повысить конфиденциальность и безопасность.

Для разработчиков:

  • В этом отдельном процессе выполняются SDK с поддержкой SDK Runtime.
  • SDK с поддержкой среды выполнения (RA) служат посредниками в приложении.
  • Загружайте SDK среды выполнения с помощью SdkSandboxManagerCompat, соблюдая ограничения (например, загрузка на переднем плане, однократная загрузка).
  • Инструменты Shim упрощают низкоуровневое межпроцессное взаимодействие.
  • Отрисовывайте пользовательский интерфейс из SDK среды выполнения с помощью SandboxedSdkView и SandboxedUiAdapter.
  • Запускайте действия из среды выполнения SDK с помощью SdkActivityLauncher.

WearOS Material 3 shape morphing | Jetpack Compose Tips

Wear OS Material 3 для Compose теперь упрощает преобразование фигур. Разработчики могут легко добавлять анимированные изменения формы к круглым кнопкам с помощью IconButtonDefaults.animatedShapes, создавать группы кнопок, которые анимируют изменения ширины с помощью компонента ButtonGroup и Modifier.animateWidth(), а также создавать вертикально прокручиваемые списки (TransformingLazyColumn), в которых элементы масштабируются и трансформируются с помощью TransformationSpec по мере приближения к краям экрана.

Выпуски AndroidX 🚀

Ниже приведены изменения в AndroidX, которые наиболее важны для разработчиков приложений Android.

Общее изменение, влияющее на библиотеки Compose

  • Минимальная версия SDK по умолчаниюminSdk повышена до API 23. Для androidx.compose animation, foundation, material, runtime и ui минимальная версия SDK по умолчанию повышена с API 21 до API 23. Это значит, что если вы используете последние альфа-версии этих библиотек Compose, то для вашего приложения неявно потребуется Android 6.0 (Marshmallow) или более поздняя версия.

Основные изменения для разработчиков Compose

  • Новый API сохранения (Compose Runtime). Представляет API сохранения, похожий на rememberSaveable, но для значений, которые покидают иерархию композиции без сериализации. Оно имеет более короткий срок жизни, чем сохраненные значения, и ведет себя аналогично ViewModel, предоставляя новый способ управления состоянием для composable-функций, которые могут входить в композицию и выходить из нее.
  • Улучшенные переходы между общими элементами (Compose Animation и UI). Новые API позволяют динамически включать и отключать общие элементы, учитывать текущие переходы и задавать альтернативные целевые границы, когда общий элемент удален. Также доступен новый Modifier.skipToLookaheadPosition для закрепления макетов.
  • Улучшенная предварительная выборка Pager (Compose Foundation). Теперь стратегия предварительной выборки Pager использует окно кеша (размер одной области просмотра), а не один элемент. По умолчанию включена начальная предварительная выборка. Элементы также дольше сохраняются для более плавной прокрутки.
  • Улучшенная обработка фокуса для мыши и сенсорной панели (Compose Foundation и UI). Теперь ComposeViews автоматически убирает фокус, когда событие нажатия указателя (мыши или сенсорной панели) происходит за пределами узла в фокусе. Вы можете отказаться от этого.
  • Настраиваемые прямоугольники фокуса (Compose Foundation). В FocusProperties теперь можно задавать область фокуса вместо использования граничной рамки по умолчанию. Это улучшает перемещение фокуса и логику удержания в поле зрения в прокручиваемых контейнерах.
  • LifecycleOwner Composable (Lifecycle). Новая composable-функция позволяет создавать экземпляры LifecycleOwner с ограниченной областью действия непосредственно в дереве пользовательского интерфейса. Это особенно полезно для независимого управления жизненными циклами компонентов и для таких библиотек, как Navigation.
  • Поддержка типов, допускающих значение NULL, в SavedStateHandle (Lifecycle и SavedState). Упрощено сохранение и восстановление свойств, допускающих значение NULL, благодаря встроенной поддержке в SavedStateHandle и SavedStateRegistryOwner.
  • Новое в LineHeightStyle.Mode.Tight (Compose Foundation и UI). Новый режим Tight позволяет уменьшить высоту строк, даже если при этом будут обрезаны высокие глифы. Это дает больше контроля над макетом текста.
  • Выбор слова двойным нажатием (Compose Foundation). Добавлена поддержка выбора слов двойным нажатием в SelectionContainer и BasicTextField.
  • Изменения в поведении WindowInsets (Compose UI и Foundation):
    ◦ Новый API WindowInsets.cutoutPath для получения пути к вырезу на экране.
    ◦ Флаг isWindowInsetsDefaultPassThroughEnabled удален. По умолчанию WindowInsets не используется, чтобы дочерние представления могли получать WindowInsets.
  • AndroidView requestRectangleOnScreen Исправление (Compose Foundation). Запросы, сделанные AndroidViews (например, EditText пытается остаться на экране), теперь правильно передаются в Compose.
  • Улучшенная прокрутка колесом мыши в двух измерениях (Compose Foundation и UI). Добавлена поддержка событий прокрутки колесом мыши в двух измерениях, а также новые API для тестирования и параметр для управления поведением.

Новые библиотеки и утилиты

  • androidx.core:core-backported-fixes (новая библиотека). С помощью этой библиотеки разработчики могут проверять, были ли на устройстве применены критические исправления ошибок (например, на уровне платформы, в частности, связанные с камерой). Это позволяет предлагать пользователям разные варианты в зависимости от того, устранена ли известная ошибка.

Другие важные изменения

  • Games Activity и Input. Добавлена поддержка страниц размером 16 КБ по умолчанию и поддержка мыши для GameActivity.
  • Позиционирование подсказок Material3. Добавлено больше поставщиков позиций для подсказок, что позволяет размещать их над, под, слева или справа от якоря.
  • Material3DatePickerИсправления. Теперь DatePicker учитывает региональные настройки при форматировании чисел. Исправлены проблемы с отображением текста с письмом справа налево.
  • Поддержка display_override для TWA (браузер). Добавлена поддержка свойства манифеста TWA display_override, что позволяет лучше контролировать отображение TWA.
  • Запуск начального URL во внешнем приложении (браузере). Добавлено намерение, позволяющее запускать начальный URL доверенного веб-приложения во внешнем браузере.

Android Developers Backstage

Вышел новый выпуск подкаста Android Developers Backstage.

Автозаполнение в Compose

В Jetpack Compose 1.8 значительно улучшены возможности автозаполнения за счет использования семантической системы Compose. Теперь разработчики могут легко интегрировать автозаполнение на уровне системы, просто помечая текстовые поля соответствующей семантикой типа контента (например, имя пользователя, пароль), что устраняет необходимость ручного управления деревом автозаполнения и повышает производительность.

 

Итак… 👋

На этом все. В этом выпуске мы рассказали о бета-версии 1 Android 16 QPR2, выпуске функций Android Studio Narwhal, Jetpack Compose 1.9, Media 3 1.8, Shape Morphing, автозаполнении в Compose и многом другом.

Следите за новостями из мира разработчиков Android!

Автор:
Продолжить чтение