| page.title=Android N для разработчиков |
| meta.tags="предварительная версия", "androidn" |
| page.tags="preview", "developer preview" |
| page.image=images/cards/card-n-apis_2x.png |
| @jd:body |
| |
| |
| |
| |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| <h2>Основные возможности для разработчиков</h2> |
| <ol> |
| <ul style="list-style-type:none;"> |
| <li><a href="#multi-window_support">Поддержка многооконного режима</a></li> |
| <li><a href="#notification_enhancements">Уведомления</a></li> |
| <li><a href="#jit_aot">Динамическая/предварительная компиляция</a></li> |
| <li><a href="#quick_path_to_app_install">Быстрый способ установки приложения</a></li> |
| <li><a href="#doze_on_the_go">Сон на ходу: режим Doze</a></li> |
| <li><a href="#background_optimizations">Оптимизация фоновых процессов</a></li> |
| <li><a href="#data_saver">Экономия трафика</a></li> |
| <li><a href="#tile_api">API панели быстрых настроек</a></li> |
| <li><a href="#number-blocking">Блокировка номеров</a></li> |
| <li><a href="#call_screening">Фильтрация вызовов</a></li> |
| <li><a href="#multi-locale_languages">Языки и языковые настройки</a></li> |
| <li><a href="#icu4">API-интерфейсы ICU4J в Android</a></li> |
| <li><a href="#gles_32">API OpenGL ES 3.2</a></li> |
| <li><a href="#android_tv_recording">Запись Android TV</a></li> |
| <li><a href="#android_for_work">Android for Work</a></li> |
| <li><a href="#accessibility_enhancements">Специальные возможности</a></li> |
| <li><a href="#direct_boot">Режим Direct Boot</a></li> |
| <li><a href="#key_attestation">Аттестация ключей</a></li> |
| <li><a href="#network_security_config">Конфигурация сетевой безопасности</a></li> |
| <li><a href="#default_trusted_ca">Доверенный центр сертификации по умолчанию</a></li> |
| <li><a href="apk_signature_v2">Схема получения подписи APK, версия 2</a></li> |
| <li><a href="#scoped_directory_access">Доступ к выделенным каталогам</a></li> |
| </ol> |
| </div> |
| </div> |
| |
| |
| |
| <p>Система Android N еще находится в активной стадии разработки, но ее уже можно опробовать в виде предварительной версии |
| N Developer Preview. В следующих разделах рассматриваются некоторые из |
| ее новых возможностей для разработчиков. </p> |
| |
| <p> |
| Обязательно изучите раздел <a href="{@docRoot}preview/behavior-changes.html">Изменения в работе</a>, в котором описаны |
| изменения платформы, способные повлиять на работу приложений, ознакомьтесь более подробно с основными возможностями |
| в руководствах для разработчиков и загрузите <a href="{@docRoot}preview/setup-sdk.html#docs-dl">справочник по API</a> с подробным описанием новых |
| API-интерфейсов. |
| </p> |
| |
| <h2 id="multi-window_support">Поддержка многооконного режима</h2> |
| |
| |
| <p>В Android N представлена новая долгожданная функция многозадачности |
| – многооконный режим. </p> |
| |
| <p>Теперь пользователи смогут открывать на экране два приложения одновременно. </p> |
| <ul> |
| <li>На телефонах и планшетах под управлением |
| Android N пользователи могут запустить два приложения рядом или друг над другом |
| в режиме разделенного экрана. Размеры окон приложений можно изменить с помощью |
| разделителя между ними. </li> |
| |
| <li>На устройствах Android TV для приложений будет доступен <a href="{@docRoot}preview/features/picture-in-picture.html">режим |
| "картинка в картинке"</a>, который позволит приложению отображать контент, пока пользователь просматривает другие приложения или |
| взаимодействует с ними. Более подробная информация приведена ниже. </li> |
| </ul> |
| |
| <div class="col-4of10"> |
| <img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" /> |
| <p class="img-caption"> |
| <strong>Рис. 1.</strong> Приложения в режиме разделенного экрана. |
| </p> |
| </div> |
| |
| <p>Поддержка многооконного режима открывает новые возможности привлечения пользователей, |
| особенно на планшетах и других устройствах с большим размером экрана. Вы можете даже включить в своем приложении функцию перетаскивания |
| для удобного перемещения контента между приложениями – отличный |
| способ улучшить пользовательский интерфейс. </p> |
| |
| <p>Вы можете легко добавить поддержку многооконного режима в свое приложение и настроить его |
| работу с окнами экрана. Например, вы можете определить минимальные допустимые размеры, |
| до которых пользователи могут уменьшить окно приложения. |
| Вы можете также отключить многооконный режим для своего приложения, чтобы |
| система отображала его только в полноэкранном режиме.</p> |
| |
| <p> |
| Дополнительная информация содержится в документе для разработчиков <a href="{@docRoot}preview/features/multi-window.html">Поддержка многооконного режима</a>. |
| |
| </p> |
| |
| <h2 id="notification_enhancements">Новые возможности уведомлений</h2> |
| |
| <p>В Android N изменен дизайн уведомлений, которые стали проще и удобнее. |
| Ниже приведены некоторые изменения.</p> |
| |
| <ul> |
| <li> |
| <strong>Обновления шаблонов</strong>. В новых шаблонах уведомлений |
| сделан акцент на изображении и аватаре контакта. Разработчики смогут |
| использовать новые шаблоны с минимальными изменениями своего кода. |
| </li> |
| |
| <li> |
| <strong>Группы уведомлений</strong>. Система может группировать уведомления, |
| например по теме сообщений, и отображать группу. Пользователь может применять к группам |
| действия, например, закрывать их или архивировать. Если вы ранее выполняли реализацию |
| уведомлений для Android Wear, то вам уже должна быть знакома эта |
| модель. |
| </li> |
| |
| <li> |
| <strong>Непосредственный ответ в уведомлении</strong>. |
| Android теперь поддерживает функцию внутренних ответов в приложениях для общения в режиме реального времени. Это позволяет быстро ответить на |
| СМС или текстовое сообщение непосредственно в интерфейсе уведомления. |
| </li> |
| |
| <li> |
| <strong>Собственные представления</strong>. Два новых API-интерфейса позволяют применять системные элементы, |
| такие как заголовки и действия уведомлений, при использовании собственных представлений в |
| уведомлениях. |
| </li> |
| </ul> |
| |
| <div class="col-4of12"> |
| <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px"> |
| </div> |
| |
| <div class="col-4of12"> |
| <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px"> |
| </div> |
| |
| <div class="col-4of12"> |
| <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px"> |
| </div> |
| |
| |
| <p class="img-caption"> |
| <strong>Рис. 2.</strong> Группы уведомлений и непосредственный ответ. |
| </p> |
| |
| <p>Способы реализации новых возможностей описаны в руководстве |
| <a href="{@docRoot}preview/features/notification-updates.html">Уведомления</a>. |
| </p> |
| |
| |
| |
| <h2 id="jit_aot">Профильная динамическая/предварительная компиляция</h2> |
| |
| <p>В Android N добавлен динамический (JIT) компилятор с профилированием кода для среды |
| ART, который позволяет постоянно улучшать производительность приложений Android во время их работы. |
| JIT-компилятор дополняет текущий предварительный (AOT) компилятор ART |
| и помогает повысить производительность, сократить потребление памяти, а также ускорить обновления приложений и системы. |
| </p> |
| |
| <p>Профильная компиляция позволяет ART управлять AOT/JIT-компиляцией каждого приложения |
| в соответствии с его фактическим использованием и характеристиками устройства. Например, |
| ART ведет профиль часто используемых методов каждого приложения, которые она может предварительно скомпилировать |
| и кэшировать для оптимальной производительности. Компиляция остальных частей приложения откладывается до того момента, |
| когда они действительно понадобятся.</p> |
| |
| <p>Кроме повышения производительности основных частей приложения профильная |
| компиляция помогает сократить общее использование оперативной памяти приложением, в том числе связанными двоичными файлами. |
| Эта возможность особенно важна для устройств с небольшим объемом памяти.</p> |
| |
| <p>ART управляет профильной компиляцией с минимальным потреблением заряда |
| аккумулятора. Предварительная компиляция выполняется только тогда, когда устройство неактивно |
| и находится на зарядке, поэтому заблаговременное выполнение этой работы экономит время и энергию.</p> |
| |
| <h2 id="quick_path_to_app_install">Быстрый способ установки приложения</h2> |
| |
| <p>Одним из наиболее ощутимых преимуществ JIT-компилятора ART является скорость установки приложений |
| и обновлений системы. Даже большие приложения, требовавшие нескольких минут для своей оптимизации и установки на |
| Android 6.0 , теперь могут быть установлены за секунды. |
| Обновления системы также выполняются быстрее, поскольку стадия оптимизации теперь отсутствует. </p> |
| |
| <h2 id="doze_on_the_go">Сон на ходу: режим Doze</h2> |
| |
| <p>В Android 6.0 был введен системный режим Doze для экономии заряда аккумулятора. В этом режиме |
| выполнение процессорных и сетевых операций приложений откладывается, когда устройство не используется и неподвижно – например, лежит на столе или в ящике. |
| </p> |
| |
| <p>В Android N режим Doze сделал шаг вперед и экономит заряд аккумулятора на ходу. |
| Каждый раз, когда экран выключается на определенный промежуток времени и устройство не заряжается, |
| Doze применяет частичный набор знакомых ограничений процессорной и сетевой активности приложений. |
| Это означает, что пользователи могут экономить заряд аккумулятора, даже когда их устройство лежит в кармане. |
| </p> |
| |
| |
| <img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" /> |
| <p class="img-caption"> |
| <strong>Рис. 3.</strong> Режим Doze теперь применяет |
| энергосберегающие ограничения, даже когда устройство находится в движении. |
| </p> |
| |
| |
| <p>Вскоре после блокировки экрана, когда устройство питается от аккумулятора, режим Doze |
| ограничивает сетевой доступ и откладывает выполнение заданий и синхронизации. В течение коротких периодов пробуждения |
| для приложений открывается доступ к сети и разрешается выполнение отложенных |
| заданий и операций синхронизации. Включение экрана или подключение к источнику питания выводит |
| устройство из режима Doze.</p> |
| |
| <p>Если устройство снова остается неподвижным в течение определенного периода времени (с погашенным экраном и питанием от аккумулятора), |
| Doze применяет полный набор процессорных и сетевых ограничений к {@link |
| android.os.PowerManager.WakeLock}, {@link android.app.AlarmManager} оповещениям и сканированию |
| GPS/Wi-Fi.</p> |
| |
| <p>Рекомендации по адаптации приложения для режима Doze не зависят от того, двигается устройство или нет, |
| поэтому если вы уже обновили свое приложение для оптимальной работы |
| в режиме Doze, то все уже готово. Если нет, начните <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">адаптацию |
| приложения для режима Doze</a> прямо сейчас.</p> |
| |
| <h2 id="background_optimizations">Проект Svelte: оптимизация фоновых процессов</h2> |
| |
| <p>Продолжено развитие проекта Svelte, нацеленного на сокращение использования оперативной памяти системой и приложениями |
| в различных устройствах экосистемы Android. В Android N проект |
| Svelte уделяет особое внимание оптимизации работы приложений в фоновом режиме. </p> |
| |
| <p>Работа в фоновом режиме является важной частью большинства приложений. Организация ее надлежащим образом |
| может сделать интерфейс пользователя быстрым, отзывчивым и контекстно-зависимым. |
| В противном случае фоновая обработка может напрасно потреблять оперативную память (и |
| заряд аккумулятора) и негативно влиять на производительность других приложений. </p> |
| |
| <p>Начиная с Android 5.0, предпочтительным и оптимальным для пользователей способом выполнения фоновых операций стало использование планировщика {@link android.app.job.JobScheduler}. |
| Приложения могут планировать свои задания, позволяя системе оптимизировать их на основе состояния памяти, |
| питания и сетевого соединения. Планировщик JobScheduler прост в использовании и обеспечивает необходимый контроль, |
| поэтому он рекомендуется для применения во всех приложениях. |
| </p> |
| |
| <p> |
| Другим хорошим вариантом является планировщик <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager"> |
| <code>GCMNetworkManager</code></a> в составе служб Google Play, который |
| предлагает аналогичные возможности планирования заданий и совместимость с прежними версиями |
| Android. |
| </p> |
| |
| <p>Мы продолжаем расширять область применения планировщиков <code>JobScheduler</code> и |
| <code>GCMNetworkManager</code>. |
| Например, в Android N теперь можно планировать фоновую обработку на основании |
| изменений поставщиков контента. В то же время мы начинаем исключать некоторые |
| устаревшие шаблоны, которые могут ухудшить производительность системы, |
| особенно на устройствах с малым объемом памяти.</p> |
| |
| <p>В Android N удалены три часто используемые неявные рассылки — |
| {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link |
| android.hardware.Camera#ACTION_NEW_PICTURE} и {@link |
| android.hardware.Camera#ACTION_NEW_VIDEO}, — поскольку они могут пробудить |
| фоновые процессы сразу нескольких приложений, повысив потребление памяти и заряда аккумулятора. Если |
| ваше приложение получает эти рассылки, используйте преимущество N Developer Preview для миграции на |
| <code>JobScheduler</code> и связанные с ним API-интерфейсы. </p> |
| |
| <p> |
| Дополнительная информация содержится в документе <a href="{@docRoot}preview/features/background-optimization.html">Оптимизация |
| фоновых процессов</a>. |
| </p> |
| |
| |
| <h2 id="data_saver">Экономия трафика</h2> |
| |
| <div class="col-5of12" style="margin-right:1.5em;"> |
| <img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd"> |
| |
| <p class="img-caption" style="padding-right:2em;"> |
| <strong>Рис. 4.</strong> Настройка экономии трафика. |
| </p> |
| </div> |
| |
| <p>В течение срока эксплуатации мобильного устройства стоимость сотового трафика обычно |
| превышает стоимость самого устройства. Для многих пользователей сотовый трафик является |
| весьма дорогим ресурсом, который они хотели бы сэкономить. </p> |
| |
| <p>В Android N появился режим экономии трафика – новая системная служба, которая помогает сократить |
| использование сотового трафика приложениями в роуминге, в конце периода тарификации |
| или для небольших предоплаченных пакетов трафика. Режим экономии трафика дает пользователям возможность контроля использования сотового трафика приложениями |
| и позволяет разработчикам повысить эффективность работы служб. |
| </p> |
| |
| <p>Когда пользователь включает экономию трафика в панели <strong>Settings</strong> и устройство подключено к тарифицируемой сети, |
| система блокирует использование фонового трафика и сигнализирует приложениям |
| о необходимости сократить по возможности использование трафика в активном режиме, например: ограничить скорость передачи данных |
| потокового вещания, уменьшить качество изображений, отложить оптимистичное предварительное кэширование |
| и т.д. Пользователи могут поместить определенные приложения в белый список, разрешив им тарифицируемую фоновую передачу данных |
| даже при включенном режиме экономии трафика.</p> |
| |
| <p>Android N расширяет применение класса {@link android.net.ConnectivityManager}, позволяя приложениям |
| <a href="{@docRoot}preview/features/data-saver.html#status">выяснять пользовательские настройки |
| экономии трафика</a> и <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">отслеживать |
| изменения этих настроек</a>. Все приложения должны проверять, был ли включен режим экономии трафика, |
| и пытаться ограничить использование трафика в фоновом и активном режимах.</p> |
| |
| |
| <h2 id="tile_api">API панели быстрых настроек</h2> |
| |
| |
| <div style="float:right;max-width:320px"> |
| <img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;"> |
| |
| <p class="img-caption" style="padding-left:2em;"> |
| <strong>Рис. 5.</strong> Плитки быстрых настроек в панели уведомлений. |
| </p> |
| |
| |
| </div><p>Быстрые настройки являются простым и популярным способом доступа к основным настройкам и действиям |
| непосредственно из панели уведомлений. В Android N возможности быстрых настроек |
| были расширены – они стали еще более полезными и удобными. </p> |
| |
| <p>Добавлено пространство для дополнительных плиток быстрых настроек, к которым можно |
| обратиться с разбитой на страницы области экрана, проведя пальцем влево или вправо. Пользователи |
| также могут контролировать состав и место отображения этих элементов – их можно добавлять или двигать обычным перетаскиванием. |
| </p> |
| |
| <p>Для разработчиков Android N также предлагает новый API, который позволяет определить собственные плитки |
| быстрых настроек для удобного доступа пользователей к основным элементам управления и действиям вашего приложения.</p> |
| |
| <p> |
| Плитки быстрых настроек резервируются для элементов управления или действий, которые либо требуются срочно, |
| либо часто используются. Их не следует использовать в качестве ярлыков |
| для запуска приложений. |
| </p> |
| |
| <p> |
| После определения плитки можно показать пользователям, которые смогут добавить их на |
| панель быстрых настроек обычным перетаскиванием. |
| </p> |
| |
| <p> |
| Дополнительную информацию о создании плиток приложений можно найти в описании |
| <code>android.service.quicksettings.Tile</code> в загружаемом <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочнике по API</a>. |
| </p> |
| |
| |
| |
| <h2 id="number-blocking">Блокировка номеров</h2> |
| |
| <p>Платформа Android N теперь поддерживает блокировку номеров и предоставляет |
| API-интерфейс платформы, который позволяет поставщикам услуг вести список блокируемых номеров. Этот список доступен для чтения и записи стандартным приложениям |
| для СМС, звонков и приложениям поставщика. |
| Для других приложений это список недоступен.</p> |
| |
| <p>Сделав блокировку номеров стандартной функцией платформы, Android предоставляет приложениям |
| единообразный способ поддержки блокировки номеров на разных устройствах. |
| Приложения также получают следующие преимущества:</p> |
| |
| <ul> |
| <li> Номера, блокируемые при вызовах, также блокируются в текстовых сообщениях. |
| <li> Заблокированные номера могут быть сохранены при переустановках и переносах на другие устройства с помощью функции резервного копирования и восстановления. |
| |
| <li> Разные приложения могут использовать один и тот же список блокируемых номеров. |
| </ul> |
| |
| <p>Кроме того, возможность интеграции приложения оператора мобильной сети в Android означает, что операторы могут |
| читать список блокируемых номеров на устройстве и выполнять блокировку для пользователя на своей стороне, |
| предотвращая доставку пользователю нежелательных вызовов и текстовых сообщений через какого-либо посредника, |
| например, через конечную точку VOIP или переадресацию звонков.</p> |
| |
| <p> |
| Дополнительную информацию можно найти в описании <code>android.provider.BlockedNumberContract</code> |
| в загружаемом <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочнике по API</a>. |
| |
| </p> |
| |
| <h2 id="call_screening">Фильтрация вызовов</h2> |
| |
| <p> |
| Android N дает возможность стандартному приложению для звонков фильтровать входящие вызовы. Для этого |
| в приложении для звонков реализована новая служба <code>CallScreeningService</code>, |
| которая позволяет приложению выполнять ряд действий на основании |
| {@link android.telecom.Call.Details Call.Details} входящего вызова, например: |
| </p> |
| |
| <ul> |
| <li> отклонить входящий вызов; |
| <li> не регистрировать вызов в журнале вызовов; |
| <li> не показывать пользователю уведомление о вызове. |
| </ul> |
| |
| <p> |
| Дополнительную информацию можно найти в описании <code>android.telecom.CallScreeningService</code> |
| в загружаемом <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочнике по API</a>. |
| |
| </p> |
| |
| |
| <h2 id="multi-locale_languages">Поддержка нескольких языковых настроек, дополнительные языки</h2> |
| |
| |
| <p>Android N теперь позволяет пользователям выбрать <strong>несколько языковых настроек</strong> |
| для улучшенной поддержки случаев двуязычного применения. Приложения могут использовать |
| новый API для получения выбранных пользователем языковых настроек и затем предоставлять более сложные |
| интерфейсы для многоязычных пользователей, например: показывать результаты поиска |
| на нескольких языках; не предлагать перевод веб-страниц с того языка, который уже знаком пользователю. |
| </p> |
| |
| <p>Вместе с поддержкой нескольких языковых настроек Android N также расширяет список доступных языков. |
| Для каждого распространенного |
| языка, такого как английский, испанский, французский и арабский, предлагается более 25 вариантов. Также добавлена частичная |
| поддержка более 100 новых языков.</p> |
| |
| <p>Приложения могут получить список языковых настроек, установленных пользователем, вызвав метод <code>LocaleList.GetDefault()</code>. Для поддержки расширенного количества языковых настроек в Android N изменен способ |
| разрешения ресурсов. Вам следует обязательно проверить и убедиться в том, |
| что ваши приложения работают надлежащим образом с новой логикой разрешения ресурсов.</p> |
| |
| <p>Дополнительная информация о новом способе разрешения ресурсов и соответствующие рекомендации содержатся |
| в документе <a href="{@docRoot}preview/features/multilingual-support.html">Поддержка нескольких языков</a>.</p> |
| |
| <h2 id="icu4">API-интерфейсы ICU4J в Android</h2> |
| |
| <p> |
| Платформа Android N теперь предлагает частичный набор API-интерфейсов <a href="http://site.icu-project.org/">ICU4J</a> в |
| пакете <code>android.icu</code>. Миграция выполняется легко и в основном заключается |
| в простом изменении пространства имен с <code>com.java.icu</code> на |
| <code>android.icu</code>. Если вы уже используете пакет ICU4J в своих приложениях, |
| переход на API-интерфейсы <code>android.icu</code>, предоставленные платформой Android, |
| может существенно сократить размер пакетов APK. |
| </p> |
| |
| <p> |
| Дополнительные сведения по Android ICU4J API содержатся в документе <a href="{@docRoot}preview/features/icu4j-framework.html">Поддержка ICU4J</a>. |
| </p> |
| |
| |
| |
| <h2 id="gles_32">API OpenGL™ ES 3.2</h2> |
| |
| <p>В платформу Android N добавлены интерфейсы и поддержка OpenGL ES 3.2, включая следующие возможности.</p> |
| |
| <ul> |
| <li> Все расширения из <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Android Extension Pack</a></a> (AEP) кроме <code>EXT_texture_sRGB_decode</code>. |
| <li> Кадровые буферы с плавающей запятой для HDR и отложенного затенения. |
| <li> Вызовы отрисовки BaseVertex для улучшения пакетной обработки и потоковой передачи данных. |
| <li> Эффективный контроль обращений к буферу для сокращения служебных операций WebGL. |
| </ul> |
| |
| <p>API-интерфейс платформы для OpenGL ES 3.2 в Android N предоставляется классом |
| <code>GLES32</code>. При использовании OpenGL ES 3.2 обязательно следует объявить требование |
| в файле манифеста с помощью тега <code><uses-feature></code> и атрибута |
| <code>android:glEsVersion</code>. </p> |
| |
| <p>Для получения дополнительных сведений об использовании OpenGL ES, включая |
| определение версии, поддерживаемой устройством, см. <a href="{@docRoot}guide/topics/graphics/opengl.html">Руководство по API OpenGL ES</a>.</p> |
| |
| |
| <h2 id="android_tv_recording">Запись Android TV</h2> |
| |
| <p>В Android N добавлена возможность записи и воспроизведения контента из служб Android TV |
| через новые API-интерфейсы записи. Службы телевидения на основе существующих API |
| с временным сдвигом могут контролировать выбор данных телеканала для записи, сохранение |
| сеансов записи и управлять взаимодействием пользователя с записанным контентом. </p> |
| |
| <p>Дополнительная информация содержится в документе <a href="{@docRoot}preview/features/tv-recording-api.html">API-интерфейсы записи Android TV</a>.</p> |
| |
| |
| <h2 id="android_for_work">Android for Work</h2> |
| |
| <p>В Android for Work добавлены много новых возможностей и API-интерфейсов для устройств под управлением Android N. |
| Некоторые из них приведены ниже. Полный список обновлений Android for Work, касающихся |
| Android N, содержится в списке изменений Android for Work.</p> |
| |
| <h3 id="work_profile_security_challenge">Пароль безопасности для рабочего профиля </h3> |
| |
| <p> |
| Владельцы профиля могут установить отдельный пароль безопасности для приложений, запускаемых в рабочем профиле. |
| Когда пользователь пытается открыть любые рабочие |
| приложения, выводится запрос пароля. Успешный ввод пароля снимает блокировку рабочего профиля |
| и, при необходимости, дешифрует его. Владельцы профиля |
| могут отправить пользователю запрос <code>ACTION_SET_NEW_PASSWORD</code>, предлагающий установить рабочий пароль, |
| или запрос <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code>, предлагающий установить пароль блокировки устройства. |
| |
| </p> |
| |
| <p> |
| Владельцы профиля могут устанавливать различные политики паролей для рабочей проверки безопасности |
| (например, длину PIN-кода, возможность использования отпечатка пальца |
| для разблокировки профиля) с помощью <code>setPasswordQuality()</code>, |
| <code>setPasswordMinimumLength()</code> и других связанных методов. Владелец |
| профиля может также установить блокировку устройства с помощью экземпляра <code>DevicePolicyManager</code>, |
| возвращаемого новым методом <code>getParentProfileInstance()</code>. |
| Кроме того, владельцы профиля могут настроить экран учетных данных для рабочей проверки безопасности |
| с помощью новых методов <code>setOrganizationColor()</code> и |
| <code>setOrganizationName()</code>. |
| </p> |
| <h3 id="turn_off_work">Выключение рабочего режима </h3> |
| |
| <p>Пользователи устройства с рабочим профилем могут переключать рабочий режим. Когда рабочий режим |
| выключен, управляемый им пользователь временно выходит из системы, что отключает приложения рабочего профиля, |
| фоновую синхронизацию и уведомления. Также отключается приложение владельца профиля. |
| При выключенном рабочем режиме система отображает постоянный значок состояния, |
| напоминая пользователю о том, что он не может запустить рабочие приложения. Средство запуска при этом указывает, |
| что рабочие приложения и виджеты недоступны. </p> |
| |
| <h3 id="always_on_vpn">Постоянное подключение к VPN </h3> |
| |
| <p>Владельцы устройства и профиля могут обеспечить постоянное подключение рабочих приложений через указанную сеть |
| VPN. Система автоматически подключается к этой VPN после загрузки устройства. |
| </p> |
| |
| <p> |
| Для этого в интерфейсе <code>DevicePolicyManager</code> используются новые методы |
| <code>setAlwaysOnVpnPackage()</code> и |
| <code>getAlwaysOnVpnPackage()</code>. |
| </p> |
| |
| <p>Поскольку привязка служб VPN может быть выполнена непосредственно системой без взаимодействия с приложениями, |
| клиентам VPN требуется обрабатывать новые точки доступа для постоянного подключения к VPN. Как и раньше, |
| службы для системы указываются фильтром намерений, соответствующим действию |
| <code>android.net.VpnService</code>. </p> |
| |
| <p> |
| Пользователи могут вручную установить клиентов постоянного подключения к VPN, реализующих методы |
| <code>VPNService</code>, на экране настроек основного пользователя |
| <strong>Settings>More>Vpn</strong>. |
| </p> |
| |
| <h2 id="accessibility_enhancements">Расширение специальных возможностей</h2> |
| |
| <p>Android N теперь предлагает настройки Vision Settings непосредственно на экране приветствия при начальной установке нового устройства. |
| Это значительно упрощает пользователям обнаружение и настройку на своих устройствах |
| специальных возможностей, включая жесты увеличения, размер шрифта, размер экрана и |
| функцию TalkBack. </p> |
| |
| <p>Благодаря более приметному расположению этих настроек пользователи |
| чаще будут пробовать ваше приложение с включенными специальными возможностями. Обязательно протестируйте ваше приложение с этими настройками, |
| включив их на экране Settings > |
| Accessibility.</p> |
| |
| <p>Также в Android N предусмотрены службы специальных возможностей которые помогут пользователям с нарушениями двигательных функций |
| касаться экрана. Новый API позволяет встроить в службы такие |
| возможности, как отслеживание лица, отслеживание взгляда, сканирование точек и другой функционал, соответствующий потребностям |
| этих пользователей.</p> |
| |
| <p>Дополнительную информацию можно найти в описании <code>android.accessibilityservice.GestureDescription</code> |
| в загружаемом <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочнике по API</a>.</p> |
| |
| |
| <h2 id="direct_boot">Режим Direct Boot</h2> |
| |
| <p>Режим Direct Boot ускоряет загрузку устройства и позволяет зарегистрированным приложениям |
| сохранить ограниченную функциональность даже после непредвиденной перезагрузки. |
| Например, если зашифрованное устройство перезагрузится, когда пользователь спит, |
| уведомления о зарегистрированных предупреждениях, сообщениях и входящих вызовах будут поступать пользователю, как в обычном режиме. |
| Это также означает, что специальные возможности могут быть доступны сразу после перезагрузки. |
| </p> |
| |
| <p>Режим Direct Boot использует преимущество шифрования на уровне файлов в Android N |
| для применения детализированных политик шифрования к данным системы и приложений. |
| Система использует хранилище, зашифрованное на уровне устройства, для выбранных системных данных и данных из явным образом зарегистрированных приложений. |
| По умолчанию для всех остальных системных данных, пользовательских данных, приложений и |
| данных приложений используется хранилище, зашифрованное на уровне учетной записи. </p> |
| |
| <p>При загрузке система запускается в ограниченном режиме с доступом к данным, зашифрованным |
| на уровне устройства, и без общего доступа к приложениям и данным. |
| Если у вас есть компоненты, которые должны быть запущены в этом режиме, их можно зарегистрировать, |
| установив соответствующий флаг в манифесте. После перезагрузки система активирует зарегистрированные |
| компоненты с помощью рассылки намерения <code>LOCKED_BOOT_COMPLETED</code>. |
| Система обеспечивает доступность зарегистрированных данных приложений, зашифрованных на уровне устройства, |
| до разблокировки экрана. Все остальные данные остаются недоступными, пока пользователь не подтвердит свои учетную информацию на экране блокировки, |
| после чего данные будут расшифрованы. </p> |
| |
| Дополнительная информация приведена в документе <a href="{@docRoot}preview/features/direct-boot.html">Direct Boot</a>.</p> |
| </p> |
| |
| |
| <h2 id="key_attestation">Аттестация ключей</h2> |
| |
| <p>Аппаратные хранилища ключей обеспечивают безопасный метод создания, хранения, |
| и использования криптографических ключей на устройствах Android. Они защищают ключи от |
| ядра Linux, потенциальных уязвимостей Android и извлечения из устройств |
| с корневым доступом.</p> |
| |
| <p>Чтобы упростить и повысить безопасность использования аппаратных хранилищ ключей |
| в Android N введена возможность аттестации ключей. Приложения и внешние хранилища ключей могут использовать аттестацию, |
| чтобы определить, является ли пара ключей RSA или EC |
| аппаратной, какие свойства имеет эта пара ключей и какие ограничения применяются |
| к ее использованию и сроку действия. </p> |
| |
| <p>Приложения и службы внешних хранилищ могут запросить информацию о паре ключей |
| через сертификат аттестации X.509, который должен быть подписан действительным ключом |
| аттестации. Ключ аттестации представляет собой ключ подписи ECDSA, который |
| встраивается в аппаратное хранилище ключей устройства при его изготовлении на заводе. |
| Поэтому сертификат аттестации, подписанный действительным ключом аттестации, |
| подтверждает существование аппаратного хранилища ключей вместе со сведениями о парах ключей в таком хранилище. |
| </p> |
| |
| <p>Чтобы убедиться в том, что устройство использует безопасный официальный заводской образ Android, |
| для аттестации ключей требуется предоставление <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">загрузчиком</a> устройства |
| следующей информации о <a class="external-link" href="https://source.android.com/security/trusty/index.html">доверенной |
| среде выполнения (TEE)</a>:</p> |
| |
| <ul> |
| <li>версия ОС и исправлений, установленных на устройстве;</li> |
| <li>открытый ключ <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">подтвержденной загрузки</a> и состояние блокировки.</li> |
| </ul> |
| |
| <p>Дополнительная информация об аппаратном хранилище ключей содержится |
| в соответствующем <a href="https://source.android.com/security/keystore/" class="external-link">руководстве</a>.</p> |
| |
| <p>В дополнение к аттестации ключей в Android N также добавлены ключи, |
| привязанные к отпечаткам пальцев, которые не отменяются при регистрации новых отпечатков.</p> |
| |
| <h2 id="network_security_config">Конфигурация сетевой безопасности</h2> |
| |
| <p>В Android N приложения могут безопасно настраивать поведение своих защищенных (HTTPS, TLS) |
| подключений, без каких-либо изменений кода, используя декларативную |
| <em>конфигурацию сетевой безопасности</em> вместо обычных ненадежных |
| программных API-интерфейсов (например, X509TrustManager).</p> |
| |
| <p>Поддерживаемые возможности:</p> |
| <ul> |
| <li><b>Пользовательские якоря доверия.</b> Позволяют приложению определить доверенные |
| центры сертификации (ЦС) для его защищенных соединений. Например, |
| приложение может доверять определенным самозаверенным сертификатам или ограниченному набору общих ЦС. |
| </li> |
| <li><b>Замена при отладке.</b> Позволяет разработчику безопасно отладить |
| защищенные соединения своего приложения без дополнительного риска для установленной базы. |
| |
| </li> |
| <li><b>Отказ от передачи данных открытым текстом.</b> Позволяет приложению защитить себя от |
| случайной передачи данных открытым текстом.</li> |
| <li><b>Прикрепление сертификатов.</b> Дополнительная возможность, позволяющая приложению |
| ограничить доверенные ключи сервера для защищенных соединений.</li> |
| </ul> |
| |
| <p>Дополнительная информация содержится в документе <a href="{@docRoot}preview/features/security-config.html">Конфигурация сетевой безопасности</a>. |
| </p> |
| |
| <h2 id="default_trusted_ca">Доверенный центр сертификации по умолчанию</h2> |
| |
| <p>По умолчанию приложения для Android N могут доверять только системным сертификатам |
| и не доверяют ЦС, добавленным пользователем. Если приложению для Android N |
| требуется доверять пользовательским ЦС, ему следует указать в |
| <a href="{@docRoot}preview/features/security-config.html">конфигурации сетевой безопасности</a> эти доверенные пользовательские ЦС. |
| </p> |
| |
| <h2 id="apk_signature_v2">Схема получения подписи APK, версия 2</h2> |
| |
| <p>Класс PackageManager теперь поддерживает подтверждение приложений с использованием схемы подписи APK |
| версии 2. Вторая версия схемы подписи APK применяется ко всему файлу, |
| что существенно ускоряет подтверждение и повышает надежность, позволяя обнаруживать любые несанкционированные изменения файлов APK. |
| </p> |
| |
| <p>Для поддержки обратной совместимости пакет APK должен быть подписан с помощью первой версии схемы |
| (схема подписи JAR) до того, как он будет подписан по схеме версии 2. |
| Подпись по схеме версии 2 не пройдет подтверждение, если APK будет подписан дополнительным сертификатом |
| после добавления подписи по схеме версии 2. </p> |
| |
| <p>Поддержка подписи APK по схеме версии 2 будет доступна в последующих выпусках N Developer |
| Preview.</p> |
| |
| <h2 id="scoped_directory_access">Доступ к выделенным каталогам</h2> |
| |
| <p>В Android N приложения могут использовать новые API-интерфейсы для запроса доступа к конкретным каталогам <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">внешнего хранилища</a>, |
| включая каталоги на съемных носителях, таких как SD-карты. |
| Новые API-интерфейсы значительно упрощают доступ к стандартным каталогам |
| внешнего хранилища, таким как <code>Pictures</code>. Например, приложения, работающие с фотографиями, |
| могут использовать эти API-интерфейсы вместо |
| <code>READ_EXTERNAL_STORAGE</code>, который разрешает доступ ко всем каталогам |
| хранилища или платформы Storage Access Framework, благодаря чему выполняется переход к указанному каталогу. |
| </p> |
| |
| <p>Кроме того, новые API-интерфейсы упрощают процедуру предоставления доступа к внешнему хранилищу для приложения. |
| Если вы применяете новые API, система использует простой интерфейс разрешений, |
| в котором четко указаны каталоги, к которым приложение запрашивает доступ. |
| </p> |
| |
| <p>Дополнительная информация содержится в документации для разработчиков |
| <a href="{@docRoot}preview/features/scoped-folder-access.html">Доступ к выделенным каталогам</a>. |
| </p> |
| |
| |
| |
| |
| |
| |