Профилируйте производительность вашего приложения

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

Чтобы найти и устранить эти проблемы, используйте инструменты и методы профилирования и сравнительного анализа, описанные в этом разделе. Чтобы изучить методы измерения производительности и примеры использования этих методов для решения конкретных проблем, см. раздел «Измерение производительности» .

Android Studio предлагает несколько инструментов профилирования, которые помогут найти и визуализировать потенциальные проблемы:

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

Эти инструменты совместимы с Android 5.0 (уровень API 21) и выше. Дополнительную информацию об инструментах см. на других страницах этого раздела руководства пользователя.

Библиотеки Jetpack Benchmark позволяют вашему приложению измерять различные важные операции:

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

Чтобы узнать больше об этих библиотеках, посетите страницу «Протестируйте свое приложение» .

Профилируемые приложения

Profileable — это конфигурация манифеста, представленная в Android Q. Она может указывать, может ли пользователь устройства профилировать это приложение с помощью таких инструментов, как Android Studio, Simpleperf и Perfetto.

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

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

Да:

Нет:

Профилировщик ЦП Полный

Да:

Нет:

Сетевой профилировщик Да Нет
Энергетический профилировщик Да Нет
Профилировщик мощности Да Да
Монитор событий Да Нет

Profileable была введена для того, чтобы разработчики могли разрешить своим приложениям предоставлять информацию инструментам профилирования, неся при этом очень небольшие затраты на производительность. Профилируемый APK — это, по сути, релизный APK со строкой <profileable android:shell="true"/> добавленной в раздел <application> файла манифеста.

Автоматическая сборка и запуск профилируемого приложения

Вы можете настроить, создать и запустить профилируемое приложение одним щелчком мыши. Для этой функции требуется виртуальное или физическое тестовое устройство с API уровня 29 или выше и Google Play. Чтобы использовать эту функцию, щелкните стрелку рядом со значком приложения «Профиль» . и выберите один из двух вариантов:

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

    Профилирование с минимальными накладными расходами.
  • Профильное «приложение» с полными данными запускает профилировщики ЦП, памяти и энергии.

    Профилирование с полными данными.

Создайте и запустите профилируемое приложение вручную.

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

Создайте приложение для выпуска

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

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

            buildTypes {
              release {
                signingConfig signingConfigs.debug
              }
            }
          
  2. В Android Studio выберите «Сборка» > «Выбрать вариант сборки...» и выберите вариант выпуска.

Изменить выпуск на профилируемый

  1. Преобразуйте приложение выпуска, указанное выше, в профилируемое приложение, открыв файл AndroidManifest.xml и добавив следующее в <application> . Дополнительные сведения см. в разделе Создание приложения для выпуска .

    <profileable android:shell="true"/>

  2. В зависимости от версии SDK вам может потребоваться добавить следующие строки в файл build.gradle приложения.

          aaptOptions {
            additionalParameters =["--warn-manifest-validation"]
          }
        

Профилирование профилируемого приложения

Чтобы профилировать профилируемое приложение, выполните следующие действия:

  1. Запустите приложение из эмулятора разработки или устройства.

  2. В Android Studio запустите профилировщик, выбрав «Вид» > «Окна инструментов» > «Профилировщик» .

  3. После запуска приложения нажмите кнопку Кнопка «Профилировщики плюс» кнопку в профилировщике, чтобы увидеть раскрывающееся меню. Выберите свое устройство, затем выберите запись приложения в разделе «Другие профилируемые процессы» .

    Профилируемое меню
  4. Профилировщик должен быть прикреплен к приложению. Доступны только профилировщики ЦП и памяти, возможности профилировщика памяти ограничены.

    Профилируемый просмотр сеанса
    Профилируемое меню
    Профилируемое меню

Сессии

Вы можете сохранить данные Profiler в виде сеансов , которые сохраняются до тех пор, пока вы не закроете Android Studio. Записывая информацию профилирования в нескольких сеансах и переключаясь между ними, вы можете сравнивать использование ресурсов в различных сценариях.

  • Чтобы начать новый сеанс, нажмите кнопку « Начать новый сеанс профилирования». и выберите процесс приложения в появившемся раскрывающемся меню.
  • Когда вы записываете трассировку или создаете дамп кучи , Android Studio добавляет эти данные (вместе с сетевой активностью вашего приложения) как отдельную запись в текущий сеанс.
  • Чтобы прекратить добавление данных в текущий сеанс, нажмите «Остановить текущий сеанс профилирования». .
  • Чтобы импортировать трассировку, экспортированную из предыдущего запуска Android Studio, нажмите « Начать новый сеанс профилировщика». и выберите «Загрузить из файла» .

Включить дополнительную поддержку для старых устройств (уровень API < 26).

Чтобы показать вам дополнительные данные профилирования при запуске устройства с Android 7.1 или более ранней версии, Android Studio должна внедрить логику мониторинга в ваше скомпилированное приложение. Эти дополнительные данные профилирования включают следующее:

  • Временная шкала событий во всех окнах профилировщика
  • Количество выделенных объектов в Memory Profiler
  • События сборки мусора в профилировщике памяти
  • Подробности обо всех передаваемых файлах в Network Profiler

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

  1. Выберите «Выполнить» > «Изменить конфигурации» .
  2. Выберите модуль приложения на левой панели.
  3. Перейдите на вкладку «Профилирование» и установите флажок «Включить дополнительную поддержку для старых устройств (уровень API < 26)» .
  4. Создайте и снова запустите свое приложение.

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

Запуск автономных профилировщиков

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

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

  1. Убедитесь, что профилировщик в настоящее время не работает внутри Android Studio.
  2. Перейдите в каталог установки и перейдите в каталог bin :

    Windows/Linux : studio-installation-folder /bin

    macOS : использование автономных профилировщиков не поддерживается в macOS.

  3. В зависимости от вашей ОС запустите profiler.exe или profiler.sh . Появится экран-заставка Android Studio. После исчезновения заставки откроется окно профилировщика.