diff --git a/docs/html-intl/intl/ru/preview/backup/index.jd b/docs/html-intl/intl/ru/preview/backup/index.jd new file mode 100644 index 0000000000000..1f9dacc15867d --- /dev/null +++ b/docs/html-intl/intl/ru/preview/backup/index.jd @@ -0,0 +1,327 @@ +page.title=Автоматическое резервное копирование для приложений +page.tags=backup, previewresources, androidm +page.keywords=резервное копирование, автоматическое резервное копирование, предварительная версия +page.image=images/cards/card-auto-backup_2x.png +@jd:body + +
+ Пользователи зачастую тратят очень много времени и усилий на создание данных и настройку параметров в приложениях. + Поэтому одна из важнейших задач при разработке платформы — сделать так, чтобы пользователь не терял свои данные, если его устройство вышло из строя или он решил перейти на новое. + Устройства под управлением Android M Preview +отлично справляются с этой задачей, автоматически выполняя резервное копирование данных +приложения в Google Drive. Если пользователь перейдет на новое устройство, данные приложений будут автоматически перенесены +на него. +
+ ++ Автоматическое резервное копирование предусмотрено для всех приложений, установленных на устройствах под управлением Android M Preview. При этом +вам не нужно добавлять в приложение дополнительный код. Система сама предложит пользователю возможность включить или отключить +автоматическое резервное копирование данных. Вы также можете указать, для каких данных приложения следует создавать резервные копии, а для каких — нет. +
+ ++ В этой статье описывается новое поведение системы и порядок указания данных приложения, +подлежащих резервному копированию. +
+ ++ При автоматическом резервном копировании данные, создаваемые в вашем приложении на устройстве пользователя, отпраляются в +Google Drive пользователя и происходит их шифрование, что позволяет предотварить потерю данных. Хранилище для ваших данных предоставляется совершенно +бесплатно. Более того, данные резервного копирования засчитываются вне личной квоты пользователя на использование ресурсов Google Drive. В период использования M Developer Preview +пользователи могут хранить в облаке до 25 МБ данных для каждого приложения Android. +
+ ++ Автоматическое резервное копирование выполняется каждые 24 часа, когда устройство не используется, находится в режиме зарядки и подключено к сети +Wi-Fi. При соблюдении необходимых условий служба диспетчера резервного копирования отправляет все доступные резервные копии данных +в облако. Когда пользователь переходит на использование нового устройства или удаляет и заново устанавливает +приложение, для которого имеется резервная копия, выполняется операция восстановления и резервные копии данных переносятся в каталог +переустановленного приложения. +
+ ++ Примечание. Если ваше приложение использует устаревшую +службу резервного копирования Android, то +вместо нового поведения системы будет применяться существующий механизм резервного копирования. +
+ + ++ Не все данные приложения подлежат резервному копированию. В частности, временные файлы и кэш сохранять не нужно. Поэтому служба +автоматического резервного копирования по умолчанию исключает из этого процесса определенные файлы данных: +
+ ++ Резервные копии создаются для данных, создаваемых любым приложением, которое установлено на устройстве под управлением M Preview, исключение составляют только +файлы, обозначенные в предыдущем разделе. Если вы хотите самостоятельно определить, +какие данные вашего приложения подлежат резервному копированию, а какие нет, это можно сделать с помощью соответствующих настроек в манифесте приложения. +
+ ++ В зависимости о того, какие данные требуются вашему приложению и как вы их сохраняете, вам может потребоваться задать определенные правила +для включения или исключения определенных файлов или каталогов. Служба автоматического резервного копирования +поддерживает настройку таких правил посредством XML-файла конфигурации и +манифеста приложения. В манифесте приложения можно указать файл конфигурации схемы резервного копирования, как показано в примере +ниже. +
+ ++<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + package="com.my.appexample"> + <uses-sdk android:minSdkVersion="MNC"/> + <uses-sdk android:targetSdkVersion="MNC"/> + <app ... + android:fullBackupContent="@xml/mybackupscheme"> + </app> + ... +</manifest> ++ +
+ В этом примере кода атрибут android:fullBackupContent задает XML-файл,
+расположенный в каталоге res/xml/ проекта приложения, который называется
+mybackupscheme.xml. В этом файле конфигурации содержатся правила резервного
+копирования файлов. В следующем примере кода демонстрируется файл конфигурации, в котором из процесса резервного копирования исключается определенный
+файл:
+
+<?xml version="1.0" encoding="utf-8"?> +<full-backup-content> + <exclude domain="database" path="device_info.db"/> +</full-backup-content> ++ +
+ В этом примере конфигурации резервного копирования из операции исключается только определенный файл базы данных. + Для всех остальных файлов будут создаваться резервные копии. +
+ ++ Служба резервного копирования предоставляет вам возможность указать, какие файлы следует включить в процесс резервного копирования или +исключить из него. Синтаксис XML-файла конфигурации резервного копирования данных следующий: +
+ ++<full-backup-content> + <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> + <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> +</full-backup-content> ++ +
+ С помощью перечисленных ниже элементов и атрибутов можно указать файлы, которые вы хотите включить в процесс резервного копирования или исключить из +него: +
+ +<include>: используйте этот элемент, если хотите, чтобы система не создавала резервные копии всех данных в вашем приложении, как это происходит по умолчанию, а копировала только определенный набор данных.
+ Если указан тег
+<include>, система создает резервные копии только для ресурсов
+с этим элементом.
+ <exclude>: используйте этот элемент, чтобы указать набор ресурсов, которые
+следует исключить из процесса резервного копирования. В таком случае система будет создавать резервные копии всех данных в приложении, кроме ресурсов с этим
+элементом;
+ domain.: тип ресурса, который необходимо включить в резервное копирование или исключить из него. Допустимые
+значения для этого атрибута могут быть следующие:
+ root: указывает на то, что ресурс находится в корневом каталоге приложения;
+ file: соответствует ресурсу в каталоге, возвращаемом методом
+{@link android.content.Context#getFilesDir getFilesDir()};
+ database: соответствует базе данных, возвращаемой методом
+{@link android.content.Context#getDatabasePath getDatabasePath()} или классом
+{@link android.database.sqlite.SQLiteOpenHelper};
+ sharedpref: соответствует объекту {@link android.content.SharedPreferences},
+возвращаемому методом
+{@link android.content.Context#getSharedPreferences getSharedPreferences()};
+ external: указывает на то, что ресурс находится во внешнем хранилище, и соответствует
+файлу в каталоге, возвращаемом методом
+{@link android.content.Context#getExternalFilesDir getExternalFilesDir()};
+ path: путь к ресурсу, который необходимо включить в резервное копирование или исключить
+из него.
+
+ Можно запретить автоматическое резервное копирование любых данных приложения. Для этого в манифесте в элементе приложения задайте для атрибута
+android:allowBackup значениеfalse.
+ Как это делается, видно в примере кода ниже:
+
+<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + package="com.my.appexample"> + <uses-sdk android:minSdkVersion="MNC"/> + <uses-sdk android:targetSdkVersion="MNC"/> + <app ... + android:allowBackup="false"> + </app> + ... +</manifest> ++ + +
+ После создания конфигурации резервного копирования необходимо ее протестировать и убедиться, что ваше приложение сохраняет данные и впоследствии +они могут быть должным образом восстановлены. +
+ + ++ Чтобы упростить для себя анализ обработки вашего XML-файла функцией резервного копирования, прежде чем приступать к тестированию, +включите ведение журнала: +
+ ++$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE ++ +
Чтобы вручную запустить процесс резервного копирования, сначала активируйте диспетчер резервного копирования, выполнив следующую +команду: +
+ ++$ adb shell bmgr run ++ +
+ Затем вручную выполните резервное копирование вашего приложения с помощью следующей команды, указав название
+пакета в виде параметра <PACKAGE>:
+
+$ adb shell bmgr fullbackup <PACKAGE>+ + +
+ Чтобы вручную запустить процесс восстановления после резервного копирования данных приложения, выполните следующую команду, указав название
+пакета в виде параметра <PACKAGE>:
+
+$ adb shell bmgr restore <PACKAGE> ++ +
+ Предупреждение. При выполнении этого действия перед операцией +восстановления работа приложения будет остановлена и все его данные удалены. +
+ ++ Чтобы запустить процесс восстановления, удалите ваше приложение и снова установите его. Данные +приложения будут автоматически восстановлены из облака сразу по завершении установки. +
+ + ++ При возникновении проблем можно стереть резервные копии данных и все связанные с ними метаданные. Для этого +отключите и повторного включите резервное копирование в разделе Настройки > Резервное копирование, восстановите заводские настройки устройства или выполните +следующую команду: +
+ +$ adb shell bmgr wipe <TRANSPORT> <PACKAGE>+ +
+ Перед значением <TRANSPORT> должен быть префикс com.google.android.gms.
+ Чтобы получить список транспорта, выполните следующую команду:
+
$ adb shell bmgr list transports+ +
Ниже перечислены известные проблемы в работе службы автоматического резервного копирования.
+ ++ В состав SDK Android M Preview входят инструменты для разработки, системные файлы Android и файлы библиотеки, призванные +помочь вам в тестировании ваших приложений и новых API-интерфейсов, которые будут реализованы в предстоящем выпуске платформы. В этом документе +рассказывается, как загрузить необходимые компоненты Preview для тестирования ваших приложений. +
+ + ++ Загрузить SDK Preview можно с помощью менеджера SDK Android. Дополнительные сведения +о загрузке и настройке SDK Preview представлены в статье Настройка SDK Preview. +
+ + ++ В пакете документации для разработчиков, который доступен для загрузки, представлены подробные сведения об API-интерфейсах, а также о различиях между API-интерфейсами для Preview. +
+ +| Описание | +Файлы для загрузки и контрольные суммы | +
|---|---|
| Android M Preview Документация для разработчиков |
+ m-preview-1-developer-docs.zip + MD5: b65201b0d35416f5a1b7a071b52854a7 + SHA-1: d47e856aa65e06897e6edd902ad8d2b1f05ac3ec + |
+
| Устройство | +Файлы для загрузки и контрольные суммы | +
|---|---|
| Nexus 5 (GSM/LTE) "hammerhead" |
+ hammerhead-MPZ44Q-preview-55d76d3a.tgz + MD5: 9e2631b06c6525e401ceaae3677ff320 + SHA-1: 55d76d3a379b18f3363f28d8a462c236ab96fc36 + |
+
| Nexus 6 "shamu" |
+ shamu-MPZ44Q-preview-c1d6506a.tgz + MD5: 307cbf9dab0a38df4ab2639d02be12aa + SHA-1: c1d6506a74094bdb2f4b8677c7fe4967334f9ea8 + |
+
| Nexus 9 "volantis" |
+ volantis-MPZ44Q-preview-d15ad483.tgz + MD5: fae40377fd999d2b09128665c915264d + SHA-1: 7ab05f96093b2cb370b226f65931202714cbc2ca + |
+
| Nexus Player "fugu" |
+ fugu-MPZ44Q-preview-2406ba05.tgz + MD5: 815902141a85cc65e7725f005cad31d5 + SHA-1: 2406ba0598dea1e69110497ac0bc8e16789bc8fb + |
+
+ Чтобы воспользоваться образом устройства для тестирования, установите его на совместимое устройство. Следуйте +инструкциям по установке системного образа. +
+ ++ Примечание. После прошивки устройства для разработки с использованием системного образа с предварительной версией платформы +она будет автоматически обновлена до следующего выпуска Preview по беспроводной сети. +
+ ++ Чтобы удалить Preview и восстановить заводские настройки устройства, перейдите на сайт +developers.google.com/android +и загрузите образ, который требуется использовать для прошивки. Следуйте инструкциям, приведенным на странице, +чтобы прошить ваше устройство с использованием выбранного образа. +
+ + + + + + + + diff --git a/docs/html-intl/intl/ru/preview/features/app-linking.jd b/docs/html-intl/intl/ru/preview/features/app-linking.jd new file mode 100644 index 0000000000000..f991717b1ea6e --- /dev/null +++ b/docs/html-intl/intl/ru/preview/features/app-linking.jd @@ -0,0 +1,123 @@ +page.title=Связи приложений +page.image=images/cards/card-app-linking_2x.png +page.keywords=связывание приложений, прямые ссылки, намерения +@jd:body + ++ Система намерений Android представляет собой гибкий механизм, позволяющий приложениям обрабатывать контент и запросы. + Многие приложения могут объявлять в своих фильтрах намерений соответствующие шаблоны URI. При нажатии пользователем на веб-ссылку +, у которой нет обработчика запуска по умолчанию, платформа может выдать ему диалоговое окно со списком доступных + приложений, объявивших соответствующие фильтры намерений. +
+ ++ В Android M Developer Preview представлена поддержка связей приложений. Она выгодно отличается от существующих методов обработки ссылок, + предоставляя разработчикам возможность связывать приложение с принадлежащим им веб-доменом. Благодаря этой связи +платформа автоматически, не спрашивая у пользователя, определит приложение, которое следует использовать по умолчанию для обработки определенной +веб-ссылки. +
+ + ++ Чтобы установить связь, владельцу сайта следует объявить связь с приложением. Для этого владелец +размещает в домене файл JSON с именем {@code statements.json}. Местопложение файла должно быть хорошо известно. + +
+ +http://<domain>:<optional port>/.well-known/statements.json+ +
+ Примечание. + В период использования M Developer Preview проверка файла JSON выполняется по протоколу HTTP. В официальном +выпуске платформы она будет осуществляться по зашифрованному протоколу HTTPS. +
+ ++ В этом файле JSON содержатся сведения о приложении Android, которое следует использовать в качестве обработчика по умолчанию для URL +в этом домене. Для определения приложения используются следующие поля: +
+ +keytool -list -v -keystore my-release-key.keystore+
+ Ниже представлен пример содержимого и формата файла +{@code statements.json}. +
+ +
+[{
+ "relation": ["delegate_permission/common.handle_all_urls"],
+ "target": {
+ "namespace": "android_app",
+ "package_name": "<package name>",
+ "sha256_cert_fingerprints": ["6C:EC:C5:0E:34:AE....EB:0C:9B"]
+ }
+}]
+
+
+
++ Приложение может отправить платформе запрос об автоматической проверке любых связей приложений, определенных в именах узлов в элементах данных +его фильтров намерений, с использованием файлов {@code statements.json}, размещенных в +соответствующих веб-доменах. Чтобы запросить проверку связи приложений, добавьте к каждому необходимому фильтру намерений в манифесте атрибут {@code android:autoVerify}, +как показано в следующем фрагменте кода +манифеста: +
+ ++<activity ...> + <intent-filter android:autoVerify="true"> + <action android:name="android.intent.action.VIEW" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + <data android:scheme="http" android:host="www.android.com" /> + <data android:scheme="https" android:host="www.android.com" /> + </intent-filter> +</activity> ++ +
+ Если в манифесте приложения присутствует атрибут {@code android:autoVerify}, платформа пытается +проверить связи приложений при установке приложения. Если платформе не +удается сделать это, приложение не выбирается в качестве предпочтительного для обработки веб-ссылок. В следующий раз, когда пользователь +нажмет на одну из ссылок, платформа снова отобразит для него +соответствующее диалоговое окно. +
+ ++ Примечание. При тестировании существует вероятность ложных срабатываний, когда проверка завершается +сбоем, но при этом пользователь установил в системном приложении «Настройки» ваше приложение как используемое по умолчанию при вызове поддерживаемых ссылок +. В таком случае диалоговое окно не отображается, а ссылка ведет напрямую в ваше приложение, +однако это происходит из-за настроек пользователя и не означает, что проверка пройдена успешно. +
+ + ++ Пользователи могут изменить настройки связи приложений и выбрать предпочтительный для них способ обработки URL. Для просмотра связей приложений и управления ими +можно воспользоваться системным приложением «Настройки» (в разделе Настройки > Приложения > Информация о приложении > +Открывать по умолчанию. +
diff --git a/docs/html-intl/intl/ru/preview/index.jd b/docs/html-intl/intl/ru/preview/index.jd new file mode 100644 index 0000000000000..27adbf98b00b8 --- /dev/null +++ b/docs/html-intl/intl/ru/preview/index.jd @@ -0,0 +1,67 @@ +page.title=Android M Developer Preview +page.tags="preview", +meta.tags="preview, M preview", androidm +fullpage=true +section.landing=true +header.hide=1 +footer.hide=1 +@jd:body + + + ++Чтобы приступить к работе с пакетом SDK Android Preview, примите указанные ниже положения и условия. +Как описано ниже, обратите внимание, что это предварительная версия пакета SDK Android, которая может быть изменена и которую вы используете на свой страх и риск. Пакет SDK Android Preview не является стабильным и может содержать ошибки и дефекты, которые могут повредить ваши компьютеры, устройства и данные. +
+ ++Это лицензионное соглашение для пакета SDK Android Preview (далее «Лицензионное соглашение»). +
++ Ниже представлены примеры кода для M Developer Preview. Чтобы загрузить примеры в +Android Studio, выберите File > Import Samples. +
+ ++ Примечание. Эти проекты предназначены для использования +в Gradle и Android Studio. +
+ + ++ В Android M изменился подход к использованию системных разрешений. Пользователям теперь предлагается предоставить разрешения +во время выполнения, а не во время установки приложения. В примере ниже показано, как запрашивать такие разрешения. + +
+ + + ++ В этом примере проиллюстрировано, как использовать учетные данные устройства для авторизации в приложении. +
+ + + ++ В этом примере показано, как распознавать зарегистрированные отпечатки пальцев для авторизации пользователя в +приложении. +
+ + + ++ В Android M представлена функция автоматического резервного копирования настроек приложений. В примере кода ниже показано, +как добавить в приложение правила фильтрации для управления резервным копированием настроек. +
+ + + +
+ В этом примере кода можно увидеть порядок использования API-интерфейса Camera2 для получения буферов камеры RAW и сохранения их
+в виде файлов DNG.
+
+ В примере кода ниже показано, как
+NotificationManager
+может сообщить о количестве уведомлений, которое в настоящее время отображает ваше приложение.
+
Пакет SDK M Developer Preview можно загрузить с помощью менеджера SDK Android. +В этой статье мы исходим из того, что вы уже знакомы с разработкой приложений Android и умеете работать с +менеджером SDK Android и создавать проекты. Тем, кто только начинает работу с +Android, рекомендуется сначала обратиться к разделу Создание +первого приложения.
+ +Для работы Developer Preview лучше всего подходит Android Studio 1.3, которая, кстати, +также является предварительной версией. Для работы с пакетом SDK Preview настоятельно рекомендуется установить предварительную версию +Android Studio 1.3.
+ +Внимание! Предварительная версия Android +Studio 1.3 (сборка Canary) по-прежнему находится на стадии разработки. Если для тестирования + M Developer Preview вы используете свой основной компьютер для разработки, вы можете дополнительно установить +Android Studio для целей тестирования.
+ +Порядок установки предварительной версии Android Studio 1.3
+ +В операционной системе OSX панель Appearance & +Behavior +находится в Android Studio в окне Preferences.
+Порядок добавления компонентов SDK Preview в среду разработки
+ +В операционной системе OSX панель Appearance & +Behavior +находится в Android Studio в окне Preferences.
+После выполнения этих действий компоненты предварительной версии +доступны для использования в вашей среде разработки.
+ + ++ Если вы хотите воспользоваться API-интерфейсами предварительной версии, создайте или обновите проект разработки так, чтобы в нем использовались +компоненты предварительной версии. +
+ + ++ Для создания проекта в предварительной версии рекомендуется использовать Android Studio. Выполните действия, +приведенные в разделе Создание проекта, +пока в мастере проекта не появится экран Form Factors. Затем выполните +действия по созданию проекта, настроенного для предварительной версии. +
+ +
+ В существующем проекте следует изменить его конфигурацию и настроить его на использование API-интерфейсов предварительной версии. В
+среде разработки откройте файл build.gradle для вашего модуля и задайте
+значения следующим образом:
+
compileSdkVersion задайте значение 'android-MNC';minSdkVersion задайте значение 'MNC';targetSdkVersion задайте значение 'MNC'.+ Для тестирования приложения в предварительной версии необходимо физическое или виртуальное устройство, настроенное с помощью +предварительной версии платформы. Если имеется совместимое устройство, можно установить предварительную версию +платформы для тестирования. Для тестирования также можно настроить виртуальное устройство. +
+ ++ Если у вас имеется устройство Nexus 5, Nexus 6, Nexus 9 или Android TV, для тестирования приложений вы можете установить на эти устройства +системный образ предварительной версии. +Также в Android Studio можно настроить виртуальное устройство с предварительной версией платформы, +используя для этого диспетчер виртуальных устройств Android. +
+ ++ Внимание! Установка на устройство образа с предварительной версией платформы приведет к удалению всех данных с +устройства, поэтому перед установкой обязательно создайте резервные копии необходимых данных. +
+ ++ В Android Studio можно настроить виртуальное устройство с предварительной версией платформы, +используя для этого диспетчер виртуальных устройств Android. +
+ +Порядок настройки AVD в диспетчере AVD
+ ++ Дополнительные сведения о создании виртуальных устройств для тестирования представлены в статье Управление виртуальными устройствами. +
diff --git a/docs/html-intl/intl/ru/preview/support.jd b/docs/html-intl/intl/ru/preview/support.jd new file mode 100644 index 0000000000000..816dc7f3e2e92 --- /dev/null +++ b/docs/html-intl/intl/ru/preview/support.jd @@ -0,0 +1,67 @@ +page.title=Поддержка +page.image=images/cards/card-support_16-9_2x.png + +@jd:body + ++ Если вы обнаружили ошибки или желаете поделиться своим отзывом о платформе M Developer Preview, +создайте заявку +в нашей системе отслеживания проблем. +
+ ++ Для получения дополнительной поддержки присоединяйтесь к +сообществу M Developer +Preview в Google+ и делитесь своим опытом разработки с единомышленниками. +
+ +
+
M Developer Preview, версия 1 (май 2015 г.)
+
+ Android M Developer Preview предлагает вам проверить, как будут работать ваши приложения в следующей версии +платформы. В ней реализован ряд изменений в API-интерфейсах и поведении системы, +которые могут повлиять на работу вашего приложения, как описано в статьях Обзор +API-интерфейсов и Изменения в работе. Если вы хотите обеспечить удобство работы пользователей, при тестировании +вашего приложения в предварительной версии платформы + обратите особое внимание на изменения в системе. +
+ ++ В настоящем руководстве приводится порядок тестирования функций предварительной версии с помощью вашего приложения. Советуем при этом обратить особое внимание +на работу следующих функций новой версии платформы, поскольку они в значительной мере повлияют на поведение +вашего приложения: +
+ ++ Дополнительные сведения о том, как настроить физические или виртуальные устройства с помощью системного образа предварительной версии платформы +к тестированию, представлены в статье Настройка SDK Preview. +
+ + ++ В новой модели разрешений +изменился подход к тому, каким образом пользователи смогут предоставлять разрешения для вашего приложения. Если раньше пользователь мог предоставить сразу все +разрешения в процессе установки, теперь ваше приложение должно запрашивать у него отдельные разрешения +во время работы. Это позволяет пользователю контролировать каждую операцию приложения, а также +лучше понимать, для чего приложение запрашивает то или иное разрешение. Пользователи могут в любой момент +предоставить разрешения для отдельного приложения или отозвать их. Эта новая +возможность в предварительной версии платформы, вероятнее всего, повлияет на поведение вашего приложения. Некоторые из его функций могут +пострадать или перестать работать. +
+ ++ Это касается работы всех приложений на новой платформе, даже тех, которые были разработаны для более ранних ее версий. + Платформа обеспечивает ограниченную поддержку устаревших приложений, однако вам следует приступить к +планированию перехода на новую модель разрешений уже сегодня, чтобы +опубликовать обновленную версию вашего приложения к моменту официального выпуска новой платформы. +
+ + ++ Ниже представлены советы по тестированию, которые призваны помочь вам спланировать и провести тестирование вашего приложения с использованием новой +модели разрешений. +
+ +adb shell pm list permissions -d -g+
adb shell pm [grant|revoke] <permission.name> ...+
+ Новая модель разрешений влияет на структуру и дизайн вашего приложения, а также на +работу пользователей с приложением и предлагаемые им варианты взаимодействия с вашим продуктом. Проанализируйте, как ваше приложение использует разрешения в настоящее время, +и продумайте новые варианты взаимодействия, которые хотите реализовать. В официальном выпуске +платформы будет представлена поддержка совместимости, однако мы рекомендует запланировать обновление приложения, не полагаясь +на эту поддержку. +
+ ++ Определите круг разрешений, которые действительно необходимы для работы вашего приложения, и найдите фрагменты +кода, где используются службы, защищенные разрешениями. Для этого протестируйте работу приложения на новой +платформе и проанализируйте код. При тестировании следует сосредоточиться на использовании +разрешений на выполнение путем изменения параметра {@code targetSdkVersion} приложения для использования предварительной версии. Дополнительные +сведения представлены в статье Настройка SDK Preview. +
+ ++ Протестируйте работу приложения при различных сочетаниях предоставленных и отозванных разрешений, чтобы определить варианты работы пользователя, +которые зависят от разрешений. В случаях, когда зависимость не явная или не логичная, подумайте, можно ли +перестроить или структурировать такой вариант работы, чтобы устранить зависимость или четко обозначить, +для чего требуется каждое разрешение. +
+ ++ Дополнительные сведения о поведении разрешений на выполнение и тестировании, а также советы и рекомендации по данному вопросу представлены на странице +Разрешения. + +
+ + ++ Режим «Doze» и ждущий режим приложений, предназначенные для экономии энергии, ограничивают объем данных, обрабатываемых вашим приложением в фоновом режиме, +когда устройство не используется или приложение неактивно. Ограничения, +которые система может налагать на приложения, включают ограничение или отключение доступа к сети, +приостановку выполнения фоновых задач, приостановку отправки уведомлений, игнорирование запросов на пробуждение и будильников. Чтобы гарантировать +правильную работу приложения в условиях оптимизации энергопотребления, вам следует протестировать ваше приложение, +смоделировав эти режимы. +
+ +Ниже представлен порядок тестирования режима «Doze».
+ ++$ adb shell dumpsys battery unplug +$ adb shell dumpsys deviceidle step +$ adb shell dumpsys deviceidle -h ++ +
Ниже представлен порядок тестирования ждущего режима для приложений.
+ ++$ adb shell am broadcast -a android.os.action.DISCHARGING +$ adb shell am set-idle <packageName> true ++ +
$ adb shell am set-idle <packageName> false+
Если во внутреннем хранилище вашего приложения имеются какие-либо идентификаторы устройства, такие как идентификатор Google +Cloud Messaging, +обязательно воспользуйтесь советами и рекомендациями, приведенными в статье +Автоматическое резервное копирование для приложений,чтобы исключить расположение +хранилища из списка объектов для автоматического резервного копирования.
diff --git a/docs/html-intl/intl/ru/preview/testing/performance.jd b/docs/html-intl/intl/ru/preview/testing/performance.jd new file mode 100644 index 0000000000000..fc88cbd7cc328 --- /dev/null +++ b/docs/html-intl/intl/ru/preview/testing/performance.jd @@ -0,0 +1,656 @@ +page.title=Тестирование скорости отображения +page.image=images/cards/card-test-performance_2x.png +page.keywords=скорость отображения, кадр/с, инструменты + +@jd:body + + ++ Тестирование производительности интерфейса позволяет убедиться в том, что ваше приложение не только соответствует функциональным требованиям, +но и гарантирует пользователю безупречное взаимодействие с интерфейсом с постоянной частотой отображения +60 кадров в секунду (почему именно +60 кадров/с?), без каких-либо задержек и пропущенных кадров или, как их называют, глюков. В этой +статье рассматриваются инструменты для измерения производительности интерфейса, а также предлагается подход к +интеграции этих процедур измерения производительности в ваши методы тестирования приложений. +
+ + ++ Чтобы улучшить производительность, прежде всего у вас должна иметься возможность измерить производительность +вашей системы. Когда это сделано, необходимо диагностировать и определить проблемы, которые могут возникнуть на разных этапах +процесса разработки. +
+ ++ dumpsys +– это инструмент Android, который запускается на устройстве и создает дамп интересной информации о состоянии системных +служб. После передачи в dumpsys команды gfxinfo в журнал устройства (logcat) +записываются сведения о производительности, касающиеся скорости анимации на этапе +записи. +
+ ++> adb shell dumpsys gfxinfo <PACKAGE_NAME> ++ +
+ Эта команда может создавать множество различных вариантов данных кадровой синхронизации. +
+ ++ В M Preview эта команда фиксирует в logcat агрегированный анализ данных о кадрах, полученных +за весь жизненный цикл процесса. Например: +
+ ++Stats since: 752958278148ns +Total frames rendered: 82189 +Janky frames: 35335 (42.99%) +90th percentile: 34ms +95th percentile: 42ms +99th percentile: 69ms +Number Missed Vsync: 4706 +Number High input latency: 142 +Number Slow UI thread: 17270 +Number Slow bitmap uploads: 1542 +Number Slow draw: 23342 ++ +
+ Приведенные выше статистические данные высокого уровня демонстрируют производительность отрисовки, которой обладает приложение, +а также ее стабильность при обработке множества кадров. +
+ + ++ В M Preview представлена новая команда для gfxinfo – framestats. Она позволяет получить +чрезвычайно точную информацию о кадровой синхронизации из последних кадров, что поможет вам отслеживать проблемы +и устранять их. +
+ ++>adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats ++ +
+ Данная команда предоставляет информацию о кадровой синхронизации буквально по наносекундам на основании последних 120 +кадров, созданных приложением. Ниже приводится пример необработанного результата из журнала adb после выполнения команды dumpsys gfxinfo +<PACKAGE_NAME> framestats: +
+ ++0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954, +0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120, +0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527, +0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683, ++ +
+ Каждая строка здесь представляет собой кадр, созданный приложением. В каждой строке имеется фиксированное количество +столбцов, где указано время, затраченное на каждом этапе процесса создания кадра. Более подробно этот формат рассматривается в следующем разделе, +включая сведения о том, что означает каждый столбец. +
+ + ++ Поскольку блок данных выводится в формате CSV, вы можете с легкостью вставить его в любую программу +для работы с электронными таблицами, а также собрать и обработать данные с помощью сценария. Ниже рассматривается формат +столбцов выходных данных. Все временные метки указаны в наносекундах. +
+ ++ Эти данные можно использовать несколькими способами. Простым, но полезным примером может служить +график, иллюстрирующий распределение времени кадров (FRAME_COMPLETED - INTENDED_VSYNC) в +различных диапазонах задержки (см. рисунок ниже). На графике ясно видно, что с большинством кадров +никаких проблем не возникло (ниже отметки в 16 мс; обозначено красным), однако для некоторых кадров +это значение значительно превышено. Можно обратиться к этому графику и пронаблюдать изменения по времени, +чтобы увидеть общую картину смещения или новые отличающиеся значения. Также можно создать график задержи ввода, +времени, затраченного на разметку или других интересующих вас показателей, руководствуясь множеством временных меток, +имеющихся в данных. +
+ +
+
+
+
+ Если в разделе настроек для разработчиков для параметра Profile GPU rendering задано значение In adb shell dumpsys gfxinfo,
+команда adb shell dumpsys gfxinfo выдает сведения о синхронизации
+по времени для последних 120 кадров. При этом вы увидите несколько категорий значений,
+разделенные знаком табуляции. Эти данные могут оказаться полезными для определения частей конвейера отрисовки, которые могут работать с задержкой
+при высоком уровне обработки.
+
+ Как и в случае с командой +framestats, описанной выше, вы можете с легкостью вставить полученные данные в любую программу +для работы с электронными таблицами, а также собрать и обработать их с помощью сценария. На графике ниже иллюстрируется разбивка со сведениями о количестве созданных кадров и времени, которое приложение затратило на +это. +
+ +
+
++ Результаты выполнения команды gfxinfo, копирования полученного результата, передачи его в приложение для работы +с электронными таблицами и построения графика представлены в виде столбцов. +
+ ++ Каждый столбец представляет собой один кадр анимации; его высота обозначает количество миллисекунд, +затраченных на вычисление этого кадра. Каждый цветной сегмент столбца +обозначает различный этап процесса рендеринга, что позволяет определить проблемные компоненты +приложения в плане производительности. Дополнительные сведения о +процессе рендеринга, а также о том, как оптимизировать его, представлены в видео, посвященном +аннулированию, макетам и производительности. +
+ + ++ При выполнении команды framestats, равно как и при вычислении простой кадровой синхронизации, данные собираются за достаточно короткий промежуток времени – порядка +двух секунд рендеринга. Чтобы точно указать этот промежуток времени (например, +чтобы ограничить данные определенной анимацией), можно сбросить все счетчики +и объединить собранные статистические данные. +
+ ++>adb shell dumpsys gfxinfo <PACKAGE_NAME> reset ++ +
+ Это также можно сделать совместно с выполнением самих команд создания дампа, чтобы выполнять сбор +и сброс регулярно, непрерывно получая данные за промежутки времени продолжительностью менее двух секунд. + +
+ + ++ Определение снижений производительности послужит отличным началом для отслеживания проблем, а также позволит всегда поддерживать +хорошую работоспособность приложения. Однако инструмент dumpsys позволяет лишь определить наличие проблем и приблизительный уровень их +серьезности. Вам же требуется диагностировать каждую конкретную проблему с +производительностью и найти подходящие способы ее устранения. Для этих целей прекрасно +подходит инструмент systrace. +
+ + ++ Дополнительные сведения о принципе работы конвейера рендеринга платформы Android, информация об общих проблемах, с которыми можно столкнуться при его использовании, +а также способы их устранения представлены на указанных ниже +полезных ресурсах. +
+ ++ Один из подходов к тестированию производительности интерфейса заключается в простом привлечении тестировщиков, чтобы они выполнили ряд +операций с целевым приложением, а также либо просто визуально убедились в отсутствии глюков, либо уделили достаточно много времени +тестированию приложения с помощью соответствующего инструмента. Однако такой подход имеет один важный недостаток +– человек физически не способен обрабатывать информацию при очень быстрой смене кадров. +Кроме того, такая работа занимает много времени, утомляет и не гарантирует полное отсутствие ошибок. +
+ ++ Гораздо эффективнее записать ключевые показатели производительности, полученные в ходе автоматического +тестирования интерфейса, и проанализировать их. В состав Android M Developer Preview входят новые функции ведения журналов, которые позволяют с легкостью +определить объем и серьезность глюков анимации в приложении. +Их также можно использовать для того, чтобы создать строгий процесс определения текущей производительности и отслеживать соответствие требованиям будущих задач +производительности. +
+ ++ В этой статье мы расскажем вам, как мы рекомендуем использовать такие данные, чтобы автоматизировать +тестирование производительности. +
+ ++ Этот подход большей частью сводится к двум ключевым шагам. Шаг первый: определите, что вы +тестируете и как вы это делаете. Шаг второй: произведите настройку +среды автоматизированного тестирования и ее обслуживание. +
+ + ++ Прежде чем приступить к автоматизированному тестированию, необходимо принять ряд важных решений, +чтобы правильно определить область тестирования и ваши требования. +
+ ++ Помните, что плохая производительность чаще всего выражается для пользователей в отсутствии плавной +анимации. Поэтому при определении того, какие типы действий в пользовательском интерфейсе следует протестировать, полезно +сосредоточить внимание на ключевых анимациях, наиболее важных для +взаимодействия пользователя с приложением. Ниже представлены примеры наиболее распространенных сценариев, которые может оказаться полезным определить. +
+ ++ Определите, какие из этих +ключевых анимаций следует протестироваит в первую очередь. При принятии решения подключите инженеров, дизайнеров и менеджеров по продукту. +
+ ++ С профессиональной точки зрения, может оказаться крайне важным решить, каких именно показателей производительности вы хотите добиться, и +сосредоточить усилия на создании необходимых тестов и сборе соответствующих данных. Например: +
+ ++ Во всех перечисленных случаях вам потребуется хронологическое отслеживание показателей, демонстрирующих производительность +разных версий вашего приложения. +
+ ++ Производительность приложения может меняться в зависимости от того, на каком устройстве оно установлено. Некоторые устройства могут обладать недостаточным +объемом памяти, менее производительными графическими процессорами или слабыми ЦП. Это означает, что анимации, +которые прекрасно работают на устройстве с одним оборудованием, могут вообще не работать на устройстве с другим оборудованием, и, что хуже всего, препятствовать +нормальной работе другой части конвейера. Поэтому, учитывая такую разницу +в отображении интерфейса для пользователей, выберите диапазон устройств для выполнения тестов, включив в него +как современные высокотехнологичные, так и бюджетные устройства, планшеты и т. д. При выборе диапазона устройств учитывайте разницу в производительности ЦП +, ОЗУ, разрешение экрана, его размер и т. д. Тесты, которые успешно прошли на устройстве верхнего ценового сегмента, +могут завершиться сбоем на бюджетных моделях. +
+ ++ Такие наборы инструментов, как UI Automator и +Espresso, +призваны помочь автоматизировать действия пользователей при взаимодействии с вашим приложением. Это простые инструменты, +имитирующие работу пользователя на устройстве. Для использования этих инструментов +вам необходимо создать уникальные сценарии, которые будут включать выполнение ряда действий, и воспроизвести +их на устройстве. +
+ +
+ Используя эти автоматизированные тесты в сочетании с командой dumpsys gfxinfo, вы можете быстро создать
+воспроизводимую систему, позволяющую выполнять тестирование и анализировать
+полученную информацию о производительности для каждого определенного условия.
+
+ Получив возможность протестировать интерфейс, а также настроив конвейер на сбор результатов +отдельного теста, важно выбрать инструмент, который позволит многократно выполнить +тест на нескольких устройствах, а также объединить данные о результатах +тестирования производительности для их дальнейшего анализа вашими специалистами по разработке. +
+ ++ Следует отметить, что инструменты для тестирования интерфейса (такие как UI Automator) +можно запускать прямо на целевом устройстве или в эмуляторе. Тогда как сбор командой +dumpsys gfxinfo информации о производительности выполняется на хост-компьютере, который отправляет команды из ADB. Чтобы объединить +усилия этих двух инструментов, был разработан MonkeyRunner. +Эта система написания сценариев, работающая на хост-компьютере, отправляет команды на +подключенные устройства, а также получает данные от них. +
+ ++ Набор сценариев для надлежащей автоматизации тестирования производительности интерфейса должен включать использование +системы MonkeyRunner хотя бы для выполнения следующих задач: +
+ ++ После обнаружения проблемных мест или причин снижения производительности необходимо понять, что должно быть исправлено +и внести соответствующие изменения. Если используемый инструмент для автоматизированного тестирования обеспечивает соблюдение точной разбивки +кадровой синхронизации по времени, то с его помощью можно тщательно изучить недавние подозрительные изменения в коде или макете (в случае +со снижением производительности), а также ограничить область системы, которая подлежит анализу, когда вы переключаетесь на изучение проблемы +вручную. В последнем случае прекрасно подойдет systrace. С помощью этого инструмента вы можете получить подробнейшую информацию +о синхронизации относительно каждого этапа конвейера рендеринга, относительно каждого потока и каждого ядра +системы, а также относительно любых настраиваемых маркеров событий, которые вы задаете. +
+ ++ Важно отметить трудности, с которыми можно столкнуться при получении и анализе данных синхронизации, связанных +с производительностью визуализации. Результаты по своей природе недетерминированные и зачастую +изменяются в зависимости от состояния системы, объема доступной памяти, температурного +дросселирования и времени суток. Смысл в том, что +вы можете выполнить один и тот же тест дважды и получить результаты, +которые будут похожи, но не совпадут в точности. +
+ ++ Правильный сбор и профилирование данных означает выполнение одного и того же теста +несколько раз и накопление результатов для вычисления среднего значения (для простоты назовем это +пакетом результатов). Это позволяет получить приблизительное представление о производительности +теста, когда нет необходимости в точных данных. +
+ ++ Пакеты можно использовать при изучении изменений кода, чтобы увидеть их относительное влияние на +производительность. Если средняя частота кадров для пакета результатов, полученных до изменения, больше значения для пакета, полученного +после изменения, обычно вы получаете общее повышение производительности в результате этого конкретного +изменения. +
+ ++ При выполнении любого автоматизированного тестирования интерфейса следует учитывать этот момент, +равно как и любые аномалии, которые могут возникнуть во время теста. Например, +если производительность вашего приложения неожиданно резко падает из-за проблем с оборудованием устройства (которые +не вызваны вашим приложением), возможно, вы захотите выполнить пакет повторно, чтобы получить +менее беспорядочные данные о синхронизации. +
+ ++ Итак, сколько раз следует выполнять тест, прежде чем его результаты станут значимыми? Не менее 10! + Чем больше раз вы выполняете тест (например, можно сделать 50–100 прогонов), тем выше точность результатов +(хотя, конечно, ради точности приходится поступаться временем). +