From 4fd1a573eb0724251b5c0986c7f0ae7b36d52369 Mon Sep 17 00:00:00 2001 From: David Friedman Date: Mon, 29 Jun 2015 16:03:08 -0700 Subject: Docs: Localized M-Preview pages Bug: 21789313 Change-Id: Ifb4a45a65acd7b786e05bdf7b7dd86698093fbdf --- docs/html-intl/intl/ru/preview/behavior-changes.jd | 402 +++++++++++++++++++++ 1 file changed, 402 insertions(+) create mode 100644 docs/html-intl/intl/ru/preview/behavior-changes.jd (limited to 'docs/html-intl/intl/ru/preview/behavior-changes.jd') diff --git a/docs/html-intl/intl/ru/preview/behavior-changes.jd b/docs/html-intl/intl/ru/preview/behavior-changes.jd new file mode 100644 index 0000000..0623ea7 --- /dev/null +++ b/docs/html-intl/intl/ru/preview/behavior-changes.jd @@ -0,0 +1,402 @@ +page.title=Изменения в работе +page.keywords=предварительная версия,пакет sdk,совместимость +sdk.platform.apiLevel=MNC +@jd:body + +
+ +
+ +

Наряду с новыми функциями и возможностями, версия M Developer Preview также включает в себя ряд +системных изменений и изменений в работе API-интерфейсов. В этом документе рассматриваются +определенные ключевые изменения, о которых следует знать, чтобы учитывать их при разработке приложений.

+ +

Если вы ранее публиковали приложения для Android, то примите во внимание, +что эти изменения в платформе могут повлиять на работу ваших уже опубликованных приложений.

+ +

Разрешения на выполнение

+

В M Preview представлена новая модель разрешений: теперь пользователи могут управлять разрешениями приложений +напрямую во время работы с ними. Такая модель обеспечивает улучшенное управление +разрешениями и одновременно позволяет оптимизировать установку и автоматическое обновление для разработчиков. +Пользователи могут предоставлять разрешения или отзывать их отдельно для каждого установленного приложения.

+ +

В ваших приложениях, предназначенных для M Preview, следует в обязательном порядке проверить такие разрешения и при необходимости +запросить их. Чтобы определить, было ли вашему приложению предоставлено разрешение, вызовите новый метод +{@code Context.checkSelfPermission()}. Чтобы запросить разрешение, вызовите новый метод +{@code Activity.requestPermission()}. Даже если ваше приложение не предназначено для использования в версии M, вам все равно следует +протестировать его с использованием новой модели разрешений.

+ +

Подробные сведения о поддержке новой модели +разрешений вашим приложением представлены в статье +Разрешения. Как можно проверить влияние новой модели на ваше приложение, читайте в +руководстве по тестированию

+ +

Оптимизация экономии энергии

+

В M Preview реализован ряд новых функций оптимизации экономии энергии для неактивных устройств и приложений.

+ +

Режим «Doze»

+

Если устройство отключено от сети и остается неактивным (и с выключенным экраном) в течение определенного времени, +оно переходит в режим Doze и старается, чтобы система не выходила из спящего состояния. В этому режиме +устройство периодически возобновляет свою обычную работу на краткие промежутки времени, чтобы произвести +синхронизацию и позволить системе выполнить какие-либо отложенные операции.

+ +

Когда устройство находится в режиме «Doze», к приложениям применяются следующие ограничения:

+ +

+

После выхода из режима «Doze», устройство приступает к выполнению любых отложенных заданий и операций синхронизации.

+

Чтобы протестировать эту функцию, подключите устройство под управлением M Preview к своему компьютеру +для разработки и выполните следующие команды: +

+
+$ adb shell dumpsys battery unplug
+$ adb shell dumpsys deviceidle step
+$ adb shell dumpsys deviceidle -h
+
+

Примечание. В предстоящем выпуске службы +Google Cloud Messaging +реализована возможность назначения сообщений +с высоким приоритетом. При получении вашим приложением сообщений GCM с высоким приоритетом ему на короткое время предоставляется +доступ к сети, даже если устройство находится в режиме «Doze». +

+ +

Советы по тестированию работы приложений в режиме «Doze» представлены +в руководстве +по тестированию.

+ +

Ждущий режим для приложений

+

В M Preview система может определять, что приложения неактивны, когда они +не используются. Приложение считается неактивным по прошествии определенного периода времени до тех пор, пока система +не обнаружит один из следующих сигналов:

+ + + +

Если устройство отключено от электросети, для приложений, которые считаются неактивными, закрывается доступ к Интернету, +а их операции синхронизации и задания приостанавливаются. После подключения устройства к электросети доступ к Интернету для приложений возобновится +и они смогут приступить к выполнению любых ожидающих заданий и операций синхронизации. Если устройство +неактивно в течение длительного времени, неактивным приложениям раз в день предоставляется доступ к сети.

+ +

Чтобы протестировать эту функцию, подключите устройство под управлением M Preview к своему компьютеру +для разработки и выполните следующие команды: +

+
+$ adb shell dumpsys battery unplug
+$ adb shell am set-idle <packageName> true
+$ adb shell am set-idle <packageName> false
+$ adb shell am get-idle <packageName>
+
+ +

Примечание. В предстоящем выпуске службы +Google Cloud Messaging (GCM) +реализована возможность назначения сообщений +с высоким приоритетом. При получении вашим приложением сообщений GCM с высоким приоритетом ему на короткий промежуток времени предоставляется +доступ к сети, даже если приложение находится в неактивном состоянии. +

+ +

Советы по тестированию работы приложений в ждущем режиме представлены +в руководстве +по тестированию.

+ +

Подключаемые устройства хранения

+

+В M Preview пользователи могут подключать внешние устройства хранения, такие как SD-карты, и использовать их как внутреннее хранилище, +зашифровав и отформатировав требуемым образом. Благодаря этому + пользователи могут переносить как сами приложения, так свои файлы для этих приложений с одного устройства хранения на другое. При переносе +приложений система руководствуется настройкой +{@code android:installLocation} +в манифесте.

+ +

Если ваше приложение работает с указанными ниже API-интерфейсами или полями, следует помнить, что возвращаемые ими пути к файлам +будут динамически изменяться при перемещении приложения с внутреннего хранилища на внешнее устройство или наоборот. +При создании путей к файлам настоятельно рекомендуется всегда вызывать эти API-интерфейсы динамическим образом. +Не используйте жестко запрограммированные пути к файлам и не указывайте созданные ранее полные пути к файлам.

+ + + +

Для отладки этой функции в Developer Preview подключите USB-устройство, + к устройству Android посредством USB-кабеля On-The-Go (OTG) и выполните следующую команду:

+ +
+$ adb shell sm set-force-adoptable true
+
+ +

Отказ от HTTP-клиента Apache

+

В M Preview удалена поддержка HTTP-клиента Apache. Если ваше приложение, разработанное для +Android 2.3 (уровень API 9) или более поздней версии, использует этот клиент, вам необходимо воспользоваться вместо него классом {@link java.net.HttpURLConnection}. + Этот API-интерфейс более эффективный, поскольку он сокращает использование сетевого трафика за счет прозрачного сжатия +и кэширования ответов, а также сводит к минимуму потребление энергии. Чтобы продолжить использовать API-интерфейсы HTTP Apache, +сначала объявите в своем файле {@code build.gradle} следующую зависимость compile-time: +

+
+android {
+    useLibrary 'org.apache.http.legacy'
+}
+
+

Вместо OpenSSL в Android теперь будет использоваться библиотека +BoringSSL +. Если вы используете в ваших приложениях Android NDK, не связывайте его с криптографическими библиотеками, +которые не входят в состав API-интерфейса NDK, такими как {@code libcrypto.so} и {@code libssl.so}. Эти библиотеки +не являются общедоступными API-интерфейсами, и в разных выпусках или на разных устройствах они могут быть изменены или разбиты без предварительного уведомления. +Кроме того, этим вы можете создать уязвимости в системе безопасности вашего продукта. Вместо этого внесите изменения в +собственный код для вызова криптографических API-интерфейсов Java посредством JNI или статической ссылки на +библиотеку криптографии по своему выбору.

+ +

Изменения в классе AudioManager

+

Теперь в платформе не поддерживается настройка уровня громкости напрямую или отключение звука определенных потоков с помощью класса {@link android.media.AudioManager}. + Метод {@link android.media.AudioManager#setStreamSolo(int,boolean) +setStreamSolo()} больше не используется. Вместо него следует вызывать метод +{@code AudioManager.requestAudioFocus()}. Также больше не используется метод +{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()}; +вместо него следует вызывать метод {@code AudioManager.adjustStreamVolume()} +и передавать в него значение направления {@code ADJUST_MUTE} или {@code ADJUST_UNMUTE}.

+ +

Выделение текста

+ + + +

Теперь, когда пользователь выделяет текст в приложении, такие дополнительные действия как +Вырезать, Копировать и Вставить, можно отображать на +перемещаемой панели инструментов. Реализация взаимодействия пользователя с текстом аналогична той, которая используется для +контекстного меню, +как описано в статье +Запуск контекстного меню для отдельных представлений.

+ +

Чтобы реализовать перемещаемую панель инструментов для выделения текста, внесите в ваши существующие приложения +следующие изменения.

+
    +
  1. В объекте {@link android.view.View} или {@link android.app.Activity} измените вызовы +{@link android.view.ActionMode} с +{@code startActionMode(Callback)} на {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.
  2. +
  3. Возьмите свою реализацию класса {@code ActionMode.Callback} и сделайте его наследуемой от класса +{@code ActionMode.Callback2}.
  4. +
  5. Переопределите метод {@code Callback2.onGetContentRect()} для указания координат объекта +{@link android.graphics.Rect} контента (например, прямоугольника выделения текста) в представлении.
  6. +
  7. Если расположение прямоугольника больше недействительно и это единственный элемент, который не подлежит пересчитыванию, +вызовите метод {@code ActionMode.invalidateContentRect()}.
  8. +
+ +

Если вы используете +вспомогательную библиотеку Android версии 22.2, то помните, что перемещаемым панелям инструментов +не свойственна обратная совместимость и по умолчанию для управления объектами {@link android.view.ActionMode} +используется библиотека appcompat. Это означает, что перемещаемые панели инструментов не будут отображаться. Чтобы включить поддержку +{@link android.view.ActionMode} в +{@link android.support.v7.app.AppCompatActivity}, вызовите метод +{@code android.support.v7.app.AppCompatActivity.getDelegate()}, затем вызовите +{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} для возвращенного объекта +{@link android.support.v7.app.AppCompatDelegate} и задайте для параметра input +значение {@code false}. Этот вызов возвращает управление объектами {@link android.view.ActionMode} +платформе. На устройствах под управлением M Preview платформа поддерживает как режимы +{@link android.support.v7.app.ActionBar}, так и режимы перемещаемых панелей инструментов, тогда как на устройствах под управлением более ранних версий +поддерживаются только режимы {@link android.support.v7.app.ActionBar}.

+ +

Изменения в хранилище ключей Android

+

В M Preview +поставщик хранилища ключей Android больше не поддерживает +DSA. ECDSA по-прежнему поддерживается.

+ +

Ключи, для которых не требуется шифрование в хранилище, больше не будут удаляться при отключении или сбросе защищенного экрана блокировки +(например, пользователем или администратором устройства). Ключи, для которых требуется шифрование +в хранилище, во время таких событий будут удалены.

+ +

Изменения в работе с Wi-Fi и сетями

+ +

Ниже перечислены изменения в API-интерфейсах для работы с Wi-Fi и сетями, реализованные в M Preview.

+ + +

Изменения в службе камеры

+

В M Preview изменена модель получения доступа к ресурсам в службе камеры. + Если раньше запросы доступа обрабатывались в порядке поступления, то теперь процессы с высоким приоритетом имеют преимущество. + В работе службы камеры произошли следующие изменения:

+ + +

Среда выполнения ART

+

Среда выполнения ART теперь должным образом реализует правила доступа для метода +{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()}. Это +изменение позволило устранить проблему, связанную с тем, что в предыдущих версиях система Dalvik неправильно проверяла правила доступа. +Если ваше приложение использует метод +{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} и вы +хотите переопределить проверки доступа, вызовите метод +{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()}, присвоив параметру input +значение {@code true}. Если ваше приложение использует +библиотеку appcompat v7 или +библиотеку recyclerview v7, +вам необходимо установить актуальные версии этих библиотек. В противном случае убедитесь в том, +что любые настраиваемые классы, на которые имеются ссылки из XML, обновлены и их конструкторы классов доступны.

+ +

В M Preview обновлено поведение динамического компоновщика. Теперь он распознает разницу между +{@code soname} библиотеки и путем к ней +(ошибка 6670, о которой сообщалось в открытых источниках), +и позволяет выполнять поиск по {@code soname}. + Приложения, которые ранее работали, но содержали неправильные записи {@code DT_NEEDED} +(обычно абсолютные пути в файловой системе компьютера для сборки), теперь при загрузке могут выдавать ошибки.

+ +

В M Preview правильно реализован флаг {@code dlopen(3) RTLD_LOCAL}. Обратите внимание, что +{@code RTLD_LOCAL} используется по умолчанию, поэтому будут затронуты вызовы {@code dlopen(3)}, которые явно не используют +{@code RTLD_LOCAL} (за исключением случаев, когда ваше приложение явным образом использует{@code RTLD_GLOBAL}). Поскольку используется +{@code RTLD_LOCAL}, символы не будут доступны для библиотек, загруженных с использованием последующих вызовов +{@code dlopen(3)} (в противоположность ссылкам из записей {@code DT_NEEDED}).

+

+ +

Проверка пакетов APK

+

Теперь платформа более строго подходит к проверке пакетов APK. Пакет APK считается поврежденным, если файл объявлен +в манифесте, но отсутствует в самом пакете APK. Пакет APK подлежит повторной подписи в случае удаления любого его +содержимого.

+ +

Изменения в Android for Work

+

В M Preview представлены следующие изменения работы Android for Work:

+ -- cgit v1.1