Первый Developer Preview Android 12
Наиль Садыков
Размещено Дэйвом Берком, вице-президентом по инженерным вопросам.
Каждый день приложения для Android помогают миллиардам людей работать, играть, общаться и творить на самых разных устройствах - от телефонов и ноутбуков до планшетов, телевизоров и автомобилей. По мере того, как растет число людей, которые полагаются на создаваемый вами опыт, возрастают и их ожидания. Именно поэтому мы делимся с вами предварительными релизами Android: ваши отзывы помогают нам создавать лучшую платформу для ваших приложений и всех людей, которые их используют. Сегодня мы выпускаем первый Developer Preview Android 12, новую версию Android, для тестирования и обратной связи.
С каждой версией мы работаем над тем, чтобы сделать ОС умнее, проще в использовании и производительнее, обеспечивая при этом безопасность и конфиденциальность. В Android 12 разработчики также работают над созданием новых инструментов для получения пользователями отличных впечатлений от использования ОС. Начиная с таких вещей, как совместимое медиакодирование, которое помогает вашему приложению работать с новейшими форматами видео, если вы еще не добавили их поддержку, и облегчения копирования/вставки мультимедийного контента в ваши приложения, например, изображений и видео. Мы также добавляем средства защиты конфиденциальности и оптимизируем производительность, чтобы сохранять производительность ваших приложений.
Сегодняшний первый превью является только началом для Android 12, и у нас будет еще чем поделиться по мере выпуска превью ОС. Читайте дальше, чтобы узнать, что нового в Android 12, а также посетите сайт для разработчиков Android 12, чтобы узнать подробности о том, как скачать превью ОС для Pixel и хронологию выпуска. Как всегда, крайне важно получить от вас обратную связь как можно скорее, чтобы помочь нам учесть ее в конечном продукте, так что дайте нам знать, что вы думаете!
Наряду с той работой, которую мы делаем в Android 12, в конце этого месяца появится еще один важный инструмент, который поможет вам упростить процесс создания великолепного пользовательского интерфейса: Jetpack Compose, наш новейший инструментарий для создания нативного пользовательского интерфейса. Присоединяйтесь к нам на #TheAndroidShow, чтобы посмотреть "за кулисами" на Jetpack Compose, в прямом эфире 24 февраля в 9:00, задавайте свои вопросы о Jetpack Compose в твиттере с помощью хештега #TheAndroidShow, чтобы получить ответы на них в прямом эфире на шоу.
Надежность и безопасность
Конфиденциальность лежит в основе всего, что мы делаем, и в Android 12 мы продолжаем фокусироваться на повышении прозрачности и предоставлении пользователям контроля, сохраняя при этом их устройства и данные в безопасности. В сегодняшнем релизе мы добавили новые элементы управления идентификаторами, которые можно использовать для мониторинга, обеспечения безопасности компонентов приложения и многое другое. Эти изменения могут повлиять на ваши приложения, поэтому мы рекомендуем протестировать их как можно скорее. Следите за дополнительными функциями конфиденциальности и безопасности, которые появятся в более поздних предварительных релизах.
Новейшие SameSite cookie-файлы в WebView - В соответствии с изменениями, внесенными в Chrome и другие браузеры, WebView включает новые SameSite cookie-файлы , чтобы обеспечить дополнительную безопасность и конфиденциальность, а также предоставить пользователям большую прозрачность и контроль над тем, как cookie-файлы могут использоваться на разных сайтах. Подробнее здесь.
Ограниченный Netlink MAC - Мы продолжаем помогать разработчикам в переходе на защищающие конфиденциальность обнуляемые идентификаторы. В результате многопользовательской работы по облегчению миграции Netlink MAC, в Android 11 мы ограничили доступ к нему на уровне API 30, а в Android 12 мы применяем ограничение для всех приложений - независимо от уровня SDK. Подробнее здесь.
Безопасный экспорт компонентов - Чтобы предотвратить непреднамеренный экспорт действий, сервисов и получателей приложениями, мы изменяем стандартную обработку атрибута android:export, чтобы сделать ее более понятной. С этим изменением компоненты, которые объявляют один или несколько фильтров намерений, теперь должны явно объявлять атрибут android:export. Во избежание ошибок при установке, связанных с этим изменением, необходимо проверить компоненты, указанные в манифесте. Подробнее здесь.
Более безопасная обработка намерений (Intents ) - чтобы сделать обработку PendingIntents более безопасной, Android 12 требует от приложений явным образом объявлять флаг mutability, либо FLAG_MUTABLE, либо новый FLAG_IMMUTABLE, для каждого PendingIntents. Подробнее здесь.
Подробнее об этих и других изменениях в области конфиденциальности и безопасности можно прочитать здесь.
Инструменты для улучшения пользовательского опыта
В Android 12 мы улучшаем ключевые области, чтобы предоставить пользователям лучший опыт использования и производительность. Вот некоторые из них на текущий момент.
Совместимое мультимедийное транскодирование - В связи с преобладанием аппаратных кодеров HEVC на мобильных устройствах, приложения для работы с камерами постепенно переходят на формат HEVC, который предлагает значительное улучшение качества и сжатия по сравнению со старыми кодеками. Большинство приложений должны поддерживать HEVC, но для приложений, которые не поддерживают его, мы внедряем совместимое транскодирование медиа.
С помощью этой функции приложение, не поддерживающее HEVC, может автоматически перекодировать файл в AVC, формат, который имеет широкую совместимость. Процедура транскодирования занимает время, зависящее от видео и аппаратных характеристик устройства. В качестве примера можно привести одноминутное видео 1080p со скоростью 30 кадров в секунду, транскодирование которого занимает около 9 секунд на Pixel 4. Вы можете воспользоваться транскодированием, просто объявив медиа-форматы, которые не поддерживаются вашими приложениями. Для разработчиков мы настоятельно рекомендуем, чтобы ваши приложения поддерживали HEVC, а если это невозможно, включите совместимое транскодирование медиа. Функция будет активна на всех устройствах, использующих формат HEVC для захвата видео. Мы будем рады услышать обратную связь по данной функции. Подробнее здесь.
Поддержка изображений формата AVIF - Чтобы обеспечить наивысшее качество изображения при оптимальном сжатии, Android 12 представляет платформу поддержки формата AV1 Image File Format (AVIF). AVIF - это формат контейнера для изображений и последовательностей изображений, закодированных с помощью AV1. Как и другие современные форматы изображений, AVIF использует преимущества внутрикадрового кодирования от сжатия видео. Это значительно повышает качество изображения при том же размере файла по сравнению со старыми форматами, такими как JPEG.


Оптимизация Foreground сервисов - Службы Foreground представляют собой важный инструмент в работе приложений предназначенный для управления определенными типами задач, о котором пользователь осведомлен (например отображение уведомления при проигрывании музыки в приложении-плеере), но при их чрезмерном использовании они могут влиять на производительность и даже привести к непреднамеренному закрытию приложения. Чтобы обеспечить пользователям наилучший опыт, мы будем блокировать запуск служб Foreground из фонового режима (Background) для приложений, работающих на новой платформе. Чтобы облегчить переход от этой схемы, мы внедряем в JobScheduler новый ExpeditedJob, который повышает приоритет процесса и доступа к сети и сразу же начинает работать, независимо от ограничений по электропитанию, таких как Battery Saver или Doze. Для обеспечения обратной совместимости мы также встроили ExpeditedJob в актуальный релиз библиотеки Jetpack WorkManager. Также, для сокращения отвлекающих моментов для пользователей, теперь задержка отображения некоторых уведомлений Foreground сервисов занимает до 10 секунд. Это даст краткосрочным задачам возможность завершить работу до того, как будут показаны их уведомления. Подробнее здесь.
Вставка мультимедийного контента - Пользователям нравятся изображения, видео и другой экспрессивный контент, но вставлять и перемещать этот контент в приложениях не всегда легко. Чтобы упростить процесс загрузки мультимедийного контента для ваших приложений, мы представляем новый унифицированный API, который позволит вам загружать контент из любого источника: буфера обмена, клавиатуры или с помощью перетаскивания. Вы можете подключить новый интерфейс, OnReceiveContentListener, к компонентам пользовательского интерфейса и получить ответный запрос (callback ), когда контент вставляется через какой-либо механизм. Этот ответный запрос превращается в единое место для вашего кода, где происходит вставка всего содержимого, от простого и стилизованного текста до разметки, изображений, видео, аудиофайлов и многого другого. Для обратной совместимости мы добавили унифицированный API для AndroidX. Подробнее здесь.
Тактильные аудио-эффекты - В Android 12 приложения смогут обеспечить тактильную аудио отдачу посредством вибро-мотора телефона. Сила и частота вибраций определяются с учётом аудио сессии, что позволяет создавать более глубокие игровые и аудио впечатления. Например, приложение для видеозвонков может использовать пользовательские мелодии для определения вызывающего абонента через тактильную отдачу, или вы можете имитировать пересеченную местность в гоночной игре. Подробнее здесь.
Улучшения API полноэкранного режима для навигации с помощью жестов - Мы упростили полноэкранный режим, чтобы навигация жестами была более простой и логичной, например, при просмотре видео, чтении книги или во время игры. Мы по-прежнему занимаемся вопросами предохранения приложений от случайных действий жестами во время игры в полноэкранном режиме, но во всех других сценариях полноэкранного режима (например, при просмотре видео, чтении, фотогалерее), для приложений, нацеленных на новую платформу, мы внедряем нововведения, чтобы позволить пользователям перемещаться по своему телефону одним свайпом. Подробнее здесь.
Обновления пользовательского интерфейса уведомлений - Мы обновляем дизайн уведомлений, чтобы сделать их более современными, простыми в использовании и более функциональными. В этом первом превью вы заметите изменения начиная с отрисовки и элементов управления и заканчивая самим макетом. Мы также оптимизируем переходы и анимацию по всей системе, чтобы сделать их более плавными. В рамках обновлений для приложений, нацеленных на Android 12, мы украшаем уведомления пользовательским контентом с иконкой и расширяем возможности для обеспечения соответствия всем остальным уведомлениям. Подробнее здесь.
Более быстрые и отзывчивые уведомления - Когда пользователи нажимают на уведомление, они ожидают, что оно откроет мгновенно - чем быстрее, тем лучше. Чтобы оправдать это ожидание, разработчики должны удостовериться, что Activity (Действие) нажатия на уведомление запускается напрямую, Чтобы оправдать это ожидание, разработчики должны удостовериться, что активизация Activity начинается напрямую, а не с помощью "батутов" (trampolines) - промежуточного сервиса для запуска Activity. Использование trampolines может привести к значительным задержкам и повлиять на удобство работы пользователя. Чтобы сохранить отзывчивость уведомлений, Android 12 будет блокировать trampolines уведомления, не позволяя им запускать свою целевую Activity, и мы просим разработчиков уйти от этого шаблона. Изменение относится только к приложениям, предназначенным для новой платформы, но применительно ко всем приложениям мы будем показывать всплывающее уведомление (toast), чтобы сделать trampolines видимыми как для вас, так и для пользователей. Подробнее здесь.
Улучшение вызовов IPC Binder - В рамках работы над производительностью мы сосредоточились на снижении вариативности системы. Мы изучили распределение задержек и рабочей нагрузки и провели оптимизацию. При этом мы нацелились на улучшение системных вызовов, добавив облегченные стратегии кэширования и сконцентрировавшись на удалении блокировок для оптимизации распределения задержек. Это дало примерно 2-х кратный прирост производительности на вызовах Binder в целом, со значительными улучшениями в конкретных вызовах, например, 47-кратное улучшение в refContentProvider(), 15-кратное улучшение в releaseWakeLock(), и 7.9-кратное улучшение в JobScheduler.schedule().
Совместимость приложений
Мы работаем над тем, чтобы сделать обновления более быстрыми и плавными, ставя в приоритет совместимость приложений по мере выхода новых версий платформы. В Android 12 большинство изменений, связанных с приложениями, были сделаны, чтобы дать вам больше времени, и мы обновили наши инструменты и процессы, чтобы помочь вам актуализировать ваше приложение быстрее.
Больше обновлений для Android через Google Play - Мы продолжаем расширять свои усилия, направленные на обновление системы через Google Play (Project Mainline), чтобы обеспечить более стабильную и безопасную среду для приложений на всех устройствах. В Android 12 мы добавили модуль Android Runtime (ART), который позволяет нам обновлять Runtime и библиотеки ядра на устройствах под управлением Android 12. Мы можем улучшить производительность и корректность работы, более эффективно управлять памятью и сделать работу Kotlin быстрее - и все это без необходимости полного обновления системы. Мы также расширили функциональность существующих модулей - например, мы реализуем функцию совместимого транскодирования медиаданных внутри обновляемого модуля.
Оптимизация для планшетов, складных устройств и телевизоров - Поскольку сейчас большинство людей используют приложения на устройствах с большим экраном, таких как складные устройства, планшеты и телевизоры, то сейчас самое время проверить, готово ли ваше приложение или игра к работе на них. Начните с оптимизации для планшетов и создания приложений для складных устройств. А для самого большого экрана в доме также доступен первый превью Android 12 для Android TV. В дополнение к внедрению новейших функций Android в телевизор с этим превью, вы также сможете протестировать свои приложения на совершенно новом опыте Google TV. Узнайте больше на сайте Android TV Developers и начните с ADT-3 набора для разработчиков.
Обновленные списки не SDK интерфейсов - Мы ограничили дополнительные не-SDK интерфейсы, и, как всегда, приветствуем ваши отзывы и предложения по публичным эквивалентам API.
Упрощение тестирования и отладки изменений - Чтобы вам было проще тестировать изменения, которые могут влиять на ваше приложение, мы добавили возможность переключать многие из них. С помощью переключателей вы можете принудительно активировать или отключить изменения по отдельности из Меню разработчика или adb. Ознакомьтесь с подробностями здесь.

Этап работ ориентированных на стабильность платформы - Как и в прошлом году, мы сообщаем вам о работах над стабильностью платформы заблаговременно, чтобы у вас было больше времени для планирования работы по совместимости приложений. На этом важном этапе мы предоставим не только окончательные API SDK/NDK, но и окончательные внутренние API и модели поведения системы. Мы планируем начать работу над стабильностью платформы в августе 2021 года, и у вас будет несколько недель до официального релиза, чтобы провести ваши финальные тесты. Детали графика выпуска здесь.
Начните работу с Android 12
Developer Preview имеет все необходимое для того, чтобы попробовать функции Android 12, протестировать свои приложения и дать нам обратную связь. Уже сегодня вы можете начать с прошивки образа системы на устройства Pixel 3 / 3 XL, Pixel 3a / 3a XL, Pixel 4 / 4 XL, Pixel 4a / 4a 5G, или Pixel 5. Если у вас нет Pixel-устройства, то вы можете использовать 64-битные образы системы с Android Emulator в Android Studio.
Когда вы будете готовы, вот некоторые вещи, которые вы должны сделать:
• Попробуйте новые функции и API - ваши отзывы очень важны на ранних стадиях Developer Preview. Сообщайте о проблемах в нашем треккере или давайте прямую обратную связь через опрос по выбранным функциям на странице обратной связи и предложений.
• Тестирование вашего текущего приложения на совместимость - цель здесь, чтобы узнать, насколько ваше приложение зависит от изменений в модели поведения по умолчанию в Android 12. Просто установите ваше текущее опубликованное приложение на устройство или эмулятор под управлением Android 12 и протестируйте его.
• Протестируйте ваше приложение с функцией переключателей - Android 12 имеет опцию переключателей, которая влияет на ваше приложение только если оно поддерживает новую платформу. Крайне важно понять и оценить эти изменения на ранней стадии. Чтобы облегчить тестирование, вы можете включать и выключать изменения по отдельности.
Мы будем регулярно обновлять образы системы и SDK на протяжении всего цикла выпуска Android 12. Этот стартовый предварительный релиз предназначен только для разработчиков и не предназначен для ежедневного или потребительского использования, поэтому мы сделали его доступным только для загрузки вручную.
Вы можете прошить заводской образ на устройство Pixel или загрузить образ OTA на устройство Pixel под управлением Android 11, в этом случае вам не понадобится разблокировать загрузчик или стирать данные. В любом случае, как только вы вручную установите предварительную сборку, вы будете автоматически получать будущие обновления по воздуху для всех последующих превью и бета-версий. Подробнее здесь.
По мере приближения к конечному продукту мы будем предлагать потребителям испытать его, и в это время мы откроем регистрацию через Android Beta. Оставайтесь с нами для получения подробной информации, но на данный момент, пожалуйста, обратите внимание, что в настоящее время бета-версия Android не доступна для Android 12.
Для получения полной информации посетите сайт разработчиков Android 12.
Перевод записи в блоге Android Developers : https://android-developers.googleblog.com/2021/02/android-12-dp1.html
Специально для телеграм канала Google Pixels.