677 lines
56 KiB
Plaintext
677 lines
56 KiB
Plaintext
|
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>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|