blob: ca1b6715479482bd2f0a4441cae37aaa11b9a73a [file] [log] [blame]
page.title=Основные критерии качества приложений
page.metaDescription=Качество приложений напрямую влияет на востребованность вашего приложения: как много будет его установок, каким будут рейтинг и отзывы пользователей, насколько будет популярно приложение и как долго оно будет использоваться.
page.image=/distribute/images/core-quality-guidelines.jpg
@jd:body
<div id="qv-wrapper"><div id="qv">
<h2>Критерии качества</h2>
<ol>
<li><a href="#ux">Дизайн и взаимодействие</a></li>
<li><a href="#fn">Функциональность</a></li>
<li><a href="#ps">Производительность и стабильность</a></li>
<li><a href="#listing">Соответствие требованиям Google Play</a></li>
</ol>
<h2>Тестирование</h2>
<ol>
<li><a href="#test-environment">Настройка среды тестирования</a></li>
<li><a href="#tests">Процедуры тестирования</a></li>
</ol>
<h2>См. также:</h2>
<ol>
<li><a href="{@docRoot}distribute/essentials/quality/tablets.html">Качество приложений для планшетных ПК</a></li>
<li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">Оптимизация приложений</a></li>
</ol>
</div>
</div>
<div class="top-right-float">
<img src="{@docRoot}images/gp-core-quality.png" style="margin-left: 20px;">
</div>
<p>
Пользователи Android ожидают высокого качества от устанавливаемых приложений. Качество приложений напрямую влияет
на востребованность вашего приложения: как много будет его установок, каким будут рейтинг и отзывы пользователей,
насколько будет популярно приложение и как долго оно будет использоваться
</p>
<p>
Этот документ помогает оценить основные аспекты качества вашего приложения,
используя компактный набор основных критериев качества приложений и связанные с ними процедуры проверки. Все приложения Android
должны удовлетворять этим критериям.
</p>
<p>
Прежде чем публиковать свои приложения, проверьте их на соответствие
данным критериям, убедившись, что они корректно работают на различных
устройствах, отвечают стандартам Android в отношении навигации и дизайна,
подготовлены к использованию рекламно-популяризаторских возможностей магазина Google Play. Проводимое тестирование может существенно выходить за рамки описанных здесь процедур, цель этого документа
обозначить основные признаки качества, которые должны демонстрироваться всеми приложениями, чтобы вы могли
предусмотреть их в своих планах проверки.
</p>
<p>
Если вы разрабатываете свои приложения для планшетных ПК или для
программы "Google Play для образования", необходимо учитывать
дополнительные критерии качества, которые сформулированы в документах <a href="{@docRoot}distribute/essentials/quality/tablets.html">Качество приложений
для планшетных ПК</a> и <a href="{@docRoot}distribute/essentials/gpfe-guidelines.html">Руководство по разработке
образовательных приложений</a>.
</p>
<div class="headerLine">
<h2 id="ux">
Графический дизайн и взаимодействие с пользователем
</h2>
</div>
<p>
Эти критерии подразумевают, что в вашем приложении обеспечивается стандартный графический дизайн Android,
а там где это возможно, используются шаблоны взаимодействия, делающие интерфейс пользователя согласованным
и интуитивно понятным.
</p>
<table>
<tr>
<th style="width:2px;">
Область
</th>
<th style="width:54px;">
ИД
</th>
<th>
Описание
</th>
<th style="width:54px;">
Тесты
</th>
</tr>
<tr id="UX-B1">
<td>Стандартный дизайн</td>
<td>
UX-B1
</td>
<td>
<p style="margin-bottom:.5em;">
Приложения соответствуют рекомендациям по <a href="{@docRoot}design/index.html">дизайну Android</a>
и используют общепринятые <a href="{@docRoot}design/patterns/index.html">значки и шаблоны интерфейса пользователя</a>.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>В приложении не переопределяются привычные функции системных значков (например,
кнопка "Назад").
</li>
<li>В приложении не происходит подмена системных значков совершенно новыми значками,
если используются стандартные функции интерфейса пользователя.
</li>
<li>Если в предложении предлагается адаптированная версия стандартного системного значка,
этот значок должен в значительной степени напоминать исходный системный значок и порядок работы с ним должен соответствовать поведению
системного значка.
</li>
<li>Приложение не должно переопределять или некорректно использовать стандартные шаблоны интерфейса пользователя
Android, например значки или их действия, чтобы не путать пользователей и не затруднять их работу.
</li>
</ol>
</td>
<td>
<a href="#core">CR-все</a>
</td>
</tr>
<tr>
<td rowspan="3">
Навигация
</td>
<td id="UX-N1">
UX-N1
</td>
<td>
<p>
В приложении поддерживается стандартная системная <a href="{@docRoot}design/patterns/navigation.html">навигация с помощью кнопки "Назад"</a>
, для которой не используются какие-либо адаптированные экранные подсказки.
</p>
</td>
<td>
<a href="#core">CR-3</a>
</td>
</tr>
<tr>
<td id="UX-N2">
UX-N2
</td>
<td>
<p>
Любое диалоговое окно можно закрыть с помощью кнопки "Назад".
</p>
</td>
<td>
<a href="#core">CR-3</a>
</td>
</tr>
<tr id="UX-N3">
<td>
UX-N3
</td>
<td>
При нажатии кнопки "Домой" всегда происходит переход к главному экрану
устройства.
</td>
<td>
<a href="#core">CR-1</a>
</td>
</tr>
<tr id="UX-S1">
<td rowspan="2">
Уведомления
</td>
<td>
UX-S1
</td>
<td>
<p style="margin-bottom:.5em;">
Уведомления должны соответствовать <a href="{@docRoot}design/patterns/notifications.html">рекомендациям</a> по дизайну Android. В
частности, должны быть соблюдены следующие правила.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>Несколько уведомлений (там, где это возможно) должны объединяться
в один информационный блок.
</li>
<li>Повторение уведомлений возможно только в том случае, если они относятся к текущему событию
(например, воспроизведению музыки или телефонному звонку).
</li>
<li>Уведомления не должны содержать рекламу или контент, не относящийся к основной
функции приложения, если пользователь явным образом не согласился на получение такой информации.
</li>
</ol>
</td>
<td>
<a href="#core">CR-11</a>
</td>
</tr>
<tr id="UX-S2">
<td>
UX-S2
</td>
<td>
<p style="margin-bottom:.5em;">
Приложение использует уведомления только в следующих случаях.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>Чтобы отметить контекстное изменение, связанное лично с пользователем
(например, сообщить о входящем сообщении).
</li>
<li>Чтобы выделить информацию, элементы управления, относящиеся к текущему
событию (например, воспроизведению музыки или телефонному звонку).
</li>
</ol>
</td>
<td>
<a href="#core">CR-11</a>
</td>
</tr>
</table>
<h3 class="rel-resources clearfloat">Связанные ресурсы</h3>
<div class="resource-widget resource-flow-layout col-13" data-query=
"collection:distribute/essentials/corequalityguidelines/visualdesign"
data-sortorder="-timestamp" data-cardsizes="9x3,9x3,6x3,6x3,6x3"
data-maxresults="6">
</div>
<div class="headerLine">
<h2 id="fn">
Функциональность
</h2>
</div>
<p>
Этот критерий подразумевает, что обеспечивается исключительно высокая функциональность при работе с приложением,
в нем предусмотрены необходимые уровни прав доступа.
</p>
<table>
<tr>
<th style="width:2px;">
Область
</th>
<th style="width:54px;">
ИД
</th>
<th>
Описание
</th>
<th style="width:54px;">
Тесты
</th>
</tr>
<tr id="FN-P1">
<td rowspan="2">
Права доступа
</td>
<td>
FN-P1
</td>
<td>
Приложение запрашивает только <em>абсолютный минимум</em> прав доступа,
которые необходимы ему для поддержания основных функциональных возможностей.
</td>
<td rowspan="2">
<a href="#core">CR-11</a>
</td>
</tr>
<tr id="FN-P2">
<td>
FN-P2
</td>
<td>
<p style="margin-bottom:.5em;">
Приложение не запрашивает прав доступа к наиболее важным данным (например,
к контактам или системному журналу), а также к платным сервисам
(например, службам дозвона или отправки СМС), если это не связано с основной функциональностью данного
приложения.
</p>
</td>
</tr>
<tr id="FN-L1">
<td>
Место установки
</td>
<td>
FN-L1
</td>
<td>
<p style="margin-bottom:.5em;">
Приложение нормально работает при установке на SD-карту (если такая возможность поддерживается приложением).
</p>
<p style="margin-bottom:.25em;">
Поддержка установки на SD-карту рекомендована для всех больших приложений
(превышающих 10 МБ). См. в руководстве разработчика в разделе <a href="{@docRoot}guide/topics/data/install-location.html">Место
установки приложения</a> информацию о том,
какие типы приложений должны поддерживать установку на SD-карты.
</p>
</td>
<td>
<a href="#SD-1">SD-1</a>
</td>
</tr>
<tr id="FN-A1">
<td rowspan="4">
Звук
</td>
<td>
FN-A1
</td>
<td>
Звук не должен воспроизводиться, если отображение на экране выключено, за исключением случаев, когда
это является основной функциональной задачей (например, если приложение музыкальный проигрыватель).
</td>
<td>
<a href="#core">CR-7</a>
</td>
</tr>
<tr id="FN-A2">
<td>
FN-A2
</td>
<td>
Звук не должен воспроизводиться,<a href="http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html">
если экран заблокирован</a>, за исключением случаев, когда это является основной функциональной задачей приложения.
</td>
<td>
<a href="#core">CR-8</a>
</td>
</tr>
<tr id="FN-A3">
<td>
FN-A3
</td>
<td>
Звук не должен воспроизводиться на главном экране или при переходе в другое
приложение, если это не является основной функциональной задачей данного приложения.
</td>
<td>
<a href="#core">CR-1,<br>
CR-2</a>
</td>
</tr>
<tr id="FN-A4">
<td>
FN-A4
</td>
<td>
Воспроизведение звука возобновляется при переходе в приложение
или пользователю сообщается, что воспроизведение приостановлено.
</td>
<td>
<a href="#core">CR-1, CR-8</a>
</td>
</tr>
<tr id="FN-U1">
<td rowspan="3">
Графика и интерфейс пользователя
</td>
<td>
FN-U1
</td>
<td>
<p style="margin-bottom:.5em;">
Приложение поддерживает как альбомную так и книжную ориентацию экрана (если возможно).
</p>
<p style="margin-bottom:.25em;">
В обоих ориентациях экрана поддерживаются равные функциональные
возможности и действия. Допустимы незначительные изменения в содержимом и режимах представления.
</p>
</td>
<td>
<a href="#core">CR-5</a>
</td>
</tr>
<tr id="FN-U2">
<td>
FN-U2
</td>
<td>
<p style="margin-bottom:.5em;">
Приложение рационально использует весь экран в обеих ориентациях
без появления "черных полос" при смене ориентации.
</p>
<p style="margin-bottom:.25em;">
Допустимо отображение лишь незначительных черных полос по краям экрана,
компенсирующих незначительную разницу в геометрических размерах экранов.
</p>
</td>
<td>
<a href="#core">CR-5</a>
</td>
</tr>
<tr id="FN-U3">
<td>
FN-U3
</td>
<td>
<p style="margin-bottom:.5em;">
Приложения правильно обрабатывают быстрый переход от одной ориентации
экрана к другой, не вызывая проблем с визуальным воспроизведением.
</p>
</td>
<td>
<a href="#core">CR-5</a>
</td>
</tr>
<tr id="FN-S1">
<td rowspan="2">
Состояние пользователя и приложения
</td>
<td>
FN-S1
</td>
<td>
<p style="margin-bottom:.5em;">
В приложении не должно оставаться каких-либо запущенных служб при переходе в фоновый
режим, если это не требуется для его основной функции.
</p>
<p style="margin-bottom:.25em;">
Например, приложение не должно сохранять службы подключения
к сети для получения уведомлений, поддерживать подключение по Bluetooth
или оставлять включенным модуль GPS.
</p>
</td>
<td>
<a href="#core">CR-6</a>
</td>
</tr>
<tr id="FN-S2">
<td>
FN-S2
</td>
<td>
<p style="margin-bottom:.5em;">
Должно обеспечиваться корректное сохранение и восстановление состояние пользователя или приложения.
</p>
<p style="margin-bottom:.25em;">
Приложение сохраняет состояние пользователя или самого приложения при переходе в
фоновый режим, предотвращая случайную потерю данных при навигации с помощью
кнопки "Назад" или при других изменениях состояния. При возврате из фонового в активный режим приложение должно
восстановить сохраненное состояние и все связанные с состоянием операции, ожидавшие
выполнения, например, изменения в редактируемых полях, текущее состояние в игре,
меню, видео и другие составляющие приложения или игры.
</p>
<ol style="margin-bottom:.25em;list-style-type:lower-alpha">
<li>Когда приложение вызывается из переключателя последних приложений,
восстанавливается состояние пользователя на момент последней работы с этим приложением.
</li>
<li>Когда приложение восстанавливается после пробуждения устройства после
блокировки, приложение возвращает пользователя в состояние, соответствующее последнему
моменту работы с ним.
</li>
<li>Когда приложение повторно запускается с начального экрана или экрана приложений,
его состояние должно быть восстановлено максимально близко к предыдущему состоянию.
</li>
<li>При нажатии кнопки "Назад" приложение позволяет сохранить свое текущее состояние или
состояние пользователя, которое в противном случае будет потеряно при переходе назад.
</li>
</ol>
</td>
<td>
<a href="#core">CR-1, CR-3, CR-5</a>
</td>
</tr>
</table>
<h3 class="rel-resources clearfloat">Связанные ресурсы</h3>
<div class="resource-widget resource-flow-layout col-13" data-query=
"collection:distribute/essentials/corequalityguidelines/functionality"
data-sortorder="-timestamp" data-cardsizes="6x3" data-maxresults="6">
</div>
<div class="headerLine">
<h2 id="ps">
Производительность и стабильность
</h2>
</div>
<p>
Этот критерий предполагает, что приложения обеспечивают ожидаемые пользователем
высокую производительность, стабильность и быстрое время реакции.
</p>
<table>
<tr>
<th style="width:2px;">
Область
</th>
<th style="width:54px;">
ИД
</th>
<th>
Описание
</th>
<th style="width:54px;">
Тесты
</th>
</tr>
<tr id="PS-S1">
<td>
Стабильность
</td>
<td>
PS-S1
</td>
<td>
Не происходит аварийных или вынужденных закрытий приложения, зависаний или других
аномалий в его работе на любых поддерживаемых устройствах.
</td>
<td>
<a href="#core">CR-все</a>, <a href="#SD-1">SD-1</a>, <a href="#HA-1">HA-1</a>
</td>
</tr>
<tr id="PS-P1">
<td rowspan="2">
Производительность
</td>
<td>
PS-P1
</td>
<td>
Приложение загружается быстро или предлагает пользователю соответствующую
информацию на экране (индикатор выполнения и т. п.), если для загрузки требуется
больше двух секунд.
</td>
<td>
<a href="#core">CR-все</a>, <a href="#SD-1">SD-1</a>
</td>
</tr>
<tr id="PS-P2">
<td>
PS-P2
</td>
<td>
При включенном режиме StrictMode (см. ниже <a href="#strictmode">Тестирование в режиме
StrictMode</a>) отсутствуют красные мигания (предупреждения
StrictMode о низкой производительности) при выполнении приложения, включая воспроизведение
игр, анимацию и переходы между элементами интерфейса, а также другие элементы приложения.
</td>
<td>
<a href="#PM-1">PM-1</a>
</td>
</tr>
<tr id="PS-M1">
<td>
Мультимедиа
</td>
<td>
PS-M1
</td>
<td>
В процессе загрузки и нормальной работы с приложением звуковые и видеоданные
воспроизводятся плавно, без щелчков, заминок и прочих артефактов.
</td>
<td>
<a href="#core">CR-все</a>, <a href="#SD-1">SD-1</a>, <a href="#HA-1">HA-1</a>
</td>
</tr>
<tr id="PS-V1">
<td rowspan="2">
Качество визуализации
</td>
<td>
PS-V1
</td>
<td>
<p style="margin-bottom:.5em;">
Приложение отображает графику, тексты, изображения и различные элементы интерфейса
без заметных искажений, смазываний или эффектов пикселизации.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>Приложение обеспечивает высокое качество графики на всех поддерживаемых размерах
и форм-факторах экрана, включая <a href="{@docRoot}distribute/essentials/quality/tablet.html">устройства с большими экранами,
такие как планшетные ПК</a>.
</li>
<li>Нет ступенчатых артефактов на границах меню, кнопок и других элементах интерфейса
пользователя.
</li>
</ol>
</td>
<td rowspan="2">
<a href="#core">CR-все</a>
</td>
</tr>
<tr id="PS-V2">
<td>
PS-V2
</td>
<td>
<p style="margin-bottom:.5em;">
В приложении тексты и текстовые блоки отображаются удобными для чтения.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>Обеспечивается их правильная компоновка на всех поддерживаемых форм-факторах,
включая устройства с большими экранами, такие как планшетные ПК.
</li>
<li>Отсутствуют обрезанные буквы или слова.
</li>
<li>Нет некорректных переносов слов в названиях кнопок и значков.
</li>
<li>Имеется достаточное пространство между текстом и окружающими его элементами.
</li>
</ol>
</td>
</tr>
</table>
<h3 class="rel-resources clearfloat">Связанные ресурсы</h3>
<div class="resource-widget resource-flow-layout col-13" data-query=
"collection:distribute/essentials/core/performance" data-sortorder="-timestamp"
data-cardsizes="6x3" data-maxresults="6">
</div>
<div class="headerLine">
<h2 id="listing">
Соответствие требованиям Google Play
</h2>
</div>
<p>
Соблюдение эти критериев подразумевает готовность ваших приложений к публикации в Google Play.
</p>
<table>
<tr>
<th style="width:2px;">
Область
</th>
<th style="width:54px;">
ИД
</th>
<th>
Описание
</th>
<th style="width:54px;">
Тесты
</th>
</tr>
<tr id="GP-P1">
<td rowspan="2">
Политики
</td>
<td>
GP-P1
</td>
<td>
В приложениях должны строго соблюдаться условия <a href="http://play.google.com/about/developer-content-policy.html">Правил программы для
разработчиков приложений Google Play</a>, не должно предлагаться неуместное содержимое,
нельзя использовать интеллектуальную собственность или товарные знаки других лиц и т. д.
</td>
<td>
<a href="#gp">GP-все</a>
</td>
</tr>
<tr id="GP-P2">
<td>
GP-P2
</td>
<td>
<p style="margin-bottom:.5em;">
Должны быть правильно настроены возрастные ограничения приложения с учетом <a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&amp;answer=188189">
Руководства по определению возрастного рейтинга содержимого</a>.
</p>
<p style="margin-bottom:.25em;">
В частности, обратите внимание, что приложениям, запрашивающим доступ к данным о
местоположении устройства, нельзя назначать возрастной рейтинг "Для всех".
</p>
</td>
<td>
<a href="#gp">GP-1</a>
</td>
</tr>
<tr id="GP-D1">
<td rowspan="3">
Страница со сведениями&nbsp приложении
</td>
<td>
GP-D1
</td>
<td>
<p style="margin-bottom:.5em;">
Картинка для раздела "Рекомендуемые" должна соответствовать правилам, описанным в данной <a href="http://android-developers.blogspot.com/2011/10/android-market-featured-image.html">
публикации</a>. Проверьте следующие моменты.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>При публикации приложение должно сопровождаться качественной картинкой для раздела "Рекомендуемые".
</li>
<li>Эта представляющая приложение картинка не должна содержать изображений устройств,
снимков экранов или мелкого текста, который станет неразличим при уменьшении
масштаба на устройствах с минимальным поддерживаемым размером экрана.
</li>
<li>Картинка для раздела "Рекомендуемые" не должна напоминать рекламу.
</li>
</ol>
</td>
<td>
<a href="#gp">GP-1, GP-2</a>
</td>
</tr>
<tr id="GP-D2">
<td>
GP-D2
</td>
<td>
На снимках экранов и в видеороликах не должны показываться или упоминаться не поддерживающие Android устройства.
</td>
<td rowspan="2">
<a href="#gp">GP-1</a>
</td>
</tr>
<tr id="GP-D3">
<td>
GP-D3
</td>
<td>
На снимках экранов и в видеороликах не должна содержаться недостоверная
информация о контенте и функциональных возможностях вашего приложения.
</td>
</tr>
<tr id="GP-X1">
<td>
Поддержка пользователя
</td>
<td>
GP-X1
</td>
<td>
Ошибки, сообщаемые пользователями на вкладке "Отзывы" на странице Google Play, подлежат
исправлению, если они воспроизводимы и происходят на многих разных устройствах.
Если ошибка возникает только на нескольких устройствах, ее необходимо исправить,
если это особо популярные или новые устройства.
</td>
<td>
<a href="#gp">GP-1</a>
</td>
</tr>
</table>
<h3 class="rel-resources clearfloat">Связанные ресурсы</h3>
<div class="resource-widget resource-flow-layout col-13" data-query=
"collection:distribute/essentials/core/play" data-sortorder="-timestamp"
data-cardsizes="6x3,6x3,6x3,6x3,6x3,6x3" data-maxresults="6">
</div>
<div class="headerLine">
<h2 id="test-environment">
Настройка среды тестирования
</h2>
</div>
<p>
Чтобы оценить качество своего приложения, вам необходимо настроить подходящее
аппаратное обеспечение или эмулировать нужную среду для тестирования.
</p>
<p>
Идеальной средой для тестирования будет небольшое количество реальных устройств,
представляющих все основные форм-факторы и аппаратные/программные
комбинации, которые сейчас доступны пользователям. Нет необходимости проверять приложение на
<em>всех</em> продаваемых устройствах &mdash; лучше выберите небольшое число представителей,
буквально один-два на каждый возможный
форм-фактор.
</p>
<p>
Если у вас не получается получить реальное устройство для тестирования, необходимо
<a href="{@docRoot}tools/devices/index.html">настроить эмулируемые устройства
(AVD)</a>, воспроизводящие наиболее распространенные форм-факторы и аппаратные/программные
комбинации.
</p>
<p>
Чтобы выйти за рамки начального тестирования, можно добавить больше устройств, больше форм-факторов,
а также новые комбинации аппаратного/программного обеспечения к вашей среде тестирования. Также можно
увеличить число или сложность тестов и повысить критерии качества.
</p>
<div class="headerLine">
<h2 id="tests">
Процедуры тестирования
</h2>
</div>
<p>
Данные процедуры тестирования помогают обнаружить различные типы проблем
с качеством ваших приложений. Можно комбинировать эти тесты или интегрировать группы
тестов вместе в ваши собственные планы тестирования. См. в приведенных выше разделах сведения о том, как связаны
определенные критерии с конкретными тестами.
</p>
<table>
<tr>
<th style="width:2px;">
Тип
</th>
<th style="width:54px;">
Тест
</th>
<th>
Описание
</th>
</tr>
<tr>
<td rowspan="12" id="core">
Базовый набор
</td>
<td>
CR-0
</td>
<td>
<p style="margin-bottom:.5em;">
Пройдитесь по всем частям приложения &mdash; проверьте все экраны,
диалоги, настройки и все варианты работы пользователя.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>Если приложение позволяет редактировать или создавать контент, играть в игры
или воспроизводить мультимедийные файлы,
убедитесь, что такие сценарии включены в проверку по созданию и добавлению контента.
</li>
<li>Испытывая приложение, попробуйте внести изменения в сетевые соединения, в настройки
функций, связанных с экономией заряда батареи, GPS
или обнаружением устройства, в параметры загрузки системы и т. д.
</li>
</ol>
</td>
</tr>
<tr id="tg2">
<td id="core2">
CR-1
</td>
<td>
На каждом экране приложения нажмите кнопку перехода на начальную страницу,
затем повторно запустите приложение с экрана приложений.
</td>
</tr>
<tr id="CR-2">
<td>
CR-2
</td>
<td>
С каждого экрана приложения выполните переход в другое запущенное приложение,
а затем вернитесь в тестируемое, используя переключатель последних приложений.
</td>
</tr>
<tr id="CR-3">
<td>
CR-3
</td>
<td>
Из каждого экрана приложения каждого диалогового окна) нажмите кнопку "Назад".
</td>
</tr>
<tr id="CR-5">
<td>
CR-5
</td>
<td>
Для каждого экрана приложения не менее трех раз поверните устройство для переключения
между портретной и книжной ориентациями.
</td>
</tr>
<tr id="CR-6">
<td>
CR-6
</td>
<td>
Переключитесь в другое приложение, чтобы перевести тестируемое приложение в фоновый режим. Перейдите в меню
"Настройки" и проверьте, нет ли для тестируемого приложения каких либо работающих служб, когда оно переключено
в фоновый режим. В ОС Android 4.0 и более поздних версий перейдите на экран приложений
и найдите приложение на вкладке "Работающие". В более ранних версиях используйте "Управление
приложениями", чтобы проверить наличие запущенных служб.
</td>
</tr>
<tr id="CR-7">
<td>
CR-7
</td>
<td>
Нажмите кнопку питания, чтобы перевести устройство в спящий режим, а затем вновь
нажмите кнопку питания, чтобы экран вернулся в активное состояние.
</td>
</tr>
<tr id="CR-8">
<td>
CR-8
</td>
<td>
Настройте блокировку устройства при нажатии кнопки питания. Нажмите кнопку питания,
чтобы перевести устройство в спящий режим, а затем вновь нажмите кнопку питания,
чтобы экран вернулся в активное состояние, разблокируйте устройство.
</td>
</tr>
<tr id="CR-9">
<!-- Hardware features -->
<td>
CR-9
</td>
<td>
Для устройств с выдвижной клавиатурой сложите, а потом выдвиньте клавиатуру
хотя бы один раз. Для устройств, имеющих клавиатурные док-станции выполните подключение
устройства к док-станции.
</td>
</tr>
<tr id="CR-10">
<td>
CR-10
</td>
<td>
Для устройств, имеющих порт подключения внешнего экрана выполните подключение
этого экрана.
</td>
</tr>
<tr id="CR-11">
<td>
CR-11
</td>
<td>
Откройте панель уведомлений и внимательно просмотрите все типы уведомлений,
которые могут отображаться приложением. Раскройте уведомления, если это возможно Android 4.1
и более поздних версиях), выполните все предлагаемые действия.
</td>
</tr>
<tr id="CR-12">
<td>
CR-12
</td>
<td>
Ознакомьтесь, какие права доступа запрашиваются приложением, перейдя в "Настройки" &gt;
"Информация о приложении".
</td>
</tr>
<tr id="tg3">
<td>
Установка на SD-карту
</td>
<td>
SD-1
</td>
<td>
<p style="margin-bottom:.5em;">
Повторите тесты из серии <em>Базовый набор</em> с приложением, установленным <a href="{@docRoot}guide/topics/data/install-location.html">на SD-карту устройства</a>
(если она поддерживается устройством).
</p>
<p style="margin-bottom:.25em;">
Чтобы перенести приложение на SD-карту, выберите "Настройки &gt; Информация о приложении &gt;
Переместить на SD-карту".
</p>
</td>
</tr>
<tr id="tg32">
<td>
Аппаратное ускорение
</td>
<td>
HA-1
</td>
<td>
<p style="margin-bottom:.5em;">
Повторите тесты из серии <em>Базовый набор</em>, включив на устройстве аппаратное ускорение.
</p>
<p style="margin-bottom:.25em;">
Чтобы принудительно задействовать аппаратное ускорение (если оно поддерживается
устройством), добавьте параметр <code>hardware-accelerated="true"</code> к разделу
<code>&lt;application&gt;</code> в манифесте приложения и выполните его повторную компиляцию.
</p>
</td>
</tr>
<tr id="tg33">
<td>
Контроль производительности
</td>
<td>
PM-1
</td>
<td>
<p style="margin-bottom:.5em;">
Повторите тесты из серии <em>Базовый набор</em>, включив режим StrictMode, <a href="#strictmode">как это описано ниже</a>.
</p>
<p style="margin-bottom:.25em;">
Уделите особое внимание вопросу очистки памяти и тому, как это влияет на работу
пользователя.
</p>
</td>
</tr>
<tr id="gp">
<td rowspan="3">
Соответствие требованиям Google Play
</td>
<td>
GP-1
</td>
<td>
Войдите в <a href="https://play.google.com/apps/publish/">консоль
разработчика</a>, проверьте свой профиль разработчика, описание приложения,
снимки экранов, картинку для раздела "Рекомендуемые", настройки возрастного рейтинга, а также отзывы пользователей.
</td>
</tr>
<tr id="GP-2">
<td>
GP-2
</td>
<td>
Загрузите снимки экранов и картинку для раздела "Рекомендуемые", уменьшите
их в соответствие с размерами и форм-факторами поддерживаемых приложением
устройств.
</td>
</tr>
<tr id="GP-3">
<td>
GP-3
</td>
<td>
Проверьте все графические ресурсы, мультимедийные данные, тексты, библиотеки кодов и
прочее содержимое, упакованное в файл загрузки приложения или расширения к нему.
</td>
</tr>
<tr id="GP-4">
<td>
Платежи
</td>
<td>
GP-4
</td>
<td>
Пройдите по всем экранам своего приложения и проверьте все задействованные в нем процессы покупок.
</td>
</tr>
</table>
<h3 id="strictmode">
Тестирование в режиме StrictMode
</h3>
<p>
Для проверки производительности мы рекомендуем в приложении включить режим {@link android.os.StrictMode}
и использовать его для отслеживания операций в основном и в других
потоках приложения, которые могут негативно сказываться на быстродействии, доступе к сети,
чтении или записи файлов и т. д.
</p>
<p>
Можно настроить политики контроля каждого из потоков, используя инструмент {@link
android.os.StrictMode.ThreadPolicy.Builder} и включив все поддерживаемые
функции контроля в <code>ThreadPolicy</code помощью параметра {@link
android.os.StrictMode.ThreadPolicy.Builder#detectAll()}.
</p>
<p>
Обязательно задействуйте <strong>визуальные уведомления</strong> о нарушениях политик
в отношении <code>ThreadPolicy</code>, используя {@link
android.os.StrictMode.ThreadPolicy.Builder#penaltyFlashScreen()
penaltyFlashScreen()}.
</p>