Чтобы заложить прочную основу для качественного приложения, следуйте основным рекомендациям по обеспечению качества приложений.
В рекомендациях определены минимальные требования к качеству, которым должны соответствовать все приложения.
Адаптивное качество приложения
Приложения для Android работают на самых разных устройствах — от компактных телефонов до планшетов, складных устройств, настольных компьютеров, подключенных дисплеев, автомобильных информационно-развлекательных систем, телевизоров и устройств XR. Режимы работы с окнами, такие как разделенный экран и оконный режим рабочего стола, позволяют приложениям работать в масштабируемых областях экрана.
Следуйте рекомендациям по адаптивному обеспечению качества приложений — совместно с основными рекомендациями по обеспечению качества приложений — чтобы:
- Создавайте приложения, оптимизированные для всех форм-факторов и размеров экрана.
- Повысьте рейтинг своих приложений в результатах поиска Google Play и Google Search.
- Привлекайте больше пользователей и повышайте уровень их удержания.
Руководящие принципы
Следующие основные рекомендации помогут вам создать базовое, но высококачественное приложение.
пользовательский опыт
Стандартный визуальный дизайн и шаблоны взаимодействия Android обеспечивают единообразный и интуитивно понятный пользовательский опыт.
По возможности используйте компоненты Material Design для создания пользовательского интерфейса вашего приложения вместо компонентов платформы Android. Material Design обеспечивает современный внешний вид и удобство использования, а также единообразие пользовательского интерфейса во всех версиях Android.
Удобство использования
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Последовательный_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 | Когда приложение находится на переднем плане, оно приостанавливается при блокировке устройства и возобновляет работу при разблокировке. |
Пользовательский интерфейс
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Display_State_Parity | T-Orientation_Transitions | Ориентация экрана и состояние сворачивания отображают, по сути, одни и те же функции и действия, сохраняя при этом функциональную идентичность. |
| Полноэкранный режим | T-Orientation_Transitions | Приложение заполняет всё окно приложения в обоих положениях и не имеет чёрных полос сверху и снизу из-за изменений в конфигурации, включая складывание и раскладывание устройства. Незначительные черные полосы по краям изображения, компенсирующие небольшие изменения геометрии экрана, допустимы. |
| Ориентационные_переходы | T-Orientation_Transitions | Приложение обеспечивает быстрые переходы между ориентациями экрана, а также сворачивание и разворачивание устройства без проблем с отображением и без потери состояния. |
Визуальное качество
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Графическое качество | T-Graphic_Quality | Приложение отображает графику, текст, изображения и другие элементы пользовательского интерфейса без заметных искажений, размытия или пикселизации.
|
| Длина строки | Длина Т-линии | Приложение обеспечивает удобочитаемость текста и текстовых блоков, ограничивая длину строки 45-75 символами (включая пробелы) для каждого из поддерживаемых приложением языков. |
| Theme_Support | T-Theme_Support | Содержимое приложения, а также весь веб-контент, к которому осуществляется доступ через приложение, поддерживают как светлую, так и темную темы оформления . |
Навигация
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Назад_Кнопка_Навигация | T-Back_Nav | Приложение поддерживает стандартную навигацию с помощью кнопки «Назад» и не использует никаких пользовательских подсказок на экране. |
| Назад_Навигация_Жестом | T-Back_Nav | Приложение поддерживает навигацию жестами для возврата назад и на главный экран. |
| Сохранение государства | Сохранение T-состояния , T-Back_Nav | Приложение сохраняет состояние пользователя или приложения при выходе из активного режима и предотвращает случайную потерю данных из-за возврата назад и других изменений состояния. При возвращении в активный режим приложение восстанавливает сохраненное состояние и все незавершенные транзакции, сохраняющие состояние. Примеры таких транзакций включают изменения в редактируемых полях, прогрессе игры, меню, видео и других разделах приложения.
|
Уведомления
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Качество_уведомлений | T-Уведомление_Качество | Уведомления предоставляют актуальную информацию, относящуюся к вашему приложению.
|
| Качество разговора | T-Уведомление_Качество | Для мессенджеров, социальных сетей и переписки:
|
Доступность
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Размер_цели_касания | T-Touch_Target_Size | Минимальное расстояние между точками касания — 48 символов. См. рекомендации по макету и типографике Material Design. |
| Визуальный_контраст | T-Визуальный_Контраст | Текст приложения и контент переднего плана сохраняют следующие коэффициенты контрастности с фоном приложения:
Узнайте больше о цвете и контрасте . |
| Content_Description | T-Content_Description | Опишите каждый элемент пользовательского интерфейса , за исключением TextView , используя contentDescription . |
Функциональность
Ваше приложение должно реализовывать следующее функциональное поведение.
Аудио
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Начало воспроизведения аудио | T-Audio_Playback_Start | Когда пользователь запускает воспроизведение аудио, приложение должно выполнить одно из следующих действий в течение одной секунды:
|
| Запрос на аудиофокусировку | T-Audio_Focus_Request | Приложение должно запрашивать фокус на аудиопотоке , когда начинается воспроизведение, и оставлять его, когда воспроизведение останавливается. |
| Изменение_фокуса_аудио | T-Audio_Focus_Change | Приложение должно обрабатывать запросы других приложений на получение аудиофокуса . Например, одно приложение может уменьшить громкость воспроизведения, когда другое приложение воспроизводит речь. |
| Фоновое воспроизведение аудио | Фоновое воспроизведение аудиофайлов (T-Audio_Playback_Background) | Приложение должно поддерживать фоновое воспроизведение . Приложение должно использовать службу переднего плана, чтобы предотвратить завершение процесса приложения системой после того, как оно перестанет быть видимым. Приложение также должно отображать постоянное, неотключаемое уведомление в строке состояния или на экране блокировки, чтобы сообщить пользователю о том, что приложение запущено. Пользователи должны иметь возможность управлять воспроизведением с помощью элементов управления на экране уведомлений или блокировки, либо с помощью элементов управления на подключенном устройстве. |
| Стиль_уведомления_аудио | T-Audio_Notification_Style | Когда приложение воспроизводит аудио в фоновом режиме, оно должно создать уведомление, оформленное с помощью MediaStyle . |
| Возобновление воспроизведения аудио | T-Audio_Playback_Resume | Если приложение находится в фоновом режиме и воспроизведение звука приостановлено, воспроизведение возобновится, когда приложение вернется на передний план, или приложение должно сообщить пользователю о том, что воспроизведение приостановлено. |
Видео
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Видео_Картинка_ | T-Video_PiP | Если приложение воспроизводит видео, оно должно поддерживать режим «картинка в картинке» . |
| Видеокодирование | T-Video_Encoding | Если приложение кодирует видео, оно должно использовать стандарт сжатия видео HEVC . |
| Фоновое изображение воспроизведения видео | Фоновое изображение воспроизведения T-Video | Приложение поддерживает фоновое воспроизведение видео, когда оно не является самым верхним окном приложения, в том числе, когда окно приложения находится в следующем состоянии:
|
Совместное использование
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| System_Sharesheet | T-System_Sharesheet | Приложение должно использовать функцию «Поделиться» в Android при обмене контентом. Приложение может предлагать целевые объекты, недоступные для пользовательских решений. |
Фоновые службы
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Оптимизация фоновых служб | T-Background_Service_Optimization | Приложение избегает запуска излишне длительных фоновых служб, обеспечивая бесперебойную работу устройства пользователя. Примечание: Система применяет различные ограничения к фоновым службам . Ниже приведены примеры неэффективного использования фоновых служб:
Для получения более подробной информации см. Обзор фоновых задач . |
Производительность и стабильность
Ваше приложение должно обеспечивать оптимальную производительность, стабильность, совместимость и быстродействие.
Производительность
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Время запуска приложения | T-App_Startup_Time | Приложение загружается быстро или отображает пользователю обратную связь на экране (индикатор прогресса или аналогичный сигнал), если загрузка приложения занимает более двух секунд. |
| Производительность рендеринга | T-Rendering_Performance | Приложение отрисовывает кадры каждые 16 (или меньше) миллисекунд, чтобы отображать не менее 60 кадров в секунду. Для получения помощи по проблемам с отрисовкой см. раздел «Медленная отрисовка» . |
| StrictMode_Compliance | T-StrictMode_Compliance | При включенном StrictMode (см. раздел тестирования в режиме StrictMode ) при тестировании приложения не отображаются красные вспышки (предупреждения о производительности, связанные с StrictMode ). |
Стабильность
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Стабильность_ANR | T-Stability_ANR | Приложение не вылетает и не блокирует поток пользовательского интерфейса, вызывая ошибки ANR (Android не отвечает) . Используйте отчет Google Play перед запуском , чтобы выявить потенциальные проблемы со стабильностью. После развертывания отслеживайте страницу Android Vitals в консоли Google Play. |
SDK
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Совместимость с платформой Android | Совместимость с платформой Android (T-Android) | Приложение работает на последней общедоступной версии платформы Android без сбоев и существенного влияния на основные функции. |
| Target_SDK_Version | T-Target_SDK_Version | Приложение использует последнюю версию Android SDK , необходимую для соответствия требованиям Google Play, путем установки значения targetSdk в файле build.gradle модуля приложения. |
| Compile_SDK_Version | T-Target_SDK_Version | Приложение создано с использованием последней версии Android SDK путем установки значения compileSdk в файле build.gradle модуля приложения. |
| SDK_Обслуживание | T-SDK_Maintenance , T-Non_SDK_Interfaces | Все используемые SDK от Google или сторонних разработчиков должны быть актуальными. Любые улучшения этих SDK, касающиеся стабильности, совместимости или безопасности, должны быть своевременно доступны пользователям. Для SDK от Google используйте SDK, работающие на базе сервисов Google Play, если они доступны. Эти SDK обратно совместимы, получают автоматические обновления, уменьшают размер пакета приложения и эффективно используют ресурсы устройства. |
| Интерфейсы, не относящиеся к SDK | T-Non_SDK_Interfaces | Приложение не использует интерфейсы, отличные от SDK . |
| Production_Build_Quality | T-Production_Build_Quality | В рабочую версию приложения не включены отладочные библиотеки. Включение отладочных библиотек в приложение может привести к проблемам с производительностью и безопасностью. |
Батарея
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Управление питанием | T-Power_Management | Приложение корректно поддерживает функции управления питанием Doze и App Standby . Приложения могут запросить исключение из режима энергосбережения. См. раздел «Поддержка» для других вариантов использования в разделе «Оптимизация для Doze и режима ожидания приложений» . |
Конфиденциальность и безопасность
Приложение безопасно обрабатывает пользовательские данные и личную информацию, предоставляя соответствующие уровни доступа.
Приложения, опубликованные в Google Play Store, также должны соответствовать политике Google Play в отношении пользовательских данных для защиты конфиденциальности пользователей.
Разрешения
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Свести_разрешения | T-Minimize_Permissions | Приложение запрашивает только самый минимум разрешений, необходимых для поддержки текущего сценария использования. Для некоторых разрешений, таких как местоположение, приложение, по возможности, использует приблизительное указание вместо подробного . См. раздел «Минимизируйте запросы на предоставление разрешений» . |
| Конфиденциальные_разрешения | T-Sensitive_Permissions | Приложение запрашивает разрешение на доступ к конфиденциальным данным (например, к группам разрешений для SMS или журнала звонков , или к местоположению ) или платным услугам (например, к номеронабирателю или SMS) только в том случае, если это напрямую связано с основными сценариями использования приложения. Последствия, связанные с этими разрешениями, должны быть четко доведены до сведения пользователя. В зависимости от того, как ваше приложение использует разрешения, может существовать альтернативный способ реализации его функциональности без необходимости доступа к конфиденциальной информации. Например, вместо запроса разрешений, связанных с контактами пользователя, используйте неявное намерение для запроса доступа. |
| Runtime_Permissions | T-Runtime_Permissions | Приложение запрашивает разрешения во время выполнения, когда запрашивается необходимая функциональность, а не во время запуска приложения. |
| Обоснование разрешения | T-Обоснование_Разрешения | В приложении чётко объясняется , почему необходимы разрешения . |
| Грациозная_деградация | T-Graceful_Degradation | Приложение корректно реагирует на отказ или отзыв разрешения со стороны пользователей. Приложение не должно полностью блокировать доступ пользователей. |
Данные и файлы
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Хранение конфиденциальных данных | T-Sensitive_Data_Storage , Обработка чувствительных к T данных | Все конфиденциальные данные хранятся во внутренней памяти приложения . |
| Ведение журнала конфиденциальных данных | T-Sensitive_Data_Logging | В системный журнал или журнал отдельного приложения не записываются никакие личные или конфиденциальные данные пользователей . |
| Идентификаторы оборудования | T-Hardware_IDs | Приложение не использует для идентификации никакие не сбрасываемые идентификаторы оборудования , такие как IMEI. |
Личность
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Подсказки автозаполнения | T-Autofill_Hints | Приложение предоставляет подсказки для автоматического заполнения учетных данных и другой конфиденциальной информации, такой как данные кредитной карты, физический адрес и номер телефона. |
| Credential_Manager | T-Credential_Manager | Приложение интегрирует Credential Manager для Android , обеспечивая удобный процесс входа в систему и объединяя поддержку паролей, федеративной идентификации и паролей. |
| Биометрическая аутентификация | T-Биометрическая_аутентификация | Приложение поддерживает биометрическую аутентификацию для защиты финансовых транзакций или конфиденциальной информации, такой как важные документы пользователя. |
Компоненты приложения
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Component_Export | T-Component_Export | Приложение явно устанавливает атрибут Экспортируются только те компоненты приложения, которые обмениваются данными с другими приложениями , или компоненты, которые должны вызываться другими приложениями . |
| Component_Permissions | T-Component_Permissions | Все намерения и трансляции соответствуют передовым практикам:
|
| Component_Protection | Защита Т-компонента | All components that share content between apps use Приложениям не следует полагаться на доступ к списку установленных пакетов. |
Сетевые технологии
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Сетевой_безопасный_трафик | T-Network_Security_Traffic | Весь сетевой трафик передается по протоколу SSL . |
| Конфигурация сетевой безопасности | T-Network_Security_Configuration | Приложение объявляет конфигурацию сетевой безопасности . |
| Инициализация поставщика безопасности | T-Security_Provider_Initialization | Если приложение использует сервисы Google Play, поставщик безопасности инициализируется при запуске приложения . |
WebViews
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| WebView_Asset_Loader | T-WebView_Asset_Loader , T-WebView_Navigation | Не используйте setAllowUniversalAccessFromFileURLs() для доступа к локальному содержимому. Вместо этого используйте WebViewAssetLoader . |
| WebView_JavaScript | T-WebView_JavaScript , T-WebView_Navigation | В веб-представлениях В Android 6.0 (уровень API 23 и выше) используйте вместо этого каналы сообщений HTML . |
Исполнение
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| App_Bundles | T-App_Bundles | Приложение не загружает динамически код извне APK-файла. Используйте пакеты приложений Android , которые включают Play Feature Delivery и Play Asset Delivery . Начиная с августа 2021 года, использование пакетов приложений Android App Bundles является обязательным для всех новых приложений в магазине Google Play. |
Криптография
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Криптографические алгоритмы | T-криптографические_алгоритмы | Приложение использует надежные криптографические алгоритмы, предоставляемые платформой, и генератор случайных чисел . Кроме того, приложение не использует собственные алгоритмы. |
Google Play
Включите публикацию вашего приложения в Google Play.
Политики
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Play_Content_Policies | Политика T-Play в отношении контента | Приложение строго соответствует условиям Политики разработчиков Google Play в отношении контента , не содержит неприемлемого контента и не использует интеллектуальную собственность или бренды других лиц. |
| Рейтинг_игрового_контента | Политика T-Play в отношении контента | Уровень зрелости приложения устанавливается в соответствии с рекомендациями по рейтингу контента . |
Страница с подробной информацией о приложении
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Play_Feature_Graphic | T-Play_Feature_Graphic , Графические ресурсы T-Play | Графическое представление функций приложения соответствует рекомендациям, изложенным в данной статье поддержки . Убедитесь, что:
|
| Play_Device_References | Графические ресурсы T-Play | На скриншотах и видеороликах приложения не показаны и не упоминаются устройства, отличные от Android. |
| Play_Misleading_Content | Графические ресурсы T-Play | Скриншоты или видеоролики приложения не должны вводить в заблуждение относительно содержимого и функциональности вашего приложения. |
Поддержка пользователей
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Отзывы пользователей Play | Политика T-Play в отношении контента | Ошибки, о которых сообщают пользователи во вкладке «Отзывы» на странице Google Play, устраняются, если они воспроизводимы и встречаются на многих разных устройствах. Если ошибка возникает только на нескольких устройствах, её всё равно следует устранить, особенно если эти устройства особенно популярны или являются новыми. |
Тестовая среда
Настройте тестовую среду следующим образом:
Тестирование на эмуляторах: Эмулятор Android — отличный способ протестировать ваше приложение на разных версиях Android и разрешениях экрана. Настройте эмулируемые устройства (AVD), чтобы представить наиболее распространенные форм-факторы и комбинации аппаратного и программного обеспечения для вашей целевой аудитории. Протестируйте различные форм-факторы, используя как минимум следующие эмуляторы:
- Складные телефоны: 7,6-дюймовый складной телефон с внешним дисплеем (этот тип телефона указан в разделе «Телефоны» в AVD Manager).
- Планшет: Pixel C 9,94" (2560 x 1800 пикселей)
- Тестирование уведомлений мобильного приложения: Сопряжение мобильного устройства/эмулятора с эмулятором Wear OS: Wear OS Round 1.84"
Аппаратные устройства: Ваша тестовая среда должна включать небольшое количество реальных аппаратных устройств, представляющих основные форм-факторы и комбинации аппаратного и программного обеспечения, доступные потребителям. Вам не нужно тестировать каждое устройство, представленное на рынке. Сосредоточьтесь на небольшом количестве репрезентативных устройств, используя даже одно или два устройства для каждого форм-фактора.
Тестовые лаборатории для устройств: ; Вы также можете использовать сторонние сервисы, такие как Firebase Test Lab , для тестирования вашего приложения на самых разных устройствах.
Тестирование на последней версии Android: Помимо тестирования репрезентативных версий Android для вашей целевой аудитории, всегда следует тестировать приложение на последней версии Android, чтобы убедиться, что последние изменения в поведении не окажут негативного влияния на пользовательский опыт.
Дополнительные рекомендации по тестированию, включая модульное тестирование, интеграционное тестирование и тестирование пользовательского интерфейса, см. в разделе «Основы тестирования приложений Android» .
Строгий режим
Для тестирования производительности включите StrictMode в вашем приложении. Используйте StrictMode для выявления операций, которые могут повлиять на производительность, доступ к сети, а также чтение и запись файлов. Ищите потенциально проблемные операции как в основном потоке, так и в других потоках.
Настройте политику мониторинга для каждого потока, используя StrictMode.ThreadPolicy.Builder , и включите весь поддерживаемый мониторинг в ThreadPolicy с помощью detectAll() .
Включите визуальное уведомление о нарушениях политики для ThreadPolicy с помощью penaltyFlashScreen() .
Тесты
Основные тесты качества приложения помогают оценить фундаментальное качество вашего приложения. Вы можете комбинировать тесты или объединять группы тестов в свой план тестирования.
пользовательский опыт
Проведите тестирование для обеспечения единообразного и интуитивно понятного пользовательского интерфейса.
Удобство использования
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Consistent_UX | Последовательный_UX | Перейдите ко всем разделам приложения — всем экранам, диалогам, настройкам и всем сценариям взаимодействия с пользователем. Выполните следующие действия:
|
| T-App_Switcher | App_Switcher | С экрана каждого приложения переключитесь на другое запущенное приложение, а затем вернитесь к тестируемому приложению, используя переключатель последних приложений. |
| T-Sleep_Resume | Sleep_Resume | Нажмите кнопку питания, чтобы перевести устройство в спящий режим, затем нажмите кнопку питания еще раз, чтобы включить экран. |
| T-Lock_Resume | Lock_Resume | Установите блокировку экрана на устройстве. Нажмите кнопку питания, чтобы перевести устройство в спящий режим (что приведет к его блокировке). Затем нажмите кнопку питания еще раз, чтобы вывести экран из спящего режима и разблокировать устройство. |
SD-карта
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-SD_Card | Последовательный_UX | Проведите тестирование основных функций приложения, установленного на SD-карте устройства (если приложение поддерживает этот способ установки). Чтобы переместить приложение на SD-карту, перейдите в настройки приложения. |
Пользовательский интерфейс
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Orientation_Transitions | Display_State_Parity , Fullscreen_Display , Ориентационные_переходы | На каждом экране приложения поворачивайте устройство не менее трех раз между альбомной и портретной ориентацией, а также в сложенном и разложенном состояниях. Убедитесь, что приложение выполняет следующие действия:
|
Визуальное качество
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Graphic_Quality | Графическое качество | Используйте все функции вашего приложения. Убедитесь, что все визуальные элементы, включая графику, текст, изображения и другие элементы пользовательского интерфейса, не искажены, не размыты и не пикселированы. |
| Длина Т-линии | Длина строки | Проверьте все текстовые блоки в приложении. Убедитесь, что длина строки текста и текстового блока ограничена 45-75 символами (включая пробелы) для обеспечения читаемости. Проверьте следующее:
|
| T-Theme_Support | Theme_Support | Убедитесь, что весь текст читаем в светлой и темной темах. Убедитесь, что все визуальные элементы четко различимы и эстетичны в светлой и темной темах. |
Навигация
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Back_Nav | Назад_Кнопка_Навигация , Назад_Навигация_Жестом | Перейдите ко всем разделам приложения — всем экранам, диалогам, настройкам и всем сценариям взаимодействия с пользователем. На каждом экране приложения нажмите кнопку «Назад» или используйте жест смахивания назад. Приложение должно перевести вас на предыдущий или главный экран. |
| T-State_Preservation | Сохранение государства | На экране каждого приложения нажмите кнопку «Домой» на устройстве или проведите пальцем вверх в режиме навигации жестами, затем перезапустите приложение с экрана «Все приложения» . |
Уведомления
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Уведомление_Качество | Качество уведомлений , Качество разговора | В панели уведомлений отслеживайте все типы уведомлений, которые может отображать приложение. Разверните раздел уведомлений (Android 4.1 и выше) и выберите все доступные действия. |
Доступность
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Touch_Target_Size | Размер_цели_касания | Убедитесь, что сенсорные элементы сохраняют одинаковый, доступный размер и положение для всех размеров и конфигураций дисплеев. Для получения информации о доступности см. Сканер доступности . |
| T-Визуальный_Контраст | Визуальный_контраст | Проверьте контрастность всех визуальных элементов. |
| T-Content_Description | Content_Description | Убедитесь, что все элементы пользовательского интерфейса, кроме TextView имеют описания содержимого. |
Функциональность
Убедитесь, что ваше приложение реализует следующее функциональное поведение.
Аудио
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Audio_Playback_Start | Начало воспроизведения аудио | Начните воспроизведение аудио. Убедитесь, что в течение одной секунды приложение начнет воспроизведение аудио или отобразит визуальный индикатор подготовки аудиоданных к воспроизведению. |
| T-Audio_Focus_Request | Запрос на аудиофокусировку | Начать воспроизведение аудио. Приложение должно запросить фокус на воспроизведение аудио . Когда воспроизведение аудио остановится, приложение должно освободить фокус на воспроизведение аудио (это происходит автоматически для приложений, ориентированных на Android 12 (уровень API 31) и выше ). |
| T-Audio_Focus_Change | Изменение_фокуса_аудио | Начните воспроизведение аудио. Начните воспроизведение аудио в другом приложении. Ваше приложение должно реагировать на изменение фокуса аудио и останавливать воспроизведение аудио или уменьшать громкость. |
| Фоновое воспроизведение аудиофайлов (T-Audio_Playback_Background) | Фоновое воспроизведение аудио | Начните воспроизведение аудио. Взаимодействуйте с другим приложением, не использующим аудио, в качестве приложения на переднем плане. Приложение должно продолжить воспроизведение аудио в фоновом режиме и отобразить уведомление в строке состояния. Убедитесь, что вы можете управлять воспроизведением с помощью элементов управления, отображаемых в уведомлении. Заблокируйте экран устройства. Приложение должно продолжить воспроизведение звука в фоновом режиме и отобразить уведомление на экране блокировки. Убедитесь, что вы можете управлять воспроизведением с помощью элементов управления, отображаемых в уведомлении. |
| T-Audio_Notification_Style | Стиль_уведомления_аудио | Initiate audio playback. Interact with another non-audio app as the foreground app. Verify that your app continues to play audio in the background and has created a notification styled with MediaStyle . See Playing nicely with media controls . |
| T-Audio_Playback_Resume | Возобновление воспроизведения аудио | Начните воспроизведение аудио. Взаимодействуйте с другим приложением, не использующим аудио, как с приложением на переднем плане. Взаимодействуйте со своим приложением, чтобы сделать его приложением на переднем плане. Воспроизведение аудио должно возобновиться или громкость должна быть восстановлена. В противном случае приложение должно сообщить пользователю о приостановке воспроизведения. |
Видео
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Video_PiP | Видео_Картинка_ | Активируйте воспроизведение видео в приложении в режиме «картинка в картинке» . |
| T-Video_Encoding | Видеокодирование | Убедитесь, что приложение кодирует видео с использованием стандарта сжатия видео HEVC. |
| Фоновое изображение воспроизведения T-Video | Фоновое изображение воспроизведения видео | Начните воспроизведение видео. Сверните окно приложения, откройте другое приложение, чтобы переместить окно приложения в фоновый режим. На устройствах с поддержкой настольных компьютеров переместите окно приложения за пределы видимой области рабочего стола. Убедитесь, что воспроизведение видео продолжается без прерываний во всех случаях. |
Совместное использование
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-System_Sharesheet | System_Sharesheet | Create an intent and start an activity by calling startActivity() with the intent as an argument. See Use the Android Sharesheet . Your app should display the Android Sharesheet. |
Фоновые службы
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Background_Service_Optimization | Оптимизация фоновых служб | Используйте все основные функции вашего приложения. Убедитесь, что никакие фоновые службы, работающие длительное время, не запущены. Чтобы перевести ваше приложение в фоновый режим, переключитесь на другое приложение. Зайдите в «Настройки» и проверьте, запущены ли какие-либо службы вашего приложения в фоновом режиме. На Android 4.0 и выше перейдите на экран «Приложения» и найдите приложение на вкладке «Запущенные» . |
Производительность и стабильность
Проверьте производительность, стабильность и безупречное качество изображения.
Производительность
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-App_Startup_Time | Время запуска приложения | Запустите приложение. Убедитесь, что приложение загружается быстро, или отобразите индикатор выполнения или аналогичную подсказку, если загрузка приложения занимает более двух секунд. |
| T-Rendering_Performance | Производительность рендеринга | Используйте все основные функции вашего приложения. Убедитесь, что приложение отображает не менее 60 кадров в секунду. Используйте параметр рендеринга Profile HWUI для тестирования вашего приложения. |
| T-StrictMode_Compliance | StrictMode_Compliance | Включите Уделите пристальное внимание сборке мусора и ее влиянию на пользовательский опыт. |
Стабильность
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Stability_ANR | Стабильность_ANR | Используйте все основные функции вашего приложения. Убедитесь, что приложение не вылетает и не блокирует поток пользовательского интерфейса, вызывая ошибки ANR (Android не отвечает). Изучите отчет Google Play перед запуском , чтобы выявить потенциальные проблемы со стабильностью. |
SDK
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| Совместимость с платформой Android (T-Android) | Совместимость с платформой Android | Запустите свое приложение на последней общедоступной версии платформы Android. Используйте все основные функции. Убедитесь, что приложение не вылетает и работает без потери основной функциональности. |
| T-Target_SDK_Version | Target_SDK_Version , Compile_SDK_Version | Проверьте файл манифеста Android и конфигурацию сборки, чтобы убедиться, что приложение собрано с использованием последней доступной версии SDK ( targetSdk и compileSdk ). |
| T-SDK_Техническое обслуживание | SDK_Обслуживание | Проверьте файл build.gradle вашего приложения на наличие устаревших зависимостей. |
| T-Non_SDK_Interfaces | Интерфейсы, не относящиеся к SDK | Используйте инструмент проверки кода Android Studio для обнаружения использования интерфейсов, отличных от SDK. См. раздел «Ограничения на использование интерфейсов, отличных от SDK» для получения информации об альтернативных методах тестирования. |
| T-Production_Build_Quality | Production_Build_Quality | Проверьте файл build.gradle вашего приложения на наличие включенных отладочных библиотек. |
Батарея
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Power_Management | Управление питанием | Используйте все основные функции приложения в режимах Doze и App Standby. Убедитесь, что будильники, таймеры, уведомления и синхронизация корректно работают в окне обслуживания Doze и после выхода приложения из режима App Standby. Проверьте работу Doze и режима ожидания приложений с помощью команд ADB (см. раздел «Тестирование с Doze и режимом ожидания приложений » для получения информации о требованиях и рекомендациях). Для диагностики неожиданного разряда батареи используйте инструмент Android Studio Power Profiler или Battery Historian в сочетании с запланированной фоновой работой. |
Конфиденциальность и безопасность
Проверка на соответствие ожиданиям пользователей в отношении защиты конфиденциальности и безопасности.
Разрешения
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Minimize_Permissions | Свести_разрешения | Проверьте все разрешения, необходимые вашему приложению, в файле манифеста, во время выполнения и в настройках приложения на устройстве ( Настройки > Информация о приложении ). |
| T-Sensitive_Permissions | Конфиденциальные_разрешения | Используйте все функции вашего приложения, запрашивающие разрешения. Убедитесь, что приложение запрашивает разрешение на доступ к конфиденциальным данным или сервисам только для основных сценариев использования. Убедитесь, что последствия предоставления разрешения на доступ к конфиденциальным данным и сервисам четко доведены до пользователя. |
| T-Runtime_Permissions | Runtime_Permissions | Используйте все функции вашего приложения, требующие разрешений. Убедитесь, что разрешения запрашиваются отложенно , то есть только при обращении к функциям, а не во время запуска приложения. |
| T-Обоснование_Разрешения | Обоснование разрешения | Используйте все функции вашего приложения, требующие разрешений. Убедитесь, что приложение объясняет пользователю, почему эти разрешения необходимы. |
| T-Graceful_Degradation | Грациозная_деградация | Используйте все функции вашего приложения, требующие разрешений. Запретите или отзовите разрешения. Убедитесь, что приложение предоставляет альтернативный вариант использования и продолжает функционировать. |
Данные и файлы
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Sensitive_Data_Storage | Хранение конфиденциальных данных | Проверьте все данные, хранящиеся во внутренней памяти. Убедитесь, что данные, хранящиеся во внешней памяти, не являются конфиденциальными. |
| Обработка чувствительных к T данных | Хранение конфиденциальных данных | Проверьте, как обрабатываются данные, загружаемые с внешнего хранилища. |
| T-Sensitive_Data_Logging | Ведение журнала конфиденциальных данных | Используйте все основные функции приложения, одновременно отслеживая журнал событий устройства. Убедитесь, что никакая конфиденциальная информация пользователя не записывается в журнал. |
| T-Hardware_IDs | Идентификаторы оборудования | Используйте все основные функции приложения. Убедитесь, что приложение не использует в целях идентификации какие-либо идентификаторы оборудования, такие как IMEI. |
Личность
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Autofill_Hints | Подсказки автозаполнения | Используйте все функции приложения, требующие ввода данных пользователем. Убедитесь, что приложение предоставляет подсказки для автоматического заполнения полей ввода таких данных, как учетные данные и другая конфиденциальная информация. |
| T-Credential_Manager | Credential_Manager | Войдите в приложение. Убедитесь, что приложение интегрирует Credential Manager для Android, чтобы обеспечить единый интерфейс входа в систему, поддерживающий ключи доступа, федеративную идентификацию и пароли. |
| T-Биометрическая_аутентификация | Biometric_Authentication | Use all app features that require authentication. Verify that the app protects financial transactions or sensitive information, such as important user documents, with biometric authentication . |
App components
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Component_Export | Component_Export | Review all application components defined in the Android manifest file for the appropriate export state. The exported property must be set explicitly for all components. |
| T-Component_Permissions | Component_Permissions | Review all permissions that your app requires, in the manifest file, at runtime, and in the app settings on the device ( Settings > App Info ). |
| T-Component_Protection | Component_Protection | Review all content providers defined in the Android manifest file. Make sure each provider has an appropriate protectionLevel . |
Сетевые технологии
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Network_Security_Traffic | Network_Security_Traffic | Declare a network security configuration that disables cleartext traffic , then test the app. |
| T-Network_Security_Configuration | Network_Security_Configuration | Review the app's network security configuration . Verify that no lint checks on the configuration fail. |
| T-Security_Provider_Initialization | Security_Provider_Initialization | Verify that the security provider is initialized at application startup for Google Play services. |
WebViews
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-WebView_Asset_Loader | WebView_Asset_Loader | Review the app's network security configuration . Verify that no lint checks on the configuration fail. |
| T-WebView_JavaScript | WebView_JavaScript | For each WebView , navigate to a page that requires JavaScript. |
| T-WebView_Navigation | WebView_Asset_Loader , WebView_JavaScript | In each WebView, attempt to navigate to sites and content that aren't loaded directly by your app. |
Исполнение
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-App_Bundles | App_Bundles | Verify that the app uses Android App Bundles and does not dynamically load code from outside the app's APK. |
Криптография
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Cryptographic_Algorithms | Cryptographic_Algorithms | Verify that the app uses strong, platform-provided cryptographic algorithms and a random number generator . Also verify that the app doesn't implement custom algorithms. |
Google Play
Verify that your app is ready for Google Play.
Политики
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Play_Content_Policies | Play_Content_Policies , Play_Content_Rating , Play_User_Reviews | Sign into the Google Play Developer Console to review your developer profile, app description, screenshots, feature graphic, content rating and user feedback. |
App details page
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| T-Play_Feature_Graphic | Play_Feature_Graphic | Download your feature graphic and screenshots, and scale them down to match the display sizes on the devices and form factors that you are targeting. |
| T-Play_Graphic_Assets | Play_Feature_Graphic , Play_Device_References , Play_Misleading_Content | Review all graphical assets, media, text, code libraries, and other content that's packaged in the app or expansion file download. |
Архив
Previous versions of the core app quality guidelines: