Android 6.0 дает вам возможность убедиться, что ваши приложения работают со следующей версией платформы. Этот выпуск включает в себя ряд API и изменений поведения, которые могут повлиять на ваше приложение, как описано в разделе «Обзор API и изменения поведения» . При тестировании вашего приложения в этом выпуске необходимо обратить внимание на некоторые конкретные системные изменения, чтобы обеспечить удобство работы пользователей.
В этом руководстве описывается, что и как тестировать функции Android 6.0 с помощью вашего приложения. Вам следует уделить приоритетное внимание тестированию этих конкретных функций из-за их высокого потенциального влияния на поведение вашего приложения:
- Разрешения
- Режим сна и режим ожидания приложения
- Автоматическое резервное копирование и идентификаторы устройств
Разрешения на тестирование
Новая модель разрешений меняет способ предоставления разрешений пользователю вашему приложению. Вместо предоставления всех разрешений во время процедуры установки ваше приложение должно запрашивать у пользователя отдельные разрешения во время выполнения. Для пользователей такое поведение обеспечивает более детальный контроль над действиями каждого приложения, а также лучший контекст для понимания того, почему приложение запрашивает конкретное разрешение. Пользователи могут в любое время индивидуально предоставить или отозвать разрешения, предоставленные приложению. Эта функция выпуска, скорее всего, повлияет на поведение вашего приложения и может помешать работе некоторых функций вашего приложения или же они могут работать в ухудшенном состоянии.
Это изменение затрагивает все приложения, работающие на новой платформе, даже те, которые не предназначены для новой версии платформы. Платформа обеспечивает ограниченную совместимость с устаревшими приложениями, но вам следует начать планировать миграцию вашего приложения на новую модель разрешений уже сейчас, чтобы опубликовать обновленную версию вашего приложения при официальном запуске платформы.
Советы по тестированию
Используйте следующие советы по тестированию, которые помогут вам спланировать и провести тестирование вашего приложения с новым поведением разрешений.
- Определите текущие разрешения вашего приложения и соответствующие пути кода.
- Тестируйте потоки пользователей через службы и данные, защищенные разрешениями.
- Тестируйте с различными комбинациями предоставленных/отмененных разрешений.
- Используйте инструмент
adb
для управления разрешениями из командной строки:- Список разрешений и статуса по группам:
adb shell pm list permissions -d -g
- Предоставьте или отзовите одно или несколько разрешений, используя следующий синтаксис:
adb shell pm [grant|revoke] <permission.name> ...
- Список разрешений и статуса по группам:
- Проанализируйте свое приложение на наличие сервисов, использующих разрешения.
Стратегия тестирования
Изменение разрешений влияет на структуру и дизайн вашего приложения, а также на взаимодействие с пользователем и потоки, которые вы предоставляете пользователям. Вам следует оценить текущее использование разрешений вашего приложения и начать планировать новые потоки, которые вы хотите предложить. Официальный выпуск платформы обеспечивает совместимость, но вам следует планировать обновление своего приложения, а не полагаться на это поведение.
Определите разрешения, которые действительно нужны и используются вашему приложению, а затем найдите различные пути кода, использующие службы, защищенные разрешениями. Вы можете сделать это, сочетая тестирование новой платформы и анализ кода. При тестировании вам следует сосредоточиться на разрешении времени выполнения, изменив targetSdkVersion
приложения на уровень API 23.
Протестируйте различные комбинации отозванных и добавленных разрешений, чтобы выделить потоки пользователей, которые зависят от разрешений. Если зависимость не является очевидной или логичной, вам следует рассмотреть возможность рефакторинга или разделения этого потока на части, чтобы устранить зависимость или прояснить, почему необходимо разрешение.
Дополнительные сведения о поведении разрешений среды выполнения, тестировании и передовых методах см. в разделе Работа с разработчиком системных разрешений .
Тестирование Doze и режима ожидания приложения
Функции энергосбережения Doze и App Standby ограничивают объем фоновой обработки, которую может выполнять ваше приложение, когда устройство находится в состоянии ожидания или когда ваше приложение не в фокусе. Ограничения, которые система может налагать на приложения, включают ограниченный или отсутствующий доступ к сети, приостановленные фоновые задачи, приостановленные уведомления, игнорируемые запросы на пробуждение и сигналы тревоги. Чтобы убедиться, что ваше приложение работает правильно с этими оптимизациями энергосбережения, вам следует протестировать свое приложение, моделируя эти состояния низкого энергопотребления.
Тестирование вашего приложения с помощью Doze
Чтобы протестировать Doze с вашим приложением:
- Настройте аппаратное устройство или виртуальное устройство с помощью образа системы Android 7.0 (уровень API 24).
- Подключите устройство к компьютеру разработки и установите приложение.
- Запустите приложение и оставьте его активным.
- Имитируйте переход устройства в режим ожидания, выполнив следующие команды:
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step $ adb shell dumpsys deviceidle -h
- Наблюдайте за поведением вашего приложения при повторной активации устройства. Убедитесь, что оно корректно восстанавливается после выхода устройства из режима Doze.
Тестирование приложений в режиме ожидания приложения
Чтобы проверить режим ожидания приложения в вашем приложении:
- Настройте аппаратное устройство или виртуальное устройство с помощью образа системы Android 7.0 (уровень API 24).
- Подключите устройство к компьютеру разработки и установите приложение.
- Запустите приложение и оставьте его активным.
- Имитируйте переход приложения в режим ожидания, выполнив следующие команды:
$ adb shell am broadcast -a android.os.action.DISCHARGING $ adb shell am set-idle <packageName> true
- Имитируйте пробуждение вашего приложения с помощью следующей команды:
$ adb shell am set-idle <packageName> false
- Наблюдайте за поведением вашего приложения, когда оно просыпается. Убедитесь, что он корректно выходит из режима ожидания. В частности, вам следует проверить, продолжают ли уведомления и фоновые задания вашего приложения работать должным образом.
Автоматическое резервное копирование приложений и идентификаторов устройств
Если ваше приложение сохраняет какие-либо идентификаторы устройства, такие как регистрационный идентификатор Google Cloud Messaging, во внутреннем хранилище, обязательно следуйте рекомендациям по исключению места хранения из автоматического резервного копирования, как описано в разделе Резервное копирование пользовательских данных с помощью автоматического резервного копирования .