Выпуск мобильной платформы Android 9
Компания Google опубликовала релиз открытой мобильной платформы Android — Android 9 («Pie»). Связанные с новым выпуском исходные тексты размещены в Git-репозиторий проекта (ветка android-9.0.0_r1). Обновления прошивки уже подготовлены для устройств Pixel, Pixel XL, Pixel 2 и Pixel 2 XL, а в ближайшие месяцы появятся для актуальных смартфонов компаний Sony Mobile, Xiaomi, HMD Global, Oppo, Vivo, OnePlus и Essential.
Основные новшества:
- В настройки добавлен режим адаптивного использования аккумулятора, позволяющий ограничить расходование ресурсов аккумулятора для редко используемых приложений. Для вычисления приоритетов доступа к системным ресурсам применяется алгоритм машинного обучения, который определяет какие из приложений наиболее важны пользователю. На основании приоритетов приложения объединяются в группы с различными ограничениями активности (ограничения на запуск заданий, сетевую активность, интенсивность пробуждения и отправку сообщений Firebase);
- Реализована система рекомендаций App Actions, при помощи которой приложение может быть рекомендовано пользователю в тот момент, когда он наиболее заинтересован в выполнении действий, которые может обеспечить данная программа. Система основана на применении методов машинного обучения и нацелена на предоставлении подсказки о наличии нужных приложений, которые будут оптимальны в контексте текущего сеанса работы пользователя в интерфейсе запуска приложений, при выделении текста, при поиске, в Google Play и при использовании интерактивного ассистента;
- Представлена система адаптивного изменения яркости (Adaptive Brightness), которая использует машинное обучение для установки наиболее оптимальной для конкретного пользователя яркости экрана с учётом его предпочтений (система обучается на том какую яркость выставляет пользователь в разных условиях);
- Поддержка слайсов (Slices), при помощи которых приложения могут предоставить доступ к удалённому контенту в различных местах, например, в интерфейсе поиска и в интерактивном ассистенте. Слайсы позволяют организовать интерактивное взаимодействие с использованием переключателей, опций, ползунков, прокрутки и других элементов интерфейса;
- Улучшен вывод уведомлений о поступлении новых сообщений. Подобные уведомления теперь могут выводиться в стиле мессенджера с показом нити разговора, привязкой к отправителям, подсказками для быстрого ответа и поддержкой вставки изображений. Реализована возможность применения технологии Smart Reply для быстрого ответа на уведомления с новыми сообщениями (Smart Reply использует машинное обучение для автоматического формирования наиболее подходящего ответа);
- Новая система навигации, упрощающая переход между разными режимами работы интерфейса (домашний экран, обзор недавно используемых приложений, список приложений) при помощи одной интерактивной кнопки-ползунка. В обзоре запущенных приложений значительно увеличены эскизы экрана, что позволяет оценить текущую активность в приложениях, добавлена возможность поиска и поддержка перехода к общему списку программ в один клик;
- Добавлен новый виджет «Увеличительное стекло», упрощающий выделение текста и точное управление курсором в тексте. Виджет автоматически может применяться в любых формах ввода на основе класса TextView, для адаптации к другим интерфейсам предложен Magnifier API;
- Добавлен новый интерфейс для определения приложений, активно расходующих заряд аккумулятора при фоновой работе. Подобные приложения теперь отображаются в разделе настройки параметров аккумулятора и могут быть в один клик ограничены от выполнения фоновых работ и доступа к сети;
- Добавлен API динамической обработки звука (Dynamics Processing API), позволяющий увеличить акустическое качество звука в приложениях за счёт изоляции определённых частот и манипуляции уровнем громкости (например, можно сделать более слышимым голос вдалеке, отрезав сопутствующие шумы и увеличив громкость для определённых частот);
- Реализован режим «не беспокоить», при котором отключаются звонки, сигналы уведомлений и всплывающие диалоги. Для быстрого включения режима достаточно перевернуть телефон экраном вниз;
- Добавлены новые приложения: Dashboard для анализа активность пользователя на смартфоне, показывает с какими приложениями дольше всего поводит время пользователь, как часто разблокируется телефон, как много поступает уведомлений. App Timer для задания ограничения времени работы в определённых приложениях, при приближении к установленному лимиту показывается специальное уведомление. Wind Down для индикации, что пора спать и автоматического включения режима «не беспокоить» на ночь;
- Добавлен универсальный диалог для биометрической аутентификации с использованием различных видов сенсоров (отпечатки пальцев, распознавание лица, анализ радужной оболочки глаза). Приложения теперь могут использовать штатный API BiometricPrompt для вывода диалога биометрической аутентификации вместо создания собственных диалогов;
- Добавлена поддержка защищённых подтверждений (Protected Confirmation), использующих цифровые подписи на уровне TEE (Trusted Execution Environment) для гарантирования, что определённая строка была показана пользователю и он согласился с выполнением операции.
- Добавлен новый тип хранилищ ключей StrongBox, предоставляющий более надёжную защиту закрытых ключей за счёт их хранения и обработки в специальных аппаратных окружениях с отдельным CPU, памятью и Flash;
- Для приложений заблокирован доступ к информации о сетевой активности в системе, включающей сведения о том, к каким хостам осуществляются сетевые подключения (функциональность netstat);
- Добавлена поддержка технологии «DNS over TLS», позволяющей защитить канал связи с DNS-сервером. «DNS over TLS» отличается от «DNS over HTTPS» применением штатного протокола DNS (обычно используется сетевой порт 853), завёрнутого в шифрованный канал связи, организованный при помощи протокола TLS с проверкой валидности хоста через TLS/SSL-сертификаты, заверенные удостоверяющим центром (в «DNS over HTTPS» резолвер обрабатывает запросы через Web API);
- Поддержка протокола Wi-Fi RTT (WiFi Round-Trip-Time, IEEE 802.11mc) для получения информации о расстоянии до точек доступа, что можно использовать в приложениях для определения местоположения и навигации внутри зданий. Функциональность доступна через новый RTT API и требует наличия в устройстве поддержки IEEE 802.11mc. Зная расстояние до 3 и более точек доступа можно рассчитать позицию смартфона в пространстве с точностью в 1–2 метра, чего достаточно для организации навигации в помещениях и для активации привязанных к местоположению сервисов. Расстояние определяется без соединения с точкой доступа, что позволяет сохранить приватность;
- Приложениям предоставлены средства для полноэкранного вывода на устройствах с безрамочными экранами. Для управления отображением контента на таких экранах добавлен API DisplayCutout, при помощи которого приложение может проверить наличие на экране неотображаемых областей (например, закругление экрана и островок для фронтальной камеры, громкоговорителя и сенсоров), определить какие части изображения попадут в неотображаемые области и выбрать режим размещения контента относительно этих областей. В средства для разработчиков добавлена возможность симуляции подобных экранов на любых устройствах, что позволяет протестировать корректность отображения контента приложений;
- Добавлен Multi-camera API, позволяющий организовать одновременный доступ сразу к нескольким камерам. Например, на устройствах с двумя раздельными фронтальными или задними камерами можно реализовать такие функции как бесшовное масштабирование, размытие фона (боке) и стереовидение. Для камеры также добавлен параметр Session, позволяющий сократить задержку перед началом записи, и параметр Surface для организации доступа приложений к непрерывному потоку данных с камеры. Добавлены API для использования подсветки ярким экраном в качестве фотовспышки и для доступа к данным оптического стабилизатора изображения для создания спецэффектов и программной стабилизации;
- Добавлен класс ImageDecoder, позволяющий декодировать изображение из буфера, файла или URL в виде битмапа для последующего использования с классами Bitmaps и Drawable. По сравнению с классом BitmapFactory, который теперь объявлен устаревшим, в ImageDecoder поддерживается масштабирование, пошаговое декодирование, постобработка (например, можно применить различные эффекты, такие как закругление углов) и декодирование анимированных изображений;
- Добавлена встроенная поддержка воспроизведения HDR-видео (профиль HDR VP9 Profile 2), в том числе на устройствах поддержкой HDR можно просматривать HDR-фильмы, доступные на YouTube и Play Movies;
- Добавлена поддержка кодирования изображений в формате HEIF (HEIC у Apple), использующего эффективные методы сжатия HEVC (H.265), позволяющего хранить в одном файле несколько снимков или видео и поддерживающего операции кадрирования без перекодирования;
- JobScheduler, управляющий запуском плановых заданий и применяющий ограничения при работе приложений в фоновом или спящем режиме, теперь может учитывать состояние сетевой подсистемы при выполнении работ, связанных с сетевым взаимодействием. В том числе JobScheduler может учитывать предоставляемые операторами сингналы о состоянии сети, оценивать перегруженность или наличие безлимитного доступа. С другой стороны, заявленные для выполнения задачи могут объявлять приблизительный размер данных, который потребуется передать/отправить, характер трафика (например, упреждающая загрузка) и режим работы сети (безлимитный или ограниченный). Сопоставляя информацию о состоянии сети и параметры сетевых задач JobScheduler может принимать решения по запуску или приостановке определённых задач, например, при нахождении в сети с ограниченным трафиком может отложить большие сетевые запросы, а для безлимитного соединения разрешить упреждающую загрузку;
- Добавлен API TextClassifier для использования моделей машинного обучения для классификации текстов, например, для выделения дат, номеров рейсов и других типов информации из текста. Модели машинного обучения теперь могут обновляться прямо из Google Play. Через Firebase доступен новый ML Kit, предоставляющий набор кросс-платформенных API для выполнения в приложениях таких задач, как распознавания текста, определение лиц, расстановка меток для фотографий и т.п.
До версии 1.1 обновлён API Neural Networks, предоставляющий приложениям возможности по задействованию средств аппаратного ускорения для систем машинного обучения. API позиционируется как базовая прослойка для функционирования в Android фреймворков машинного обучения, таких как TensorFlow Lite и Caffe2. Для использования на мобильных устройствах предложен ряд готовых моделей нейронных сетей, в том числе MobileNets (распознавание объектов на фотографиях), Inception v3 (компьютерное зрение) и Smart Reply (подбор вариантов ответа на сообщения). В новом выпуске добавлен набор новых операторов Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub и Squeeze. Для устройств Pixel 2 включён драйвер Qualcomm Hexagon HVX для ускорения квантованных моделей;
- Улучшены средства автозаполнения полей, предоставляемые фреймворком Autofill. API расширен возможностями, позволяющими менеджерам паролей расширять функциональность Autofill, например, производить фильтрацию данных, проверку ввода и применять режим совместимости для приложений без прямой поддержки Autofill;
- Добавлена реализация GlobalPlatform Open Mobile API (OMAPI API) для доступа к защищённым элементам (Secure Elements, SE) при проведении платежей по смарткартам и реализации различных защищённых сервисов. Для абстрагирования доступа к аппаратным защищённым элементам (eSE, UICC и т.п.) предусмотрена специальная HAL-прослойка;
- В рамках инициативы по уходу от использования нешифрованного HTTP в пользу TLS/HTTPS, настройки по умолчанию в NSC (Network Security Configuration) изменены для блокировки всего незашифрованного трафика. При использовании Network Security Configuration все соединения теперь должны создаваться поверх TLS;
- Добавлены новые правила SELinux, блокирующие доступ приложений к камере, микрофону и всем сенсорам, в случае работы процессов в фоновом режиме (нахождение в состоянии idle). Изменение поможет бороться с вредоносным и шпионским ПО, осуществляющим скрытую запись случайных разговоров или создание снимков окружающего пространства;
- В релизе планируется включить шифрование резервных копий с использованием секретной фразы, хранимой на стороне клиента, а также добавить возможность генерации случайных MAC-адресов для борьбы с отслеживанием беспроводными точками доступа;
- Продолжена оптимизация производительности и эффективности работы ART runtime. Профили выполнения изменены для задействования дополнительных оптимизаций и сокращения потребления памяти в скомпилированном коде приложений. Для популярных приложений размер DEX-файлов сокращен в среднем на 11%, что привело к снижению потребления системной памяти и ускорению запуска приложений;
- Проведены оптимизации для увеличения производительности кода на языке Kotlin. В компилятор добавлены изменения, оптимизирующие обработку циклов;
- Продолжена работа по снижению энерогопотребления в режимах Doze и App Standby, а также ограничению фоновой активности приложений для продления автономной работы устройств;
- Представлен набор библиотек Android Jetpack, предоставляющий различные типовые компоненты Android и расширения для разработки на языке Kotlin, обновляемые независимо и сохраняющие обратную совместимость. Подготовлена новая библиотека расширений AndroidX;
- Предложен новый формат распространения приложений Android App Bundle, позволяющий сформировать набор, включающий всё, что нужно приложению для работы на любом устройстве — языковые наборы, поддержка разных размеров экрана и сборки для различных аппаратных платформ. При загрузке приложения из Google Play на систему пользователя доставляются только код и ресурсы, необходимые для работы на конкретном устройстве, ничего лишнего не загружается. Поддерживается также доставка дополнительных модулей-расширений для уже установленных программ;
- В рамках подготовки к обязательной поддержке 64-разрядной архитектуры, в Google Play начиная с ноября 2018 года станут приниматься только новые приложения и обновления к существующим приложениям, поддерживающие как минимум APIv26 (SDK от Android 8), т.е. включающие 64-разрядные варианты библиотек, помимо 32-разрядных.
- Мультимедийные фреймворки и другие требующие повышенной безопасности компоненты, такие как стеки NFC и Bluetooth, собраны с применением техники Control Flow Integrity (CFI), обеспечивающего выявление некоторых форм неопределённого поведения, которые потенциально могут привести к нарушению нормального потока управления (control flow) в результате выполнения эксплоитов. Некоторые библиотеки, например libui и libmediaplayerservice, дополнительно пересбораны с кодом для выявления целочисленного переполнения, предоставляемым UndefinedBehaviorSanitizer (UBSan) от проекта LLVM;
© OpenNet