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

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

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

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

Этот выпуск продолжает изменение периодичности наших выпусков: за ежегодным основным выпуском SDK во втором квартале следует незначительное обновление SDK.

Взаимодействие пользователей с системой и системный интерфейс

Пузыри

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

Bubbles.gif

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

В Beta 2 всплывающие чаты пока не полностью поддерживаются. Они появятся в одной из следующих сборок Android 17.

EyeDropper API

Новый системный EyeDropper API позволяет приложению запрашивать цвет любого пикселя на экране без разрешений на запись экрана.

Eyedropper_Tester.webp
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
  result -> if (result.resultCode == Activity.RESULT_OK) {
    val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
    // Use the picked color in your app
  }
}

fun launchColorPicker() {
  val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
  eyeDropperLauncher.launch(intent)
}

Инструмент выбора контактов

Новый инструмент выбора контактов на уровне системы, использующий намерение ACTION_PICK_CONTACTS, предоставляет временный доступ на чтение в рамках сеанса только к определенным полям данных, запрошенным пользователем. Это снижает необходимость в широких разрешениях READ_CONTACTS. Также можно выбрать личный или рабочий профиль устройства.

android-17-contact-picker.gif
val contactPicker = rememberLauncherForActivityResult(StartActivityForResult()) {
    if (it.resultCode == RESULT_OK) {
        val uri = it.data?.data ?: return@rememberLauncherForActivityResult
        // Handle result logic
        processContactPickerResults(uri)
    }
}

val dataFields = arrayListOf(Email.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE)
val intent = Intent(ACTION_PICK_CONTACTS).apply {
    putStringArrayListExtra(EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS, dataFields)
    putExtra(EXTRA_ALLOW_MULTIPLE, true)
    putExtra(EXTRA_PICK_CONTACTS_SELECTION_LIMIT, 5)
}

contactPicker.launch(intent)

Улучшенная совместимость захвата указателя с сенсорными панелями

Ранее, когда приложение захватывало указатель, сенсорные панели сообщали о событиях иначе, чем мыши. Они передавали информацию о расположении пальцев на панели, а не об относительных перемещениях, как мыши. Из-за этого было сложно обеспечить поддержку сенсорных панелей в играх от первого лица. Теперь по умолчанию система распознает движения указателя и жесты прокрутки при захвате сенсорной панели и сообщает о них так же, как о событиях мыши. Вы по-прежнему можете запрашивать старые подробные данные о местоположении пальцев, явно запрашивая захват в новом "абсолютном" режиме. 

// To request the new default relative mode (mouse-like events)
// This is the same as requesting with View.POINTER_CAPTURE_MODE_RELATIVE
view.requestPointerCapture()

// To request the legacy absolute mode (raw touch coordinates)
view.requestPointerCapture(View.POINTER_CAPTURE_MODE_ABSOLUTE)

Границы интерактивного селектора

Вызывая getInitialRestingBounds в ChooserSession Android, приложение может определить целевую позицию, которую занимает Chooser после завершения анимации и загрузки данных, что позволяет лучше настраивать пользовательский интерфейс.

Подключение и связь между устройствами

Перенос приложений между устройствами

Новый Handoff API позволяет указать состояние приложения, которое нужно возобновить на другом устройстве, например планшете Android. Если пользователь включил эту функцию, система синхронизирует состояние через CompanionDeviceManager и показывает предложение о переносе в панели запуска на устройствах поблизости. Эта функция позволяет пользователям легко переключаться между устройствами в экосистеме Android и продолжать работу с того места, на котором они остановились. Важно, что Handoff поддерживает как переходы между нативными приложениями, так и резервный переход из приложения на сайт. Это обеспечивает максимальную гибкость и позволяет пользователю выполнить действие, даже если нативное приложение не установлено на принимающем устройстве.

Расширенные API для определения расстояния

Мы добавляем поддержку двух новых технологий определения расстояния:

  1. UWB DL-TDOA позволяет приложениям использовать СШП для навигации в помещении. Этот API соответствует спецификации FIRA (Fine Ranging Consortium) 4.0 DL-TDOA и позволяет использовать навигацию внутри помещений с обеспечением конфиденциальности  (устройство не отслеживается по опорным точкам).
  2. Обнаружение устройств поблизости. Приложения могут использовать новую спецификацию определения расстояния, принятую WFA (WiFi Alliance). Эта технология обеспечивает повышенную надежность и точность по сравнению с существующей спецификацией определения расстояния на основе Wi-Fi Aware.

Улучшения тарифных планов

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

Основные функции, конфиденциальность и производительность

Доступ к локальной сети

В Android 17 появилось динамическое разрешение ACCESS_LOCAL_NETWORK, которое защищает пользователей от несанкционированного доступа к локальной сети. Поскольку это разрешение относится к существующей группе разрешений NEARBY_DEVICES, пользователям, которые уже предоставили другие разрешения из группы NEARBY_DEVICES, не будет предлагаться сделать это снова. Объявив и запросив это разрешение, ваше приложение сможет обнаруживать устройства в локальной вычислительной сети (LAN), например устройства умного дома или приемники трансляций, и подключаться к ним. Это не позволяет вредоносным приложениям использовать неограниченный доступ к локальной сети для скрытого отслеживания пользователей и цифровых отпечатков. У приложений, предназначенных для Android 17 или более поздней версии, теперь будет два способа поддерживать связь с устройствами в локальной сети: использовать системные средства выбора устройств, обеспечивающие конфиденциальность, чтобы пропускать запрос разрешения, или явно запрашивать это новое разрешение во время выполнения, чтобы поддерживать связь в локальной сети.

Трансляция изменения смещения часового пояса

В Android теперь есть надежный широковещательный интент ACTION_TIMEZONE_OFFSET_CHANGED, который активируется при изменении смещения часового пояса, например при переходе на летнее время. Они дополняют существующие интенты ACTION_TIME_CHANGED и ACTION_TIMEZONE_CHANGED, которые активируются при изменении временной метки Unix и идентификатора часового пояса соответственно.

Управление нейропроцессором и приоритет задач

Приложения, предназначенные для Android 17 и требующие прямого доступа к NPU, должны объявить FEATURE_NEURAL_PROCESSING_UNIT в манифесте, чтобы не потерять доступ к NPU. Это касается приложений, в которых используется делегат LiteRT NPU, SDK от поставщиков, а также устаревший NNAPI.

Поддержка ICU 78 и Unicode 17

Основные библиотеки интернационализации обновлены до ICU 78. Это расширило поддержку новых скриптов, символов и блоков эмодзи, а также позволило напрямую форматировать объекты time.

Защита одноразовых кодов из SMS

Android расширяет защиту одноразовых кодов из SMS, автоматически задерживая доступ к таким сообщениям. Ранее защита в основном была направлена на формат SMS Retriever, при котором доставка сообщений, содержащих хеш SMS Retriever, задерживается для большинства приложений на три часа. Однако для некоторых приложений, например приложения для обмена SMS по умолчанию и приложения, соответствующего хешу, эта задержка не действует. Теперь защита распространяется на все SMS с одноразовыми кодами. Для большинства приложений SMS с одноразовыми кодами будут доступны только через три часа. Это поможет предотвратить кражу кодов. Трансляция SMS_RECEIVED_ACTION будет заблокирована, а запросы к базе данных поставщика SMS – отфильтрованы. SMS-сообщение станет доступно этим приложениям после задержки. 

Задержка доступа к SMS-сообщениям в формате WebOTP

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

Задержка доступа к стандартным SMS с одноразовыми кодами

Если SMS с одноразовым кодом не использует формат WebOTP или SMS Retriever, то в большинстве приложений оно станет доступно только через три часа. Это изменение касается только приложений, предназначенных для Android 17 (уровень API 37) или более поздних версий.

Задержка не будет применяться к некоторым приложениям, например к приложению для обмена SMS по умолчанию, помощнику и сопутствующим приложениям для подключенных устройств.

Чтобы обеспечить бесперебойную работу, все приложения, которые считывают SMS для извлечения одноразовых кодов, должны перейти на API SMS Retriever или SMS User Consent.

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

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

Android Release Timeline.png

Год релизов

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

Android Release Timeline_2.png

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

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

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

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

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

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

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

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

по беспроводной сети.

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

Станьте частью сообщества

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

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