Основные рекомендации по обеспечению качества приложения

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

В них определены минимальные требования к качеству, которым должны соответствовать все приложения.

Качество адаптивных приложений

Приложения Android работают на самых разных устройствах – от компактных телефонов до планшетов, складных устройств, настольных компьютеров, подключенных дисплеев, автомобильных информационно-развлекательных систем, телевизоров и XR. Оконные режимы, такие как разделение экрана и многооконный режим, позволяют запускать приложения в изменяемых по размеру частях экрана.

Следуйте рекомендациям по обеспечению качества адаптивных и основных приложений, чтобы:

  • Создавайте приложения, оптимизированные для всех типов устройств и размеров экрана.
  • Как повысить позиции приложений в списках и результатах поиска Google Play
  • Привлекайте больше пользователей и повышайте удержание пользователей

Правила

Ниже приведены основные рекомендации по созданию качественного приложения.

Удобство использования

Стандартный визуальный дизайн и логика взаимодействия Android обеспечивают единообразие и удобство интерфейса.

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

Удобство использования

ID Тесты Описание
Consistent_UX T-Consistent_UX,
T-SD_Card
Приложение обеспечивает стабильное удобство использования для всех сценариев использования на всех типах устройств.
App_Switcher T-App_Switcher,
T-SD_Card
Приложение переходит в фоновый режим, когда фокус переключается на другое приложение. Приложение возвращается в активный режим, когда пользователь повторно активирует его из переключателя приложений Недавние.
Sleep_Resume T-Sleep_Resume,
T-SD_Card
Если приложение активно, оно приостанавливается, когда устройство переходит в спящий режим, и возобновляет работу, когда устройство выходит из него.
Lock_Resume T-Lock_Resume,
T-SD_Card
Если приложение активно, оно приостанавливается при блокировке устройства и возобновляет работу при разблокировке.

Пользовательский интерфейс

ID Тесты Описание
Display_State_Parity T-Orientation_Transitions

При изменении ориентации экрана или положения устройства доступные функции и взаимодействия остаются прежними.

Fullscreen_Display T-Orientation_Transitions

Приложение заполняет окно в обеих ориентациях, и леттербокс не применяется из-за изменений конфигурации, в том числе когда пользователь складывает и раскладывает устройство.

Допускается незначительное кашетирование для компенсации небольших различий в геометрии экрана.

Orientation_Transitions T-Orientation_Transitions Приложение обрабатывает быструю смену ориентации экрана, а также складывание и раскладывание устройства без проблем с отрисовкой и потерей состояния.

Качество изображения

ID Тесты Описание
Graphic_Quality T-Graphic_Quality

Графика, текст, изображения и другие элементы интерфейса отображаются без заметных искажений, размытия или пикселизации.

  • В приложении по возможности используются векторные объекты.
  • В приложении используется качественная графика для всех целевых размеров экрана и типов устройств.
  • Отсутствие сглаживания по краям меню, кнопок и других элементов интерфейса.
Line_Length T-Line_Length Приложение обеспечивает удобочитаемость текста и текстовых блоков, ограничивая длину строки до 45–75 символов (включая пробелы) для каждого из поддерживаемых языков.
Theme_Support T-Theme_Support Контент приложения и весь веб-контент, к которому оно обращается, поддерживают как светлую, так и тёмную темы.
ID Тесты Описание
Back_Button_Nav T-Back_Nav Приложение поддерживает стандартную навигацию с помощью кнопки "Назад" и не использует собственные экранные подсказки для этой кнопки.
Back_Gesture_Nav T-Back_Nav Приложение поддерживает навигацию жестами для возврата назад и перехода на главный экран.
State_Preservation T-State_Preservation,
T-Back_Nav

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

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

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

Уведомления

ID Тесты Описание
Notification_Quality T-Notification_Quality

Уведомления содержат важную информацию о вашем приложении.

  • Не используйте уведомления для перекрестного продвижения или рекламы других продуктов, так как это строго запрещено правилами Google Play.
  • Каналы уведомлений определены в соответствии с рекомендациями, а не все уведомления отправляются из одного канала.
  • Выберите нужный приоритет уведомлений.
  • По возможности объединяйте несколько уведомлений в одну группу.
  • При необходимости задайте время ожидания для уведомлений.
  • Уведомления остаются на экране, только если они связаны с текущими событиями, например воспроизведением музыки или телефонным звонком. Подробную информацию вы найдете в разделе Функциональность.
Conversation_Quality T-Notification_Quality

Для мессенджеров, социальных приложений и чатов:

Специальные возможности

ID Тесты Описание
Touch_Target_Size T-Touch_Target_Size Область прикосновения не менее 48 dp. Ознакомьтесь с рекомендациями по размерам целевых объектов в Material Design.
Visual_Contrast T-Visual_Contrast

Текст и контент на переднем плане приложения имеют следующие коэффициенты контрастности с фоном:

  • 3:1 для крупного текста и графики.
  • 4,5:1 для мелкого текста (менее 18 pt или менее 14 pt, если текст полужирный);

Подробнее о цвете и контрасте…

Content_Description T-Content_Description Опишите каждый элемент интерфейса, кроме TextView, с помощью contentDescription.

функциональные возможности.

В приложении должны быть реализованы следующие функции:

Аудио

ID Тесты Описание
Audio_Playback_Start T-Audio_Playback_Start

Когда пользователь запускает воспроизведение аудио, приложение должно в течение одной секунды выполнить одно из следующих действий:

  • Начать воспроизведение
  • Добавьте визуальный индикатор, показывающий, что аудиоданные подготавливаются.
Audio_Focus_Request T-Audio_Focus_Request Приложение должно запрашивать аудиофокус, когда начинается воспроизведение аудио, и отменять запрос, когда воспроизведение прекращается.
Audio_Focus_Change T-Audio_Focus_Change Приложение должно обрабатывать запросы других приложений на управление звуком. Например, приложение может уменьшить громкость воспроизведения, когда другое приложение воспроизводит речь.
Audio_Playback_Background T-Audio_Playback_Background

Приложение должно поддерживать фоновое воспроизведение.

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

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

Audio_Notification_Style T-Audio_Notification_Style Когда приложение воспроизводит аудио в фоновом режиме, оно должно создавать уведомление со стилем MediaStyle.
Audio_Playback_Resume T-Audio_Playback_Resume Если приложение находится в фоновом режиме и воспроизведение аудио приостановлено, оно должно возобновляться, когда приложение возвращается в активный режим. В противном случае приложение должно сообщать пользователю, что воспроизведение приостановлено.

Видео

ID Тесты Описание
Video_PiP T-Video_PiP Если приложение воспроизводит видео, оно должно поддерживать режим картинка в картинке.
Video_Encoding T-Video_Encoding Если приложение кодирует видео, оно должно использовать стандарт сжатия HEVC.
Video_Playback_Background T-Video_Playback_Background

Приложение поддерживает фоновое воспроизведение видео, когда оно не является основным, в том числе когда окно приложения:

  • Свернуть
  • за другими окнами или элементами интерфейса (например, за панелью уведомлений, главным или заблокированным экраном);
  • За пределами видимой области экрана

Совместный доступ

ID Тесты Описание
System_Sharesheet T-System_Sharesheet Для отправки контента в приложении должна использоваться панель "Поделиться". Приложение может предлагать цели, недоступные для пользовательских решений.

Фоновые службы

ID Тесты Описание
Background_Service_Optimization T-Background_Service_Optimization

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

Примечание. Система накладывает различные ограничения на фоновые службы.

Ниже приведены примеры недопустимого использования фоновых служб.

  • Поддержание сетевого подключения для уведомлений
  • Поддержание подключения по Bluetooth
  • GPS включен

Подробнее о фоновых задачах…

Производительность и стабильность

Приложение должно обеспечивать оптимальную производительность, стабильность, совместимость и адаптивность.

Эффективность

ID Тесты Описание
App_Startup_Time T-App_Startup_Time Приложение загружается быстро или показывает пользователю индикатор загрузки или другие подсказки, если на запуск требуется больше двух секунд.
Rendering_Performance T-Rendering_Performance Приложение отрисовывает кадры каждые 16 миллисекунд или чаще, чтобы показывать не менее 60 кадров в секунду. Подробнее о медленной отрисовке…
StrictMode_Compliance T-StrictMode_Compliance Если включен режим StrictMode (см. раздел о тестировании StrictMode), при тестировании приложения не появляются красные вспышки (предупреждения о производительности от StrictMode).

Стабильность

ID Тесты Описание
Stability_ANR T-Stability_ANR Приложение не завершает работу со сбоем и не блокирует поток UI, вызывая ошибки ANR (Android Not Responding). Используйте отчет о тестировании в Google Play, чтобы выявлять потенциальные проблемы со стабильностью. После развертывания отслеживайте показатели на странице Android Vitals в Google Play Console.

SDK

ID Тесты Описание
Android_Platform_Compatibility T-Android_Platform_Compatibility Приложение работает на последней общедоступной версии платформы Android без сбоев и серьезных проблем с основными функциями.
Target_SDK_Version T-Target_SDK_Version Приложение должно быть ориентировано на последнюю версию Android SDK, чтобы соответствовать требованиям Google Play. Для этого нужно задать значение targetSdk в файле build.gradle модуля приложения.
Compile_SDK_Version T-Target_SDK_Version Приложение создано с помощью последней версии Android SDK. Для этого в файле build.gradle модуля приложения задано значение compileSdk.
SDK_Maintenance T-SDK_Maintenance,
T-Non_SDK_Interfaces

Все используемые SDK Google и сторонних разработчиков актуальны. Любые улучшения этих SDK, связанные со стабильностью, совместимостью или безопасностью, должны своевременно предоставляться пользователям.

Если вы используете SDK от Google, выбирайте те, которые работают на основе сервисов Google Play. Эти SDK обратно совместимы, автоматически обновляются, уменьшают размер пакета приложения и эффективно используют ресурсы устройства.

Non_SDK_Interfaces T-Non_SDK_Interfaces Приложение не использует интерфейсы, не относящиеся к SDK.
Production_Build_Quality T-Production_Build_Quality В рабочей версии приложения нет библиотек отладки. Они могут вызывать проблемы с производительностью и безопасностью.

Батарея

ID Тесты Описание
Power_Management T-Power_Management

Приложение поддерживает функции управления энергопотреблением Спящий режим и App Standby.

Приложения могут запрашивать исключение из режима энергосбережения. Ознакомьтесь с разделом Поддержка других сценариев использования в статье Оптимизация для спящего режима и App Standby.

Конфиденциальность и безопасность

Приложение безопасно обрабатывает пользовательские данные и личную информацию и предоставляет соответствующие уровни разрешений.

Приложения, опубликованные в Google Play, также должны соответствовать правилам Google Play в отношении пользовательских данных, чтобы защищать конфиденциальность пользователей.

Разрешения

ID Тесты Описание
Minimize_Permissions T-Minimize_Permissions Приложение запрашивает только те разрешения, которые необходимы для работы. Для некоторых разрешений, например на доступ к местоположению, приложение по возможности использует приблизительные данные вместо точных. Подробнее о том, как свести к минимуму запросы разрешений.
Sensitive_Permissions T-Sensitive_Permissions

Приложение запрашивает доступ к конфиденциальным данным (например, группам разрешений для SMS или списка вызовов или местоположению) или платным сервисам (например, к телефону или SMS), только если это напрямую связано с основными функциями приложения. Пользователь должен быть явно проинформирован о последствиях предоставления этих разрешений.

В зависимости от того, как ваше приложение использует разрешения, может быть доступен альтернативный способ реализации функций без доступа к конфиденциальной информации. Например, вместо того чтобы запрашивать разрешения, связанные с контактами пользователя, используйте неявное намерение.

Runtime_Permissions T-Runtime_Permissions Приложение запрашивает динамические разрешения, когда требуется доступ для работы функции, а не при запуске.
Permission_Rationale T-Permission_Rationale В приложении четко объясняется, зачем нужны разрешения.
Graceful_Degradation T-Graceful_Degradation Приложение постепенно сокращает функциональность, когда пользователи отказываются предоставить разрешение или отменяют его. Приложение не должно полностью блокировать доступ пользователя.

Данные и файлы

ID Тесты Описание
Sensitive_Data_Storage T-Sensitive_Data_Storage,
T-Sensitive_Data_Handling
Все конфиденциальные данные хранятся во внутренней памяти приложения.
Sensitive_Data_Logging T-Sensitive_Data_Logging Личные и конфиденциальные пользовательские данные не записываются в системный журнал или журнал приложения.
Hardware_IDs T-Hardware_IDs Приложение не использует несбрасываемые идентификаторы оборудования, например IMEI, для идентификации.

Резервное копирование и восстановление данных

ID Тесты Описание
App_Data_Backup T-App_Data_Backup

Приложение сохраняет пользовательские данные, настройки и состояние в резервных копиях в облаке и при переносе с одного устройства на другое.

Реализуйте автоматическое копирование в облако и настройте android:dataExtractionRules, чтобы обеспечить беспрепятственное восстановление данных при настройке нового устройства или переустановке приложения.

App_Logins_Restoration T-App_Logins_Restoration

Приложение автоматически восстанавливает аккаунты пользователей и статус входа, когда пользователь настраивает новое устройство.

Реализуйте восстановление учетных данных с помощью Менеджера учетных данных, чтобы автоматически выполнять повторную аутентификацию пользователей без необходимости входа вручную или восстановления доступа к аккаунту.

Идентификационные данные

ID Тесты Описание
Autofill_Hints T-Autofill_Hints Приложение предоставляет подсказки для автозаполнения учетных данных аккаунта и другой конфиденциальной информации, например данных кредитных карт, физического адреса и номера телефона.
Credential_Manager T-Credential_Manager В приложении используется Менеджер учетных данных для Android, который упрощает вход и поддерживает ключи доступа, федеративную идентификацию и пароли.
Biometric_Authentication T-Biometric_Authentication Приложение поддерживает биометрическую аутентификацию для защиты финансовых транзакций или конфиденциальной информации, например важных документов пользователя.

Компоненты приложения

ID Тесты Описание
Component_Export T-Component_Export

В приложении явно задан атрибут android:exported для всех действий, сервисов, широковещательных приемников и особенно поставщиков контента.

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

Component_Permissions T-Component_Permissions

Все интенты и широковещательные сообщения соответствуют рекомендациям:

Component_Protection T-Component_Protection

Все компоненты, которые обмениваются контентом между приложениями, используют android:protectionLevel="signature" для специальных разрешений. Это касается действий, сервисов, широковещательных приемников и особенно поставщиков контента.

Приложения не должны полагаться на доступ к списку установленных пакетов.

Сети

ID Тесты Описание
Network_Security_Traffic T-Network_Security_Traffic Весь сетевой трафик передается по протоколу SSL.
Network_Security_Configuration T-Network_Security_Configuration В приложении объявлена конфигурация сетевой безопасности.
Security_Provider_Initialization T-Security_Provider_Initialization Если приложение использует сервисы Google Play, поставщик услуг безопасности инициализируется при запуске приложения.

Элементы WebView

ID Тесты Описание
WebView_Asset_Loader T-WebView_Asset_Loader,
T-WebView_Navigation
Не используйте setAllowUniversalAccessFromFileURLs() для доступа к локальному контенту. Вместо него необходимо использовать WebViewAssetLoader.
WebView_JavaScript T-WebView_JavaScript,
T-WebView_Navigation

Веб-просмотры не используют addJavaScriptInterface() с ненадежным контентом.

В Android 6.0 (уровень API 23 и выше) используйте каналы сообщений HTML.

Выполнение

ID Тесты Описание
App_Bundles T-App_Bundles

Приложение не загружает динамически код из источников за пределами APK-файла. Используйте наборы Android App Bundle, которые включают Play Feature Delivery и Play Asset Delivery.

С августа 2021 года все новые приложения в Google Play должны публиковаться в формате набора Android App Bundle.

Криптография

ID Тесты Описание
Cryptographic_Algorithms T-Cryptographic_Algorithms Приложение использует надежные криптографические алгоритмы и генератор случайных чисел, предоставляемые платформой. Кроме того, в приложении не используются специальные алгоритмы.

Google Play

Опубликуйте приложение в Google Play.

Правила

ID Тесты Описание
Play_Content_Policies T-Play_Content_Policies Приложение строго соответствует правилам Google Play в отношении контента, не содержит неприемлемых материалов и не использует чужую интеллектуальную собственность или бренд.
Play_Content_Rating T-Play_Content_Policies Возрастные ограничения для приложения установлены в соответствии с правилами в отношении возрастных ограничений.

Страница сведений о приложении

ID Тесты Описание
Play_Feature_Graphic T-Play_Feature_Graphic,
T-Play_Graphic_Assets

Картинка для описания приложения соответствует рекомендациям, приведенным в этой статье Справочного центра. Убедитесь в следующем:

  • На странице приложения есть качественная картинка для описания
  • На картинке для описания нет изображений устройств, скриншотов и мелкого текста, который неразборчив при уменьшении масштаба и показе на экране наименьшего размера, на который рассчитано приложение.
  • Картинка не похожа на рекламу.
Play_Device_References T-Play_Graphic_Assets На скриншотах и в видео не показаны устройства, работающие не на Android.
Play_Misleading_Content T-Play_Graphic_Assets Скриншоты и видео не вводят пользователей в заблуждение относительно контента и функций приложения.

Поддержка пользователей

ID Тесты Описание
Play_User_Reviews T-Play_Content_Policies Если ошибки, о которых часто сообщают пользователи на вкладке Отзывы в Google Play, воспроизводятся и возникают на разных устройствах, они устраняются. Если ошибка возникает только на нескольких устройствах, ее все равно следует устранить, если эти устройства особенно популярны или новы.

Тестовая среда

Настройте тестовую среду следующим образом:

  • Тестирование в эмуляторе. Эмулятор Android – отличный инструмент для тестирования приложения на разных версиях Android и разрешениях экрана. Настройте эмулированные устройства (AVD), чтобы представить наиболее распространенные форм-факторы и комбинации аппаратного и программного обеспечения для вашей целевой пользовательской базы. Протестируйте приложение на разных типах устройств, используя как минимум следующие эмуляторы:

    • Складные устройства: 7,6-дюймовый складной экран с внешним дисплеем (в Менеджере AVD относится к телефонам).
    • Планшет: Pixel C 9,94 дюйма (2560 x 1800 пикселей)
    • Тестирование уведомлений в мобильном приложении: подключите мобильное устройство или эмулятор к эмулятору Wear OS (Wear OS Round 1,84").
  • Аппаратные устройства. В тестовую среду следует включить небольшое количество реальных аппаратных устройств, представляющих основные форм-факторы и комбинации аппаратного и программного обеспечения, доступные потребителям. Вам не нужно тестировать на каждом устройстве, которое есть на рынке. Сосредоточьтесь на небольшом количестве репрезентативных устройств, даже если вы используете одно или два устройства на каждый форм-фактор.

  • Лаборатории тестирования устройств. Вы также можете использовать сторонние сервисы, такие как Firebase Test Lab, чтобы протестировать приложение на различных устройствах.

  • Протестируйте приложение на последней версии Android. Помимо тестирования на версиях Android, которые использует ваша целевая аудитория, всегда проверяйте приложение на последней версии Android. Это позволит убедиться, что последние изменения в поведении не влияют на удобство использования приложения.

Дополнительные сведения о тестировании, в том числе модульном, интеграционном и тестировании интерфейса, можно найти в статье Основы тестирования приложений для Android.

StrictMode

Чтобы протестировать производительность, включите в приложении режим StrictMode. Он позволяет StrictModeвыявить операции, которые могут повлиять на производительность, доступ к сети, а также чтение и запись файлов. Ищите потенциально проблемные операции как в основном потоке, так и в других.

Настройте правило мониторинга для каждого потока с помощью StrictMode.ThreadPolicy.Builder и включите все поддерживаемые функции мониторинга в ThreadPolicy с помощью detectAll().

Включите визуальные уведомления о нарушениях правил для ThreadPolicy с помощью penaltyFlashScreen().

Тесты

Тесты, описанные в этом разделе, помогут вам оценить основные аспекты качества приложения. Вы можете объединять их или интегрировать группы тестов в свой план тестирования.

Удобство использования

Протестируйте приложение, чтобы убедиться, что оно удобно и понятно для пользователей.

Удобство использования

ID Функция Описание
T-Consistent_UX Consistent_UX

Перейдите во все разделы приложения: на все экраны, в диалоговые окна, настройки и пути пользователя.

Выполните следующие действия:
  • Если приложение позволяет редактировать или создавать контент, играть или воспроизводить медиафайлы, обязательно протестируйте эти процессы.
  • Во время тестирования приложения попробуйте прервать его работу, например, получив уведомление или телефонный звонок. Также попробуйте изменить атрибуты устройства, такие как подключение к сети, уровень заряда батареи, доступность GPS и загрузка системы.
  • Протестируйте все процессы покупки в приложении.
T-App_Switcher App_Switcher На каждом экране приложения переключитесь на другое запущенное приложение, а затем вернитесь к тестируемому приложению с помощью переключателя приложений Недавние.
T-Sleep_Resume Sleep_Resume Нажмите кнопку питания, чтобы перевести устройство в спящий режим, а затем нажмите ее снова, чтобы вывести экран из спящего режима.
T-Lock_Resume Lock_Resume Настройте блокировку экрана на устройстве. Нажмите кнопку питания, чтобы перевести устройство в спящий режим (при этом оно будет заблокировано). Затем нажмите кнопку питания ещё раз, чтобы включить экран и разблокировать устройство.

SD-карта

ID Функция Описание
T-SD_Card Consistent_UX

Проверьте основные функции приложения, установленного на SD-карту (если приложение поддерживает такой способ установки).

Чтобы переместить приложение на SD-карту, откройте настройки приложения.

Пользовательский интерфейс

ID Функция Описание
T-Orientation_Transitions Display_State_Parity,
Fullscreen_Display,
Orientation_Transitions

На каждом экране приложения поверните устройство между альбомной и портретной ориентациями, а также сложенным и разложенным состояниями не менее трех раз.

Убедитесь, что приложение выполняет следующие действия:
  • Обеспечивает одинаковую функциональность при любой ориентации экрана и в любом состоянии складывания.
  • Окно приложения заполняется полностью во всех ориентациях экрана и состояниях складывания, без кашетирования.
  • Сохраняет состояние и не имеет проблем с отрисовкой при быстром переключении между ориентациями, а также при складывании и раскладывании устройства.

Качество изображения

ID Функция Описание
T-Graphic_Quality Graphic_Quality Проверьте все функции приложения. Убедитесь, что все визуальные элементы, включая графику, текст, изображения и другие элементы интерфейса, не искажены, не размыты и не пикселизированы.
T-Line_Length Line_Length

Проверьте все текстовые блоки в приложении. Убедитесь, что длина строк в них не превышает 45–75 символов (включая пробелы).

Проверьте следующее:
  • Композиция приемлема для всех поддерживаемых типов устройств.
  • Буквы и слова не должны быть обрезаны.
  • Нет неправильных переносов слов на кнопках или значках.
  • Достаточное расстояние между текстом и окружающими элементами.
T-Theme_Support Theme_Support Убедитесь, что весь текст читается как в светлой, так и в тёмной теме. Убедитесь, что все визуальные элементы хорошо различимы и эстетичны в светлой и темной темах.
ID Функция Описание
T-Back_Nav Back_Button_Nav,
Back_Gesture_Nav

Перейдите во все разделы приложения: на все экраны, в диалоговые окна, настройки и пути пользователя.

На любом экране приложения нажмите кнопку Назад или проведите по экрану назад. Приложение должно перейти на предыдущий или главный экран.

T-State_Preservation State_Preservation На экране каждого приложения нажмите кнопку Главный экран или проведите вверх, если вы используете навигацию жестами, а затем перезапустите приложение с экрана Все приложения.

Уведомления

ID Функция Описание
T-Notification_Quality Notification_Quality,
Conversation_Quality
Активируйте и посмотрите на панели уведомлений все типы уведомлений, которые может показывать приложение. Разверните уведомления, если это возможно (Android 4.1 и более поздние версии), и нажмите на все доступные действия.

Специальные возможности

ID Функция Описание
T-Touch_Target_Size Touch_Target_Size Убедитесь, что области прикосновения сохраняют одинаковый размер и положение на экранах всех размеров и конфигураций. Подробнее о Сканере доступности…
T-Visual_Contrast Visual_Contrast Проверьте контрастность всех визуальных элементов.
T-Content_Description Content_Description Убедитесь, что у всех элементов интерфейса, кроме TextView, есть описания контента.

функциональные возможности.

Убедитесь, что в вашем приложении реализованы следующие функции:

Аудио

ID Функция Описание
T-Audio_Playback_Start Audio_Playback_Start Начать воспроизведение аудио. Убедитесь, что в течение одной секунды приложение начинает воспроизводить аудио или показывает визуальный индикатор того, что аудиоданные подготавливаются к воспроизведению.
T-Audio_Focus_Request Audio_Focus_Request Начать воспроизведение аудио. Приложение должно запрашивать фокус воспроизведения аудио. Когда воспроизведение аудио прекращается, приложение должно отказаться от аудиофокуса (это происходит автоматически в приложениях, предназначенных для Android 12 (уровень API 31) и более поздних версий).
T-Audio_Focus_Change Audio_Focus_Change Начать воспроизведение аудио. Запустите воспроизведение аудио в другом приложении. Ваше приложение должно отреагировать на изменение фокуса аудио и остановить воспроизведение или уменьшить громкость.
T-Audio_Playback_Background Audio_Playback_Background

Начать воспроизведение аудио. Взаимодействуйте с другим неаудиоприложением в качестве активного приложения. Приложение должно продолжать воспроизводить аудио в фоновом режиме и отображать уведомление в строке состояния. Убедитесь, что вы можете управлять воспроизведением с помощью элементов управления в уведомлении.

Заблокируйте экран устройства. Приложение должно продолжить воспроизведение аудио в фоновом режиме и показать уведомление на заблокированном экране. Убедитесь, что вы можете управлять воспроизведением с помощью элементов управления в уведомлении.

T-Audio_Notification_Style Audio_Notification_Style Начать воспроизведение аудио. Взаимодействуйте с другим приложением, не воспроизводящим аудио, в качестве активного приложения. Убедитесь, что ваше приложение продолжает воспроизводить аудио в фоновом режиме и создало уведомление в стиле MediaStyle. Подробнее о работе с элементами управления мультимедиа…
T-Audio_Playback_Resume Audio_Playback_Resume Начать воспроизведение аудио. Взаимодействуйте с другим приложением, не воспроизводящим аудио, как с активным. Взаимодействуйте со своим приложением, чтобы сделать его активным. Воспроизведение аудио должно возобновиться или громкость должна восстановиться. В противном случае приложение должно сообщить пользователю, что воспроизведение приостановлено.

Видео

ID Функция Описание
T-Video_PiP Video_PiP Включите воспроизведение видео в режиме "картинка в картинке".
T-Video_Encoding Video_Encoding Убедитесь, что приложение кодирует видео с использованием стандарта сжатия HEVC.
T-Video_Playback_Background Video_Playback_Background Запустите воспроизведение видео. Сверните окно приложения или откройте другое приложение, чтобы переместить окно приложения в фоновый режим. На устройствах с поддержкой режима рабочего стола переместите окно приложения за пределы видимой области рабочего стола. Убедитесь, что воспроизведение видео не прерывается ни в одном из случаев.

Совместный доступ

ID Функция Описание
T-System_Sharesheet System_Sharesheet Создайте намерение и запустите действие, вызвав startActivity() с намерением в качестве аргумента. Подробнее о том, как использовать панель "Поделиться" в Android… В приложении должна показываться панель "Поделиться".

Фоновые службы

ID Функция Описание
T-Background_Service_Optimization Background_Service_Optimization

Используйте все основные функции приложения. Убедитесь, что не запускаются долго работающие фоновые службы.

Переключитесь на другое приложение, чтобы отправить текущее в фоновый режим. Перейдите в Настройки и проверьте, есть ли у приложения сервисы, работающие в фоновом режиме. На устройствах с Android 4.0 и более поздними версиями ОС перейдите в раздел Приложения и найдите нужное приложение на вкладке Работающие.

Производительность и стабильность

Проверьте производительность, стабильность и качество изображения.

Эффективность

ID Функция Описание
T-App_Startup_Time App_Startup_Time Запустите приложение. Убедитесь, что оно загружается быстро или показывает индикатор загрузки или другие подсказки, если на запуск требуется больше двух секунд.
T-Rendering_Performance Rendering_Performance Используйте все основные функции приложения. Убедитесь, что оно отрисовывает не менее 60 кадров в секунду. Чтобы протестировать приложение, используйте параметр Профилирование отрисовки HWUI.
T-StrictMode_Compliance StrictMode_Compliance

Включите StrictMode в приложении. Используйте все основные функции. Убедитесь, что приложение не выдает предупреждений о производительности StrictMode, то есть во время тестирования не появляются красные вспышки. Они указывают на существенные неполадки, связанные с хранилищем, доступом к сети или управлением памятью (например, утечки памяти).

Уделяйте особое внимание сборке мусора и ее влиянию на удобство для пользователей.

Стабильность

ID Функция Описание
T-Stability_ANR Stability_ANR Используйте все основные функции приложения. Убедитесь, что оно не дает сбоев и не блокирует поток UI, вызывая ошибки ANR ("Приложение не отвечает"). Проверьте отчет о тестировании в Google Play, чтобы выявить возможные проблемы со стабильностью.

SDK

ID Функция Описание
T-Android_Platform_Compatibility Android_Platform_Compatibility Запустите приложение на последней общедоступной версии платформы Android. Использование всех основных функций. Убедитесь, что приложение не дает сбоев и работает без потери основных функций.
T-Target_SDK_Version Target_SDK_Version,
Compile_SDK_Version
Проверьте файл манифеста Android и конфигурацию сборки, чтобы убедиться, что приложение создано с использованием последней доступной версии SDK (targetSdk и compileSdk).
T-SDK_Maintenance SDK_Maintenance Проверьте файл build.gradle приложения на наличие устаревших зависимостей.
T-Non_SDK_Interfaces Non_SDK_Interfaces Используйте инструмент lint в Android Studio, чтобы обнаружить использование интерфейсов, не относящихся к SDK. Альтернативные методы тестирования описаны в статье Ограничения для интерфейсов, не относящихся к SDK.
T-Production_Build_Quality Production_Build_Quality Проверьте файл build.gradle приложения на наличие библиотек отладки.

Батарея

ID Функция Описание
T-Power_Management Power_Management

Используйте все основные функции приложения в спящем режиме и режиме App Standby. Убедитесь, что будильники, таймеры, уведомления и синхронизация работают правильно в период обслуживания спящего режима и когда приложение выходит из режима App Standby.

Протестируйте работу спящего режима и App Standby с помощью команд ADB (требования и инструкции приведены в статье Тестирование спящего режима и App Standby).

Чтобы диагностировать быстрый расход батареи, используйте Android Studio Power Profiler или инструмент Battery Historian в сочетании с запланированной фоновой работой.

Конфиденциальность и безопасность

Проверьте, соответствуют ли средства защиты конфиденциальности и безопасности ожиданиям пользователей.

Разрешения

ID Функция Описание
T-Minimize_Permissions Minimize_Permissions Проверьте все разрешения, которые требуются вашему приложению, в файле манифеста, во время выполнения и в настройках приложения на устройстве (Настройки > О приложении).
T-Sensitive_Permissions Sensitive_Permissions Используйте функции приложения, которые запрашивают разрешения. Убедитесь, что приложение запрашивает разрешение на доступ к конфиденциальным данным или сервисам только для основных сценариев использования. Убедитесь, что пользователь понимает, к каким последствиям приведет предоставление доступа к конфиденциальным данным и сервисам.
T-Runtime_Permissions Runtime_Permissions Используйте все функции приложения, для которых требуются разрешения. Убедитесь, что разрешения запрашиваются по мере необходимости, то есть только при доступе к функциям, а не при запуске приложения.
T-Permission_Rationale Permission_Rationale Используйте все функции приложения, для которых требуются разрешения. Убедитесь, что в приложении объясняется, зачем нужны разрешения.
T-Graceful_Degradation Graceful_Degradation Используйте все функции приложения, для которых требуются разрешения. Запретите или отзовите разрешения. Убедитесь, что приложение предлагает альтернативный вариант использования и продолжает работать.

Данные и файлы

ID Функция Описание
T-Sensitive_Data_Storage Sensitive_Data_Storage Проверьте все данные, хранящиеся во внутренней памяти. Убедитесь, что данные, хранящиеся во внешних источниках, не являются конфиденциальными.
T-Sensitive_Data_Handling Sensitive_Data_Storage Проверьте, как обрабатываются данные, загруженные из внешнего хранилища.
T-Sensitive_Data_Logging Sensitive_Data_Logging Используйте все основные функции приложения, отслеживая журнал устройства. Убедитесь, что в журнал не записывается личная информация пользователей.
T-Hardware_IDs Hardware_IDs Используйте все основные функции приложения. Убедитесь, что приложение не использует для идентификации аппаратные идентификаторы, например IMEI.

Резервное копирование и восстановление данных

ID Функция Описание
T-App_Data_Backup App_Data_Backup

Настройте локальные предпочтения, базы данных и параметры приложения на основном устройстве. Выполните резервное копирование в облако или перенесите данные на новое устройство.

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

T-App_Logins_Restoration App_Logins_Restoration

Настройте сеанс с входом в аккаунт на основном устройстве, используя ключи доступа, пароли или функцию "Войти с аккаунтом Google". Выполните резервное копирование в облако или перенесите данные на новое устройство.

Запустите приложение на целевом устройстве после переноса и убедитесь, что аутентификация восстанавливается автоматически с помощью Restore Credentials без показа экранов входа и необходимости восстанавливать аккаунт. Подробные инструкции по тестированию приведены в разделе Тестирование учетных данных для восстановления.

Идентификационные данные

ID Функция Описание
T-Autofill_Hints Autofill_Hints Используйте все функции приложения, требующие ввода данных пользователем. Убедитесь, что приложение предоставляет подсказки для автозаполнения полей ввода, например учетных данных аккаунта и другой конфиденциальной информации.
T-Credential_Manager Credential_Manager Войдите в приложение. Убедитесь, что в нем интегрирован Менеджер учетных данных для Android, который позволяет входить с помощью ключей доступа, федеративной идентификации и паролей.
T-Biometric_Authentication Biometric_Authentication Использовать все функции приложения, для которых требуется аутентификация. Убедитесь, что приложение защищает финансовые транзакции и конфиденциальную информацию, например важные документы пользователя, с помощью биометрической аутентификации.

Компоненты приложения

ID Функция Описание
T-Component_Export Component_Export Проверьте все компоненты приложения, определенные в файле манифеста Android, на предмет правильного состояния экспорта. Свойство exported должно быть явно задано для всех компонентов.
T-Component_Permissions Component_Permissions Проверьте все разрешения, которые требуются вашему приложению, в файле манифеста, во время выполнения и в настройках приложения на устройстве (Настройки > О приложении).
T-Component_Protection Component_Protection Проверьте всех поставщиков контента, определенных в файле манифеста Android. Убедитесь, что у каждого поставщика есть подходящий protectionLevel.

Сети

ID Функция Описание
T-Network_Security_Traffic Network_Security_Traffic Объявите конфигурацию сетевой безопасности, которая отключает трафик открытого текста, а затем протестируйте приложение.
T-Network_Security_Configuration Network_Security_Configuration Проверьте конфигурацию сетевой безопасности приложения. Убедитесь, что все проверки конфигурации пройдены.
T-Security_Provider_Initialization Security_Provider_Initialization Убедитесь, что поставщик услуг безопасности инициализируется при запуске приложения для сервисов Google Play.

Элементы WebView

ID Функция Описание
T-WebView_Asset_Loader WebView_Asset_Loader Проверьте конфигурацию сетевой безопасности приложения. Убедитесь, что все проверки конфигурации пройдены.
T-WebView_JavaScript WebView_JavaScript Для каждого WebView перейдите на страницу, для которой требуется JavaScript.
T-WebView_Navigation WebView_Asset_Loader,
WebView_JavaScript
В каждом компоненте WebView попробуйте перейти на сайты и к контенту, которые не загружаются напрямую вашим приложением.

Выполнение

ID Функция Описание
T-App_Bundles App_Bundles Убедитесь, что приложение использует наборы Android App Bundle и не загружает динамически код из источников, не связанных с APK-файлом приложения.

Криптография

ID Функция Описание
T-Cryptographic_Algorithms Cryptographic_Algorithms Убедитесь, что в приложении используются надежные криптографические алгоритмы и генератор случайных чисел, предоставляемые платформой. Также убедитесь, что в приложении не используются собственные алгоритмы.

Google Play

Убедитесь, что приложение готово к публикации в Google Play.

Правила

ID Функция Описание
T-Play_Content_Policies Play_Content_Policies,
Play_Content_Rating,
Play_User_Reviews
Войдите в Google Play Console и проверьте профиль разработчика, описание приложения, скриншоты, картинку для описания приложения, возрастные ограничения и отзывы пользователей.

Страница сведений о приложении

ID Функция Описание
T-Play_Feature_Graphic Play_Feature_Graphic Скачайте картинку для описания и скриншоты и уменьшите их до размеров экранов устройств и форм-факторов, на которые вы ориентируетесь.
T-Play_Graphic_Assets Play_Feature_Graphic,
Play_Device_References,
Play_Misleading_Content
Проверьте все графические объекты, медиафайлы, текст, библиотеки кода и другой контент, который входит в приложение или файл дополнения.

Архив

Предыдущие версии основных рекомендаций по обеспечению качества приложения: