Новости о продуктах

Первая бета-версия Android 17

Время на чтение: 7 минут
Посмотреть профиль пользователя Matthew McCullough
Matthew McCullough Вице-президент, управление продуктами, разработчик Android

Сегодня мы выпускаем первую бета-версию Android 17. Мы продолжаем развивать платформу, уделяя особое внимание конфиденциальности, безопасности и производительности. В этой сборке мы продолжили работу над адаптивностью приложений Android, значительно улучшили возможности камеры и мультимедиа, добавили новые инструменты для оптимизации подключения и расширили профили для дополнительных устройств. Этот выпуск также знаменует собой фундаментальный сдвиг в том, как мы представляем новые выпуски сообществу разработчиков, – от традиционной модели предварительной версии для разработчиков к программе Android Canary.

Что дальше?

Вместо традиционной предварительной версии для разработчиков Android теперь использует канал Canary. Новая модель непрерывного тестирования имеет три основных преимущества:

  • Быстрый доступ. Функции и API появляются в Canary сразу после прохождения внутреннего тестирования, а не в ежеквартальном выпуске.
  • Повышенная стабильность. Раннее тестирование в Canary позволяет улучшить бета-версию, в которой новые API и изменения в поведении ближе к финальным.
  • Упрощенное тестирование. Canary поддерживает беспроводные обновления (больше не нужно прошивать вручную) и, как отдельный канал обновления, легче интегрируется с рабочими процессами непрерывной интеграции и дает вам возможность сразу же оставить отзыв о предстоящих потенциальных изменениях.

График выпуска Android 17

Мы планируем быстро перейти от этой бета-версии к стабильной платформе. Это должно произойти в марте. На этом этапе мы выпустим окончательные версии API SDK/NDK и в основном окончательные версии функций, предназначенных для приложений. У вас будет несколько месяцев до финального выпуска, чтобы завершить тестирование.

timeline1.png

Год релизов

Мы планируем, что Android 17 будет получать обновления в виде ежеквартальных выпусков. Запланированные изменения, которые могут нарушить работу приложений, будут внесены только в предстоящем выпуске во втором квартале. В четвертом квартале мы планируем выпустить минорное обновление SDK с дополнительными API и функциями.

timeline2.png

Ограничения на ориентацию и изменение размера

С выпуском бета-версии Android 17 мы переходим к следующему этапу плана по адаптации: в Android 17 (уровень API 37) разработчики больше не смогут отключать ограничения на ориентацию и изменение размера на устройствах с большим экраном (sw > 600 dp).

Если ваше приложение предназначено для SDK 37, оно должно быть готово к адаптации. Пользователи ожидают, что приложения будут работать везде, будь то планшет в режиме многозадачности, складное устройство или компьютер с многооконным режимом. При этом интерфейс должен заполнять все пространство и учитывать положение устройства.

Основные изменения в SDK 37

Приложения, поддерживающие Android 17, должны быть совместимы с прекращением поддержки атрибутов манифеста и API среды выполнения, представленных в Android 16. На больших экранах (меньший размер ≥ 600 dp) будут игнорироваться следующие атрибуты и API:

Атрибуты манифеста и APIИгнорируемые значения
screenOrientationportrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
setRequestedOrientation()portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
resizeableActivityвсе
minAspectRatioвсе
maxAspectRatioвсе

Исключения и пользовательские настройки

Эти изменения касаются только больших экранов и не распространяются на экраны меньше sw600dp (включая телефоны традиционного форм-фактора). Кроме того, эти ограничения не распространяются на приложения, которые относятся к категории игр (на основе флага android:appCategory).

Также важно отметить, что пользователи сохраняют контроль над своими данными. Пользователи могут явно включить или отключить режим работы по умолчанию для приложения в настройках соотношения сторон.

Изменения в конфигурации

Чтобы улучшить совместимость приложений и свести к минимуму прерывания воспроизведения видео, пропущенные входные данные и другие типы потери состояния, мы обновляем режим работы по умолчанию для воссоздания Activity. Начиная с Android 17 система больше не будет по умолчанию перезапускать действия при определенных изменениях конфигурации, которые обычно не требуют повторного создания интерфейса, включая CONFIG_KEYBOARD, CONFIG_KEYBOARD_HIDDEN, CONFIG_NAVIGATION, CONFIG_UI_MODE (когда меняется только UI_MODE_TYPE_DESK), CONFIG_TOUCHSCREEN и CONFIG_COLOR_MODE. Вместо этого выполняющиеся действия будут получать обновления через onConfigurationChanged. Если для перезагрузки ресурсов при таких изменениях требуется полный перезапуск приложения, теперь необходимо явно включить эту функцию с помощью нового атрибута манифеста android:recreateOnConfigChanges. Он позволяет указать, какие изменения конфигурации должны запускать полный жизненный цикл объекта activity (от остановки до уничтожения и повторного создания), вместе со связанными константами mcc, mnc и новыми константами keyboard, keyboardHidden, navigation, touchscreen и colorMode.

Подготовка приложения

Мы выпустили инструменты и документацию, которые помогут вам в этом. В нашем блоге есть статья, в которой рассказывается, как решать распространенные проблемы. Приложения должны поддерживать горизонтальную и вертикальную ориентацию для окон с любым соотношением сторон. Ограничивать ориентацию или соотношение сторон будет нельзя. Рекомендуем протестировать приложение с помощью Android 17 Beta 1 в эмуляторах Pixel Tablet или Pixel Fold (с конфигурацией targetSdkPreview = "CinnamonBun") или с помощью тестирования на совместимость, чтобы включить UNIVERSAL_RESIZABLE_BY_DEFAULT на устройствах с Android 16.

Эффективность

MessageQueue без блокировки

В Android 17 приложения, использующие SDK 37 или более поздней версии, получат новую реализацию android.os.MessageQueue, которая не использует блокировку. Новая реализация повышает производительность и снижает количество пропущенных кадров, но может нарушить работу клиентов, которые используют закрытые поля и методы MessageQueue.

Поколенческий сборщик мусора

В Android 17 добавлена поколенческая сборка мусора для сборщика мусора Concurrent Mark-Compact в ART. Эта оптимизация позволяет чаще выполнять менее ресурсоемкие сборки мусора в молодом поколении наряду со сборками мусора во всей куче. Цель – снизить общую нагрузку на ЦП и сократить время, затрачиваемое на сборку мусора. Улучшения ART также доступны более чем на миллиарде устройств с Android 12 (уровень API 31) и более поздних версий благодаря обновлениям системы через Google Play.

Статические конечные поля теперь действительно конечные

Начиная с Android 17 приложения, поддерживающие Android 17 и более поздние версии ОС, не смогут изменять поля static final. Это позволит среде выполнения более активно применять оптимизацию производительности. Попытка сделать это с помощью рефлексии (и глубокой рефлексии) всегда будет приводить к ошибке IllegalAccessException. Если вы попытаетесь изменить их с помощью методов SetStatic<Type>Field в JNI, приложение сразу же завершит работу.

Ограничения на просмотр специальных уведомлений

Чтобы снизить использование памяти, мы ограничиваем размер специальных представлений уведомлений. Это обновление устраняет лазейку, которая позволяла приложениям обходить существующие ограничения с помощью URI. Это поведение зависит от целевой версии SDK и действует для приложений, ориентированных на API 37 и выше.

Новые триггеры ProfilingManager для отладки производительности

Мы добавили в ProfilingManager несколько новых системных триггеров, которые помогут вам собирать подробные данные для отладки проблем производительности. Это триггеры TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM и TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.

Чтобы узнать, как настроить новые системные триггеры, ознакомьтесь с документацией по профилированию на основе триггеров и получению и анализу данных профилирования.

Медиа и камера

В Android 17 появились инструменты профессионального уровня для приложений камеры и медиа, например плавные переходы и стандартизированная громкость.

Динамическое обновление сеанса камеры

Мы добавили updateOutputConfigurations() в CameraCaptureSession. Это позволяет динамически подключать и отключать поверхности вывода без необходимости перенастраивать весь сеанс съемки. Это изменение позволяет плавно переключаться между режимами камеры (например, фото- и видеосъемкой) без затрат памяти и усложнения кода, связанных с настройкой и удержанием всех выходных поверхностей камеры, которые могут понадобиться вашему приложению во время запуска камеры. Это помогает устранить видимые пользователю сбои или зависания во время работы.

fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs:  List<OutputConfiguration>)) {
    // Dynamically update the session without closing and reopening
    try {
        
        // Update the output configurations
        session.updateOutputConfigurations(newOutputConfigs)
    } catch (e: CameraAccessException) {
        // Handle error
    }
}

Метаданные логического устройства с несколькими камерами

При работе с логическими камерами, которые объединяют несколько физических датчиков камеры, теперь можно запрашивать дополнительные метаданные со всех активных физических камер, задействованных в съемке, а не только с основной. Раньше для получения метаданных с дополнительных активных камер (например, при переключении объектива для масштабирования, когда активна ведомая камера) приходилось использовать обходные пути, иногда выделяя ненужные физические потоки. Эта функция добавляет новый ключ LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS в CaptureRequest и CaptureResult. Если включить этот ключ в CaptureRequest, то TotalCaptureResult будет содержать метаданные с этих дополнительных активных физических камер. Чтобы получить доступ к этим метаданным, используйте метод TotalCaptureResult.getPhysicalCameraTotalResults(). Это позволит вам оптимизировать использование ресурсов в приложениях камеры.

Поддержка Versatile Video Coding (VVC)

В Android 17 добавлена поддержка стандарта Versatile Video Coding (VVC). В частности, в MediaFormat добавлен MIME-тип video/vvc, в MediaCodecInfo – новые профили VVC, а в MediaExtractor – поддержка VVC. Эта функция будет доступна на устройствах с поддержкой аппаратного декодирования и совместимыми драйверами.

Постоянное качество видеозаписи

В MediaRecorder добавлен метод setVideoEncodingQuality(). Это позволяет настроить режим постоянного качества (CQ) для видеокодеров, что дает вам более точный контроль над качеством видео, помимо простых настроек битрейта.

Усиление защиты фонового аудио

Начиная с Android 17 аудиофреймворк будет ограничивать фоновые действия со звуком, включая воспроизведение, запросы на аудиофокус и API изменения громкости. Это нужно, чтобы такие действия выполнялись только по инициативе пользователя.

Если приложение попытается вызвать API аудио, когда оно находится в недопустимом жизненном цикле, API воспроизведения аудио и изменения громкости не сработают без вызова исключения или сообщения об ошибке. API аудиофокуса вернет код ошибки AUDIOFOCUS_REQUEST_FAILED.

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

Прекращение поддержки атрибута cleartextTrafficPermitted

Атрибут android:usesCleartextTraffic больше не поддерживается. Если ваше приложение предназначено для Android 17 или более поздней версии и использует usesCleartextTraffic="true" без соответствующей конфигурации сетевой безопасности, по умолчанию оно будет запрещать трафик открытого текста. Рекомендуем перейти на файлы конфигурации сетевой безопасности, чтобы получить более точный контроль.

Гибридная криптография HPKE

Мы представляем общедоступный интерфейс поставщика услуг (SPI) для реализации гибридной криптографии HPKE, обеспечивающей безопасную связь с использованием комбинации открытого ключа и симметричного шифрования (AEAD).

Связь и телекоммуникации

Улучшенный журнал VoIP-звонков

Мы добавляем возможность управлять настройками интеграции журнала VoIP-вызовов в приложениях. В частности, в системном номеронабирателе поддерживаются URI аватаров звонящего и участников, что позволяет пользователям точнее настраивать конфиденциальность списка вызовов и улучшает визуальное отображение интегрированных списков вызовов VoIP.

Определение расстояния и близости по Wi-Fi

Измерение расстояния по Wi-Fi теперь поддерживает новые возможности обнаружения близости, непрерывное измерение расстояния и безопасное обнаружение одноранговых устройств. Обновления для определения расстояния с помощью Wi-Fi Aware включают новые API для дескрипторов одноранговых узлов и кеширования PMKID для безопасного определения расстояния 11az.

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

Обновления для приложений на дополнительных устройствах

Чтобы улучшить распознавание устройств и обработку разрешений, мы добавили в CompanionDeviceManager два новых профиля:

  • Медицинские изделия. Этот профиль позволяет мобильным приложениям, которые относятся к медицинским изделиям, запрашивать все необходимые разрешения одним нажатием, что упрощает процесс настройки.
  • Фитнес-трекеры. Профиль DEVICE_PROFILE_FITNESS_TRACKER позволяет сопутствующим приложениям явно указывать, что они управляют фитнес-трекером. Это позволяет пользователям видеть разные значки и при этом использовать существующие разрешения для ролей на часах.

Кроме того, в CompanionDeviceManager теперь есть единое диалоговое окно для связывания устройств и запросов разрешения "Устройства поблизости". Вы можете использовать новый метод setExtraPermissions в AssociationRequest.Builder, чтобы объединить запросы разрешений на доступ к устройствам поблизости с существующим процессом связывания. Это позволит сократить количество диалоговых окон, которые видит пользователь.

Начало работы с Android 17

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

Если вы участвуете в программе бета-тестирования Android, вам будет предложено установить бета-версию 1 по беспроводной сети.

Если вы хотите установить стабильную версию 26Q1 и выйти из программы бета-тестирования, проигнорируйте беспроводное обновление до 26Q2 Beta 1 и дождитесь выпуска 26Q1.

Мы будем рады вашим отзывам. Сообщить о проблеме или отправить запрос на добавление функции можно на странице для отправки отзыва. Чем раньше мы получим ваш отзыв, тем больше сможем сделать для финального выпуска.

Для разработки приложений под Android 17 рекомендуем использовать последнюю предварительную версию Android Studio (Panda). После настройки рекомендуем сделать следующее:

  • Скомпилируйте код с новым SDK, протестируйте его в средах непрерывной интеграции и сообщите о проблемах в системе отслеживания ошибок на странице отзывов.
  • Проверьте, совместимо ли ваше приложение с Android 17 и затронут ли его изменения в этой версии ОС. Для этого установите приложение на устройство или эмулятор с Android 17 и тщательно протестируйте его.

Мы будем регулярно обновлять предварительные и бета-версии образов системы и SDK на протяжении всего цикла выпуска Android 17. После установки бета-версии вы будете автоматически получать по беспроводной сети все последующие предварительные и бета-версии.

Полную информацию вы найдете на сайте для разработчиков Android 17.

Присоединиться к обсуждению

Ваши отзывы – это самое ценное, что у нас есть. Они помогают нам двигаться к стабильной платформе и финальному стабильному выпуску Android 17, который состоится в этом году. Если вы участник программы раннего доступа на канале Canary или разработчик приложений, тестирующий бета-версию 1, присоединяйтесь к нашим сообществам и оставляйте отзывы. Мы предлагаем вам новую музыку на основе ваших предпочтений.

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