Долгосрочный успех вашего приложения с точки зрения количества установок и отзывов пользователей, вовлеченности и удержания пользователей.
Чтобы заложить прочную основу для качественного приложения, следуйте основным рекомендациям по обеспечению качества приложений.
В рекомендациях определены минимальные требования к качеству, которым должны соответствовать все приложения.
Адаптивное качество приложения
Приложения для Android работают на самых разных устройствах — от компактных телефонов до планшетов, складных устройств, настольных компьютеров, подключенных дисплеев, автомобильных информационно-развлекательных систем, телевизоров и устройств XR. Режимы работы с окнами, такие как разделенный экран и оконный режим рабочего стола, позволяют приложениям работать в масштабируемых областях экрана.
Следуйте рекомендациям по адаптивному обеспечению качества приложений — совместно с основными рекомендациями по обеспечению качества приложений — чтобы:
- Создавайте приложения, оптимизированные для всех форм-факторов и размеров экрана.
- Повысьте рейтинг своих приложений в результатах поиска Google Play и Google Search.
- Привлекайте больше пользователей и повышайте уровень их удержания.
Руководящие принципы
Следующие основные рекомендации помогут вам создать базовое, но высококачественное приложение.
пользовательский опыт
Ваше приложение должно соответствовать стандартным визуальным решениям и шаблонам взаимодействия Android для обеспечения единообразного и интуитивно понятного пользовательского опыта.
По возможности используйте компоненты Material Design для создания пользовательского интерфейса вашего приложения вместо компонентов платформы Android. Material Design обеспечивает современный внешний вид и удобство использования, а также единообразие пользовательского интерфейса во всех версиях Android.
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Удобство использования | ||
| Удобство использования: UX | T-Usability:Core , T-SD-карта | Приложение обеспечивает единообразный пользовательский опыт для всех сценариев использования на всех форм-факторах. |
| Удобство использования: Switcher | T-Usability:Switcher , T-SD-карта | Приложение переходит в фоновый режим при переключении на другое приложение. Приложение возвращается на передний план при повторной активации через переключатель последних приложений. |
| Удобство использования: Сон | T-Usability:Sleep , T-SD-карта | Когда приложение находится на переднем плане, оно приостанавливается при переходе устройства в спящий режим и возобновляет работу при выходе устройства из спящего режима. |
| Удобство использования: Блокировка | T-Usability:Lock , T-SD-карта | Когда приложение находится на переднем плане, оно приостанавливается при блокировке устройства и возобновляет работу при разблокировке. |
| Пользовательский интерфейс | ||
| UI:Паритет | T-UI:Переходы | Ориентация экрана и состояние сворачивания отображают, по сути, одни и те же функции и действия, сохраняя при этом функциональную идентичность. |
| UI:Полноэкранный режим | T-UI:Переходы | Приложение заполняет всё окно приложения в обоих положениях и не имеет чёрных полос сверху и снизу из-за изменений в конфигурации, включая складывание и раскладывание устройства. Незначительные черные полосы по краям изображения, компенсирующие небольшие изменения геометрии экрана, допустимы. |
| UI:Переходы | T-UI:Переходы | Приложение обеспечивает быстрые переходы между ориентациями экрана, а также сворачивание и разворачивание устройства без проблем с отображением и без потери состояния. |
| Визуальное качество | ||
| Визуальное отображение | T-Visual:Display | Приложение отображает графику, текст, изображения и другие элементы пользовательского интерфейса без заметных искажений, размытия или пикселизации.
|
| Визуальное оформление: Читаемость | T-Visual: Читабельность | Приложение обеспечивает удобочитаемость текста и текстовых блоков, ограничивая длину строки 45-75 символами (включая пробелы) для каждого из поддерживаемых приложением языков. |
| Визуальное оформление: Темы | T-Visual:Themes | Содержимое приложения, а также весь веб-контент, к которому осуществляется доступ через приложение, поддерживают как светлую, так и темную темы оформления . |
| Навигация | ||
| Навигация: Кнопка "Назад" | T-Nav: Назад | Приложение поддерживает стандартную навигацию с помощью кнопки «Назад» и не использует никаких пользовательских подсказок на экране. |
| Навигация: Жест назад | T-Nav: Назад | Приложение поддерживает навигацию жестами для возврата назад и на главный экран. |
| Навигация: Состояние | T-Nav:State , T-Nav: Назад | Приложение сохраняет состояние пользователя или приложения при выходе из активного режима и предотвращает случайную потерю данных из-за возврата назад и других изменений состояния. При возвращении в активный режим приложение восстанавливает сохраненное состояние и все незавершенные транзакции, сохраняющие состояние. Примеры таких транзакций включают изменения в редактируемых полях, прогрессе игры, меню, видео и других разделах приложения.
|
| Уведомления | ||
| Уведомить:Информация | T-Notify:Info | Уведомления предоставляют актуальную информацию, относящуюся к вашему приложению.
|
| Уведомление: Сообщения | T-Notify:Info | Для мессенджеров, социальных сетей и переписки:
|
| Доступность | ||
| Доступ: Цели | T-Access:Targets | Минимальное расстояние между точками касания — 48 символов. См. рекомендации по макету и типографике Material Design. |
| Доступ: Контраст | T-Доступ:Контраст | Текст приложения и контент переднего плана сохраняют следующие коэффициенты контрастности с фоном приложения:
Узнайте больше о цвете и контрасте . |
| Доступ:Описание | T-Access:Описание | Опишите каждый элемент пользовательского интерфейса , за исключением TextView , используя contentDescription . |
Функциональность
Ваше приложение должно реализовывать следующее функциональное поведение.
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Аудио | ||
| Аудио:Инициализация | T-Audio:Init | Когда пользователь запускает воспроизведение аудио, приложение должно выполнить одно из следующих действий в течение одной секунды:
|
| Аудио: Фокус | T-Audio:Focus | Приложение должно запрашивать фокус на аудиопотоке , когда начинается воспроизведение, и оставлять его, когда воспроизведение останавливается. |
| Аудио: Прерывание | T-Audio:Interrupt | Приложение должно обрабатывать запросы других приложений на получение аудиофокуса . Например, одно приложение может уменьшить громкость воспроизведения, когда другое приложение воспроизводит речь. |
| Аудио: Фон | T-Audio: Фон | Приложение должно поддерживать фоновое воспроизведение . |
| Аудио: Уведомление | T-Audio: Уведомление | Когда приложение воспроизводит аудио в фоновом режиме, оно должно создать уведомление, оформленное с помощью MediaStyle . |
| Аудио: Возобновить | T-Audio:Resume | Если приложение находится в фоновом режиме и воспроизведение звука приостановлено, воспроизведение возобновится, когда приложение вернется на передний план, или приложение должно сообщить пользователю о том, что воспроизведение приостановлено. |
| Видео | ||
| Видео:Картинка в картинке | T-Video:PiP | Если приложение воспроизводит видео, оно должно поддерживать режим «картинка в картинке» . |
| Видео:кодирование | T-Video:кодирование | Если приложение кодирует видео, оно должно использовать стандарт сжатия видео HEVC . |
| Совместное использование | ||
| Совместное использование: Лист | T-Sharing:Sheet | Приложение должно использовать функцию «Поделиться» в Android при обмене контентом. Приложение может предлагать целевые объекты, недоступные для пользовательских решений. |
| Фоновые службы | ||
| Введение: Услуги | T-Background:Services | Приложение предотвращает запуск неоправданно длительных служб в фоновом режиме, обеспечивая бесперебойную работу устройства пользователя. Примечание: Система применяет различные ограничения к фоновым службам . Ниже приведены примеры неэффективного использования фоновых служб:
Для получения более подробной информации см. Обзор фоновых задач . |
Производительность и стабильность
Ваше приложение должно обеспечивать оптимальную производительность, стабильность, совместимость и быстродействие.
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Производительность | ||
| Производительность: Стартап | T- Производительность: Стартап | Приложение загружается быстро или отображает пользователю обратную связь на экране (индикатор прогресса или аналогичный сигнал), если загрузка приложения занимает более двух секунд. |
| Производительность: FPS | T-Performance:FPS | Приложение отрисовывает кадры каждые 16 (или меньше) миллисекунд, чтобы отображать не менее 60 кадров в секунду. Для получения помощи по проблемам с отрисовкой см. раздел «Медленная отрисовка» . |
| Производительность: Строгая | T-Performance:Strict | При включенном StrictMode (см. раздел тестирования в режиме StrictMode ) при тестировании приложения не отображаются красные вспышки (предупреждения о производительности, связанные с StrictMode ). |
| Стабильность | ||
| Стабильность: ANR | T-стабильность:ANR | Приложение не вылетает и не блокирует поток пользовательского интерфейса, вызывая ошибки ANR (Android не отвечает) . Используйте отчет Google Play перед запуском , чтобы выявить потенциальные проблемы со стабильностью. После развертывания отслеживайте страницу Android Vitals в консоли Google Play. |
| SDK | ||
| SDK:Платформа | T-SDK:Платформа | Приложение работает на последней общедоступной версии платформы Android без сбоев и существенного влияния на основные функции. |
| SDK:Цель | T-SDK: последняя версия | Приложение использует последнюю версию Android SDK , необходимую для соответствия требованиям Google Play, путем установки значения targetSdk в файле build.gradle модуля приложения. |
| SDK:Компиляция | T-SDK: последняя версия | Приложение создано с использованием последней версии Android SDK путем установки значения compileSdk в файле build.gradle модуля приложения. |
| SDK:3P | T-SDK:3P , T-SDK:Не | Все используемые SDK от Google или сторонних разработчиков должны быть актуальными. Любые улучшения этих SDK, касающиеся стабильности, совместимости или безопасности, должны быть своевременно доступны пользователям. Для SDK от Google используйте SDK, работающие на базе сервисов Google Play, если они доступны. Эти SDK обратно совместимы, получают автоматические обновления, уменьшают размер пакета приложения и эффективно используют ресурсы устройства. |
| SDK:Не | T-SDK:Не | Приложение не использует интерфейсы, отличные от SDK . |
| SDK:Отладка | T-SDK:Отладка | В рабочую версию приложения не включены отладочные библиотеки. Включение отладочных библиотек в приложение может привести к проблемам с производительностью и безопасностью. |
| Батарея | ||
| Батарея: Управление | T-Battery: Управление | Приложение корректно поддерживает функции управления питанием Doze и App Standby . Приложения могут запросить исключение из режима энергосбережения. См. раздел «Поддержка» для других вариантов использования в разделе «Оптимизация для Doze и режима ожидания приложений» . |
Конфиденциальность и безопасность
Приложение безопасно обрабатывает пользовательские данные и личную информацию, предоставляя соответствующие уровни доступа.
Приложения, опубликованные в Google Play Store, также должны соответствовать политике Google Play в отношении пользовательских данных для защиты конфиденциальности пользователей.
| ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|
| Разрешения | ||
| Права доступа: Мин. | T-Разрешения: Мин. | Приложение запрашивает только самый минимум разрешений, необходимых для поддержки текущего сценария использования. Для некоторых разрешений, таких как местоположение, приложение, по возможности, использует приблизительное указание вместо подробного . См. раздел «Минимизируйте запросы на предоставление разрешений» . |
| Права доступа: Конфиденциальные | T-Разрешения:Конфиденциальные | Приложение запрашивает разрешение на доступ к конфиденциальным данным (например, к группам разрешений для SMS или журнала звонков , или к местоположению ) или платным услугам (например, к номеронабирателю или SMS) только в том случае, если это напрямую связано с основными сценариями использования приложения. Последствия, связанные с этими разрешениями, должны быть четко доведены до сведения пользователя. В зависимости от того, как ваше приложение использует разрешения, может существовать альтернативный способ реализации его функциональности без необходимости доступа к конфиденциальной информации. Например, вместо запроса разрешений, связанных с контактами пользователя, используйте неявное намерение для запроса доступа. |
| Права доступа: Среда выполнения | T-Разрешения:Среда выполнения | Приложение запрашивает разрешения во время выполнения, когда запрашивается необходимая функциональность, а не во время запуска приложения. |
| Разрешения:Пояснить | T-Разрешения: Объяснение | В приложении чётко объясняется , почему необходимы разрешения . |
| Права доступа:Ухудшение | T-Разрешения:Ухудшение | Приложение корректно реагирует на отказ или отзыв разрешения со стороны пользователей. Приложение не должно полностью блокировать доступ пользователей. |
| Данные и файлы | ||
| Данные: конфиденциальные | T-Data:Sensitive , T-Data:Обработка | Все конфиденциальные данные хранятся во внутренней памяти приложения . |
| Данные:Журнал | T-Данные:Лог | В системный журнал или журнал отдельного приложения не записываются никакие личные или конфиденциальные данные пользователей . |
| Данные: Идентификаторы | T-Data:IDs | Приложение не использует для идентификации никакие не сбрасываемые идентификаторы оборудования , такие как IMEI. |
| Личность | ||
| Идентичность: Подсказки | Т-тождество: подсказки | Приложение предоставляет подсказки для автоматического заполнения учетных данных и другой конфиденциальной информации, такой как данные кредитной карты, физический адрес и номер телефона. |
| Идентификатор:CredMan | T-Identity:CredMan | Приложение интегрирует Credential Manager для Android , обеспечивая удобный процесс входа в систему и объединяя поддержку паролей, федеративной идентификации и паролей. |
| Идентификация: Биография | Т-Идентификация:Био | Приложение поддерживает биометрическую аутентификацию для защиты финансовых транзакций или конфиденциальной информации, такой как важные документы пользователя. |
| Компоненты приложения | ||
| Компоненты: Экспорт | T-компоненты: Экспорт | Приложение явно устанавливает атрибут Экспортируются только те компоненты приложения, которые обмениваются данными с другими приложениями , или компоненты, которые должны вызываться другими приложениями . |
| Компоненты: Права доступа | T-компоненты: Права доступа | Все намерения и трансляции соответствуют передовым практикам:
|
| Компоненты: Защита | Т-компоненты: Защита | Все компоненты, обменивающиеся контентом между приложениями, используют Приложениям не следует полагаться на доступ к списку установленных пакетов. |
| Сетевые технологии | ||
| Сеть: Трафик | T-Network: Трафик | Весь сетевой трафик передается по протоколу SSL . |
| Сеть:Конфигурация | T-Network:Config | Приложение объявляет конфигурацию сетевой безопасности . |
| Сеть: Игра | T-Network:Play | Если приложение использует сервисы Google Play, поставщик безопасности инициализируется при запуске приложения . |
| WebViews | ||
| WebViews:Config | T-WebViews:Config , T-WebViews:Nav | Не используйте setAllowUniversalAccessFromFileURLs() для доступа к локальному содержимому. Вместо этого используйте WebViewAssetLoader . |
| WebViews:JavaScript | T-WebViews:JavaScript , T-WebViews:Nav | В веб-представлениях В Android 6.0 (уровень API 23 и выше) используйте вместо этого каналы сообщений HTML . |
| Исполнение | ||
| Выполнение: Пакеты | T-Выполнение:Пакеты | Приложение не загружает динамически код извне APK-файла. Используйте пакеты приложений Android , которые включают Play Feature Delivery и Play Asset Delivery . Начиная с августа 2021 года, использование пакетов приложений Android App Bundles является обязательным для всех новых приложений в магазине Google Play. |
| Криптография | ||
| Криптовалюта: Алгоритмы | T-Crypto:Algorithms | Приложение использует строки, предоставляемые платформой криптографические алгоритмы и генератор случайных чисел . Кроме того, приложение не использует собственные алгоритмы. |
Google Play
Включите публикацию вашего приложения в Google Play.
| ИДЕНТИФИКАТОР | Тесты | Описание | |
|---|---|---|---|
| Политики | |||
| Игра:Политика | T-Play: Политика | Приложение строго соответствует условиям Политики разработчиков Google Play в отношении контента , не содержит неприемлемого контента и не использует интеллектуальную собственность или бренды других лиц. | |
| Игра: для взрослых | T-Play: Политика | Уровень зрелости приложения устанавливается в соответствии с рекомендациями по рейтингу контента . | |
| Страница с подробной информацией о приложении | |||
| Игра: Графика | T-Play: Графика , T-Play: Активы | Графическое представление функций приложения соответствует рекомендациям, изложенным в данной статье поддержки . Убедитесь, что:
| |
| Play: NonAndroid | T-Play: Активы | На скриншотах и видеороликах приложения не показаны и не упоминаются устройства, отличные от Android. | |
| Игра: Вводящая в заблуждение | T-Play: Активы | Скриншоты или видеоролики приложения не должны вводить в заблуждение относительно содержимого и функциональности вашего приложения. | |
| Поддержка пользователей | |||
| Play:Bugs | 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-Usability:Core | Удобство использования: UX | Перейдите ко всем разделам приложения — всем экранам, диалогам, настройкам и всем сценариям взаимодействия с пользователем. Выполните следующие действия:
|
| T-Usability:Switcher | Удобство использования: Switcher | С экрана каждого приложения переключитесь на другое запущенное приложение, а затем вернитесь к тестируемому приложению, используя переключатель последних приложений. |
| T-Usability:Sleep | Удобство использования: Сон | Нажмите кнопку питания, чтобы перевести устройство в спящий режим, затем нажмите кнопку питания еще раз, чтобы включить экран. |
| T-Usability:Lock | Удобство использования: Блокировка | Установите блокировку экрана на устройстве. Нажмите кнопку питания, чтобы перевести устройство в спящий режим (что приведет к его блокировке). Затем нажмите кнопку питания еще раз, чтобы вывести экран из спящего режима и разблокировать устройство. |
| SD-карта | ||
| T-SD-карта | Удобство использования: UX | Проведите тестирование основных функций приложения, установленного на SD-карте устройства (если приложение поддерживает этот способ установки). Чтобы переместить приложение на SD-карту, перейдите в настройки приложения. |
| Пользовательский интерфейс | ||
| T-UI:Переходы | UI:Parity , UI:Полноэкранный режим , UI:Переходы | На каждом экране приложения поворачивайте устройство не менее трех раз между альбомной и портретной ориентацией, а также в сложенном и разложенном состояниях. Убедитесь, что приложение выполняет следующие действия:
|
| Визуальное качество | ||
| T-Visual:Display | Визуальное отображение | Используйте все функции вашего приложения. Убедитесь, что все визуальные элементы, включая графику, текст, изображения и другие элементы пользовательского интерфейса, не искажены, не размыты и не пикселированы. |
| T-Visual: Читабельность | Визуальное оформление: Читаемость | Проверьте все текстовые блоки в приложении. Убедитесь, что длина строки текста и текстового блока ограничена 45-75 символами (включая пробелы) для обеспечения читаемости. Проверьте следующее:
|
| T-Visual:Themes | Визуальное оформление: Темы | Убедитесь, что весь текст читаем в светлой и темной темах. Убедитесь, что все визуальные элементы четко различимы и эстетичны в светлой и темной темах. |
| Навигация | ||
| T-Nav: Назад | Навигация: Кнопка «Назад» , Навигация: Жест назад | Перейдите ко всем разделам приложения — всем экранам, диалогам, настройкам и всем сценариям взаимодействия с пользователем. На каждом экране приложения нажмите кнопку «Назад» или используйте жест смахивания назад. Приложение должно перевести вас на предыдущий или главный экран. |
| T-Nav:State | Навигация: Состояние | На экране каждого приложения нажмите кнопку «Домой» на устройстве или проведите пальцем вверх в режиме навигации жестами, затем перезапустите приложение с экрана «Все приложения» . |
| Уведомления | ||
| T-Notify:Info | Уведомить:Информация , Уведомление: Сообщения | В панели уведомлений отслеживайте все типы уведомлений, которые может отображать приложение. Разверните раздел уведомлений (Android 4.1 и выше) и выберите все доступные действия. |
| Доступность | ||
| T-Access:Targets | Доступ: Цели | Убедитесь, что сенсорные элементы сохраняют одинаковый, доступный размер и положение для всех размеров и конфигураций дисплеев. Для получения информации о доступности см. Сканер доступности . |
| T-Доступ:Контраст | Доступ: Контраст | Проверьте контрастность всех визуальных элементов. |
| T-Access:Описание | Доступ:Описание | Убедитесь, что все элементы пользовательского интерфейса, кроме TextView имеют описания содержимого. |
Функциональность
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| Аудио | ||
| T-Audio:Init | Аудио:Инициализация | Начните воспроизведение аудио. Убедитесь, что в течение одной секунды приложение начнет воспроизведение аудио или отобразит визуальный индикатор подготовки аудиоданных к воспроизведению. |
| T-Audio:Focus | Аудио: Фокус | Начать воспроизведение аудио. Приложение должно запросить фокус на воспроизведение аудио . Когда воспроизведение аудио остановится, приложение должно освободить фокус на воспроизведение аудио (это происходит автоматически для приложений, ориентированных на Android 12 (уровень API 31) и выше ). |
| T-Audio:Interrupt | Аудио: Прерывание | Начните воспроизведение аудио. Начните воспроизведение аудио в другом приложении. Ваше приложение должно реагировать на изменение фокуса аудио и останавливать воспроизведение аудио или уменьшать громкость. |
| T-Audio: Фон | Аудио: Фон | Начните воспроизведение аудио. Взаимодействуйте с другим приложением, не использующим аудио, в качестве приложения на переднем плане. Приложение должно продолжать воспроизводить аудио в фоновом режиме. |
| T-Audio: Уведомление | Аудио: Уведомление | Начните воспроизведение аудио. Взаимодействуйте с другим приложением, не использующим аудио, в качестве приложения на переднем плане. Убедитесь, что ваше приложение продолжает воспроизводить аудио в фоновом режиме и создало уведомление, оформленное с помощью MediaStyle . См. раздел «Корректная работа с элементами управления мультимедиа» . |
| T-Audio:Resume | Аудио: Возобновить | Начните воспроизведение аудио. Взаимодействуйте с другим приложением, не использующим аудио, как с приложением на переднем плане. Взаимодействуйте со своим приложением, чтобы сделать его приложением на переднем плане. Воспроизведение аудио должно возобновиться или громкость должна быть восстановлена. В противном случае приложение должно сообщить пользователю о приостановке воспроизведения. |
| T-Video:PiP | Видео:Картинка в картинке | Активируйте воспроизведение видео в приложении в режиме «картинка в картинке» . |
| T-Video:кодирование | Видео:кодирование | Убедитесь, что приложение кодирует видео с использованием стандарта сжатия видео HEVC. |
| Совместное использование | ||
| Совместное использование: Лист | Создайте Intent и запустите Activity, вызвав startActivity() с Intent в качестве аргумента. См. раздел «Использование Android Sharesheet» . Ваше приложение должно отображать Android Sharesheet. | |
| Фоновые службы | ||
| CR-6 | Введение: Услуги | Используйте все основные функции вашего приложения. Убедитесь, что никакие фоновые службы, работающие длительное время, не запущены. Чтобы перевести ваше приложение в фоновый режим, переключитесь на другое приложение. Зайдите в «Настройки» и проверьте, запущены ли какие-либо службы вашего приложения в фоновом режиме. На Android 4.0 и выше перейдите на экран «Приложения» и найдите приложение на вкладке «Запущенные» . |
Производительность и стабильность
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| Производительность | ||
| T- Производительность: Стартап | Производительность: Стартап | Запустите приложение. Убедитесь, что приложение загружается быстро, или отобразите индикатор выполнения или аналогичную подсказку, если загрузка приложения занимает более двух секунд. |
| T-Performance:FPS | Производительность: FPS | Используйте все основные функции вашего приложения. Убедитесь, что приложение отображает не менее 60 кадров в секунду. Используйте параметр рендеринга Profile HWUI для тестирования вашего приложения. |
| T-Performance:Strict | Производительность: Строгая | Включите Уделите пристальное внимание сборке мусора и ее влиянию на пользовательский опыт. |
| Стабильность | ||
| T-стабильность:ANR | Стабильность: ANR | Используйте все основные функции вашего приложения. Убедитесь, что приложение не вылетает и не блокирует поток пользовательского интерфейса, вызывая ошибки ANR (Android не отвечает). Изучите отчет Google Play перед запуском , чтобы выявить потенциальные проблемы со стабильностью. |
| SDK | ||
| T-SDK:Платформа | SDK:Платформа | Запустите свое приложение на последней общедоступной версии платформы Android. Используйте все основные функции. Убедитесь, что приложение не вылетает и работает без потери основной функциональности. |
| T-SDK: последняя версия | SDK:Цель , SDK:Компиляция | Проверьте файл манифеста Android и конфигурацию сборки, чтобы убедиться, что приложение собрано с использованием последней доступной версии SDK ( targetSdk и compileSdk ). |
| T-SDK:3P | SDK:3P | Проверьте файл build.gradle вашего приложения на наличие устаревших зависимостей. |
| T-SDK:Не | SDK:Не | Используйте инструмент проверки кода Android Studio для обнаружения использования интерфейсов, отличных от SDK. См. раздел «Ограничения на использование интерфейсов, отличных от SDK» для получения информации об альтернативных методах тестирования. |
| T-SDK:Отладка | SDK:Отладка | Проверьте файл build.gradle вашего приложения на наличие включенных отладочных библиотек. |
| Батарея | ||
| T-Battery: Управление | Батарея: Управление | Используйте все основные функции приложения в режимах Doze и App Standby. Убедитесь, что будильники, таймеры, уведомления и синхронизация корректно работают в окне обслуживания Doze и после выхода приложения из режима App Standby. Проверьте работу Doze и режима ожидания приложений с помощью команд ADB (см. раздел «Тестирование с Doze и режимом ожидания приложений » для получения информации о требованиях и рекомендациях). Для диагностики неожиданного разряда батареи используйте инструмент Android Studio Power Profiler или Battery Historian в сочетании с запланированной фоновой работой. |
Конфиденциальность и безопасность
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| Разрешения | ||
| T-Разрешения: Мин. | Права доступа: Мин. | Проверьте все разрешения, необходимые вашему приложению, в файле манифеста, во время выполнения и в настройках приложения на устройстве ( Настройки > Информация о приложении ). |
| T-Разрешения:Конфиденциальные | Права доступа: Конфиденциальные | Используйте все функции вашего приложения, запрашивающие разрешения. Убедитесь, что приложение запрашивает разрешение на доступ к конфиденциальным данным или сервисам только для основных сценариев использования. Убедитесь, что последствия предоставления разрешения на доступ к конфиденциальным данным и сервисам четко доведены до пользователя. |
| T-Разрешения:Среда выполнения | Права доступа: Среда выполнения | Используйте все функции вашего приложения, требующие разрешений. Убедитесь, что разрешения запрашиваются отложенно , то есть только при обращении к функциям, а не во время запуска приложения. |
| T-Разрешения: Объяснение | Разрешения:Пояснить | Используйте все функции вашего приложения, требующие разрешений. Убедитесь, что приложение объясняет пользователю, почему эти разрешения необходимы. |
| T-Разрешения:Ухудшение | Права доступа:Ухудшение | Используйте все функции вашего приложения, требующие разрешений. Запретите или отзовите разрешения. Убедитесь, что приложение предоставляет альтернативный вариант использования и продолжает функционировать. |
| Данные и файлы | ||
| T-данные: конфиденциальные | Данные: конфиденциальные | Проверьте все данные, хранящиеся во внутренней памяти. Убедитесь, что данные, хранящиеся во внешней памяти, не являются конфиденциальными. |
| T-Data:Обработка | Данные: конфиденциальные | Проверьте, как обрабатываются данные, загружаемые с внешнего хранилища. |
| T-Данные:Лог | Данные:Журнал | Используйте все основные функции приложения, одновременно отслеживая журнал событий устройства. Убедитесь, что никакая конфиденциальная информация пользователя не записывается в журнал. |
| T-Data:IDs | Данные: Идентификаторы | Используйте все основные функции приложения. Убедитесь, что приложение не использует в целях идентификации какие-либо идентификаторы оборудования, такие как IMEI. |
| Личность | ||
| Т-тождество: подсказки | Идентичность: Подсказки | Используйте все функции приложения, требующие ввода данных пользователем. Убедитесь, что приложение предоставляет подсказки для автоматического заполнения полей ввода таких данных, как учетные данные и другая конфиденциальная информация. |
| T-Identity:CredMan | Идентификатор:CredMan | Войдите в приложение. Убедитесь, что приложение интегрирует Credential Manager для Android , обеспечивая единый интерфейс входа в систему с поддержкой паролей, федеративной идентификации и паролей. |
| Т-Идентификация:Био | Идентификация: Биография | Используйте все функции приложения, требующие аутентификации. Убедитесь, что приложение защищает финансовые транзакции или конфиденциальную информацию, такую как важные документы пользователя, с помощью биометрической аутентификации . |
| Компоненты приложения | ||
| T-компоненты: Экспорт | Компоненты: Экспорт | Проверьте все компоненты приложения, определенные в файле манифеста Android, чтобы определить соответствующее состояние экспорта. Свойство exported должно быть явно задано для всех компонентов. |
| T-компоненты: Права доступа | Компоненты: Права доступа | Проверьте все разрешения, необходимые вашему приложению, в файле манифеста, во время выполнения и в настройках приложения на устройстве ( Настройки > Информация о приложении ). |
| Т-компоненты: Защита | Компоненты: Защита | Проверьте все поставщики контента, определенные в файле манифеста Android. Убедитесь, что у каждого поставщика установлен соответствующий protectionLevel . |
| Сетевые технологии | ||
| T-Network: Трафик | Сеть: Трафик | Задайте конфигурацию сетевой безопасности, которая отключает передачу данных в открытом виде , а затем протестируйте приложение. |
| T-Network:Config | Сеть:Конфигурация | Проверьте конфигурацию сетевой безопасности приложения. Убедитесь, что ни одна проверка кода (lint checks) не завершилась неудачей. |
| T-Network:Play | Сеть: Игра | Убедитесь, что поставщик безопасности инициализируется при запуске приложения для сервисов Google Play. |
| WebViews | ||
| T-WebViews:Config | WebViews:Config | Проверьте конфигурацию сетевой безопасности приложения. Убедитесь, что ни одна проверка кода (lint checks) не завершилась неудачей. |
| T-WebViews:JavaScript | WebViews:JavaScript | Для каждого WebView перейдите на страницу, требующую JavaScript. |
| T-WebViews:Nav | WebViews:Config , WebViews:JavaScript | В каждом WebView попытайтесь перейти на сайты и контент, которые не загружаются непосредственно вашим приложением. |
| Исполнение | ||
| T-Выполнение:Пакеты | Выполнение: Пакеты | Убедитесь, что приложение использует пакеты приложений Android и не загружает динамически код извне APK-файла приложения. |
| Криптография | ||
| T-Crypto:Algorithms | Криптовалюта: Алгоритмы | Убедитесь, что приложение использует надежные криптографические алгоритмы, предоставляемые платформой, и генератор случайных чисел . Также убедитесь, что приложение не использует собственные алгоритмы. |
Google Play
| ИДЕНТИФИКАТОР | Особенность | Описание |
|---|---|---|
| Политики | ||
| T-Play: Политика | Play:Policies , Игра: для взрослых Play:Bugs | Войдите в консоль разработчика Google Play , чтобы просмотреть свой профиль разработчика, описание приложения, скриншоты, графическое изображение функций, рейтинг контента и отзывы пользователей. |
| Страница с подробной информацией о приложении | ||
| T-Play:Графика | Игра: Графика | Загрузите графическое изображение и скриншоты, а затем уменьшите их масштаб в соответствии с размерами экранов целевых устройств и форм-факторов. |
| T-Play: Активы | Play:Graphics , Play:NonAndroid , Игра: Вводящая в заблуждение | Просмотрите все графические ресурсы, медиафайлы, текст, библиотеки кода и другой контент, входящий в состав приложения или загружаемого файла расширения. |
Архив
Предыдущие версии основных рекомендаций по качеству приложений: