Android 12 Developer Preview 2: все, что нужно знать разработчикам приложений.
Наиль СадыковРазмещено Дэйвом Берком, вице-президентом по инженерным вопросам.

В прошлом месяце мы поделились первым Developer Preview Android 12, первым взглядом на следующую версию Android. Сегодня мы представляем вам новую сборку Обновления этого года, с новыми функциями и изменениями, которые вы можете опробовать в своих приложениях. В основе нашей программы тестирования ранних версий ОС лежит наша основная философия открытости и сотрудничества с Вами, нашим сообществом. Ваш вклад помогает нам сделать Android лучшей платформой для разработчиков и пользователей, так что продолжайте оставлять отзывы!
В Android 12 мы делаем ОС умнее, проще в использовании и производительнее, уделяя особое внимание конфиденциальности и безопасности. Мы также работаем над тем, чтобы предоставить вам новые инструменты для создания лучшего пользовательского опыта, независимо от того, пользуются ли они телефонами, ноутбуками, планшетами, телевизорами или автомобилями. В сегодняшнем обновлении можно найти новые API закругленных углов (rounded corners API), улучшенные API режима "картинка-в-картинке", улучшенное управление сопутствующими устройствами (например, фитнес-браслетами), упрощенное использование эффектов, таких как блюр и цветовой фильтр, элементы управления оверлеем приложений и многое другое.
В Android 12 Developer Preview 2 можно найти много интересного - прочитайте о нем и посетите сайт для разработчиков Android 12, чтобы узнать подробности и найти ссылки для скачивания для устройств Pixel. Для тех, кто уже использует Developer Preview 1 или 1.1, мы также предлагаем обновление по воздуху (OTA) до сегодняшней версии обновления.
Дайте нам знать, что вы думаете, и спасибо всем, кто уже поделился столь замечательными отзывами.
Надежность и безопасность
Мы продолжаем фокусироваться на предоставлении пользователям большей прозрачности и контроля, сохраняя при этом их устройства и данные в безопасности. В сегодняшнем обновлении мы добавили несколько новых функций, которые можно проверить и протестировать в ваших приложениях.
Средства управления оверлеем приложений - Окно системных оповещений Android дает возможность привлечь внимание пользователей к важным действиям, информируя о наложении поверх активного приложения. Однако эти окна могут помешать пользователю, поэтому уже сейчас мы требуем от приложений запрашивать разрешения перед их отображением. Теперь в Android 12 мы даем вам контроль над тем, могут ли эти всплывающие элементы приложений (оверлеи) отображаться поверх вашего контента. После того, как вы объявили новое разрешение, ваше приложение может вызвать Window#setHideOverlayWindows(), чтобы указать, что все окна TYPE_APPLICATION_OVERLAY должны быть скрыты, когда окно вашего приложения видно. Подробнее здесь.
Расширенная система безопасности для действий из уведомлений на экране блокировки - Android 12 добавляет более тонкий контроль конфиденциальности и безопасности для уведомлений, отображаемых на экране блокировки устройства. Теперь вы можете настроить действия уведомлений таким образом, чтобы при вызове с экрана блокировки они всегда генерировали вызов аутентификации (ввода ключа экрана блокировки). Это расширяет средства управления отображением уведомлений (notification visibility), уже доступные через API уведомлений. Например, это позволяет почтовому приложению требовать ввод ключа экрана блокировки перед тем, как удалить сообщение или пометить его как прочитанное. Подробнее здесь.
Доступ к дайджестам приложений - Для приложений, которым необходимо проверить целостность пакетов приложений, установленных на Android-устройствах, мы представляем новый API, позволяющий напрямую запрашивать у платформы контрольную сумму установленного приложения. Вы можете выбрать один из нескольких алгоритмов дайджеста, таких как SHA256, SHA512, Merkle Root и другие. Чтобы запросить контрольную сумму, вызовите PackageManager.requestChecksums() с именем пакета приложения, нужными вам типами контрольных сумм, сертификатами установщика, которому вы доверяете, и обработчиком (listener), который будет получать контрольные суммы. Платформа возвращает соответствующие контрольные суммы, либо предварительно рассчитанные и предоставленные программой установщика (например, Google Play), либо рассчитанные платформой. Результаты фильтруются на основе гайдлайнов видимости пакетов (package visibility), поэтому вам необходимо объявить интересующие вас пакеты в вашем манифесте. Благодаря этому новому API обеспечивается более простой и эффективный способ получения контрольных сумм, а также стабильность стандартного, публичного API, оптимизированного по скорости и безопасности. Для обеспечения обратной совместимости мы работаем над библиотекой Jetpack, которая предоставляет тот же функционал, что и API 15 - ожидайте больше подробностей в ближайшее время.
Подробнее об этих и других изменениях в части конфиденциальности и безопасности вы можете прочитать здесь.
Улучшенные инструменты для работы с интерфейсом
Мы работаем над тем, чтобы предоставить вам больше инструментов, которые помогут вам обеспечить пользователям блестящие ощущения и лучшую производительность. Вот некоторые из изменений в сегодняшнем обновлении.
Поддержка закругленных углов - Во многих современных устройствах используются экраны с закругленными углами, что придает им свежий современный вид, а также вводит некоторые дополнительные аспекты для разработчиков приложений. Чтобы получить отличный UX на этих устройствах, разработчикам необходимо учитывать закругленные углы устройства и регулировать любые близлежащие элементы пользовательского интерфейса, чтобы предотвратить их усечение.

Чтобы помочь в этом, мы вводим новые API, которые позволят вам запрашивать наличие закругленных углов и получать сведения о них. В RoundedCorner хранятся детали касательно углов, включая их радиус, центральную точку и другие данные. Вы можете вызвать Display.getRoundCorner(), чтобы получить абсолютные детали для каждого закругленного угла. Вы также можете вызвать WindowInsets.getRoundedCorner() для получения деталей угла относительно границ вашего приложения. С их помощью вы можете управлять положением элементов пользовательского интерфейса и содержимым по мере необходимости. Больше здесь.
Улучшения режима "картинка в картинке" (PIP) - для людей, использующих навигацию жестами, мы улучшили то, как приложения переходят в режим "картинка в картинке" (PIP) при активации жеста возврата на домашний экран. Если в приложении включена функция авто-PIP, то теперь система напрямую переводит приложение в режим "картинка в картинке", вместо того, чтобы дожидаться завершения анимации возвращения на домашний экран и последующего отображения PIP. Это делает переход более плавным и улучшает воспринимаемую производительность. Мы также улучшили изменение размера окна PIP для контента не являющимся видео. Теперь приложения могут включить функцию плавного изменения размера, чтобы позволить системе изменять размер PIP Activity, когда это необходимо. Android 12 также поддерживает функцию скрытия окна PiP, перетаскивая его на левый или правый край экрана. Кроме того, чтобы сделать окна PIP проще в управлении, мы обновили модели поведения при одинарном касании. Однократное нажатие теперь отображает элементы управления, а двойное нажатие переключает размер окна PIP. Подробнее здесь.
Сохранение работы приложений сопутствующих устройств - Для приложений, которые управляют сопутствующими устройствами, такими как смарт-часы и фитнес-трекеры, убедиться в том, что приложение запущено и подключено, когда соответствующее вспомогательное устройство находится поблизости, может оказаться непростой задачей. Для упрощения этой задачи мы расширяем Companion Device Manager новым API CompanionDeviceService. Приложения, управляющие сопутствующими устройствами, могут использовать этот сервис, чтобы позволить системе пробуждать приложение всякий раз, когда сопутствующее устройство находится поблизости. Система поддерживает привязку сервиса, когда устройство находится поблизости, и уведомляет сервис, когда устройство входит и выходит из зоны действия или выключается, чтобы позволить приложению обновить состояние по мере необходимости. Приложения также могут использовать новый профиль сопутствующего устройства при подключении к часам, что упрощает процесс регистрации, объединяя соответствующие разрешения в один запрос (grant). Подробнее здесь.
Улучшения в оценке полосы пропускания - Для разработчиков, которым необходимо знать типовую полосу пропускания, доступную каждому пользователю, теперь мы предоставляем улучшенную оценку полосы пропускания. Мы усовершенствовали существующие API оценки полосы пропускания, чтобы вы могли получить оценку совокупной пропускной способности для каждого оператора или Wi-Fi SSID, типа сети и уровня сигнала для всех пользователей устройства. Новая модель оценки, скорее всего, будет проще и точнее, чем большинство других методов оценки, так что испытайте ее и дайте нам знать, как она работает у вас.
Упрощенное использование блюра, цветовых фильтров и других эффектов - В Android 12 мы упрощаем применение распространенных графических эффектов к вашим Views и иерархиям рендеринга. Вы можете использовать RenderEffect для применения блюра, цветовых фильтров и т.д. к любому RenderNode. Вы можете комбинировать эти эффекты в цепь эффектов (которые по порядку составляют внутренний и внешний эффект) или смешивать их. Вы также можете применять эффекты непосредственно к Views (используя базовый RenderNode), вызвав View.setRenderEffect(RenderEffect).
Применение Блюра к View в помощью RenderEffect :
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Это позволит вам размыть содержимое ImageView без необходимости получать bitmap данные, обрабатывать изображение, создавать новое Bitmap и устанавливать его обратно в ImageView.
Испытайте их и дайте знать, что вы думаете! Больше здесь.
Вы также можете создать эффект матового стекла для фона окна, используя новый API Window.setBackgroundBlurRadius(). С помощью этого вы можете задать радиус для управления плотностью и областью действия, а платформа применяет размытие к фоновому содержимому только в пределах окна вашего приложения. Вы также можете использовать BlurBehindRadius для размывания всего содержимого за окном, чтобы создать эффект глубины для плавающего окна.

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

Сейчас также самое время приступить к тестированию на совместимость и определить любые работы, которые вам предстоит выполнить. Мы рекомендуем выполнить эту работу заранее, чтобы вы могли выпустить совместимое обновление для Android 12 Beta 1. На данный момент нет необходимости изменять целевойSdkVersion вашего приложения, но мы рекомендуем использовать behavior change toggles (переключатели изменения поведения), чтобы получить предварительное представление о том, как изменения в Android 12 могут повлиять на ваше приложение .
Как только мы достигнем этапа Стабильности Платформы в августе 2021 года, все модели поведения системы, API SDK/NDK и не-SDK уже будут иметь финальный вид. На этом этапе вы можете завершить окончательное тестирование на совместимость и выпустить полностью совместимую версию вашего приложения, SDK или библиотеки. Более подробная информация о графике для разработчиков здесь.

Начните работу с Android 12
Developer Preview имеет все необходимое для того, чтобы опробовать функции Android 12, протестировать свои приложения и дать нам обратную связь. Уже сегодня вы можете начать работу с прошивки образа системы на устройства Pixel 3 / 3 XL, Pixel 3a / 3a XL, Pixel 4 / 4 XL, Pixel 4a / 4a 5G, Pixel 5 или с помощью эмулятора Android. Если вы уже установили превью сборку на ваш Pixel, вы автоматически получите будущие обновления по воздуху для всех последующих превью и бета-версий. Подробнее о том, как получить Android 12, можно узнать здесь.
Вы также можете протестировать свои приложения на Android TV с помощью сегодняшнего релиза и попробовать все новые возможности Google TV. Узнайте больше здесь и начните работу вместе с пакетом для разработчиков ADT-3.
Для получения полной информации посетите сайт разработчиков Android 12.
Перевод записи в блоге Android Developers: Android 12 Developer Preview 2
Специально для Telegram-канала Google Pixels