Чтобы делать высококачественный продукт, разработчики должны быстро и своевременно находить и исправлять ошибки. В этой статье мы поговорим об одной из наиболее важных частей процесса разработки программного обеспечения — отладке кода.
В Techery мы использовали много разных инструментов отладки, и у каждого из них есть свои преимущества. Мы сделали обзор и делимся нашим опытом использования нескольких инструментов. Надеемся, что эта статья поможет вам решить, какой из них использовать:
- Android Profiler — профилировщик Android Studio;
- Facebook Stetho — ADB для Android-приложений;
- DebugDrawer — отладочная навигационная панель в приложении для быстрой отладки;
- AppSpector — инструмент отладки для Android и iOS.
Android Studio Profiler
Инструмент Android Profiler предоставляет данные в реальном времени, которые помогут вам профилировать сетевой уровень и понять, как приложение использует ресурсы процессора, памяти и батареи.
Возможности
Окно профилировщика показывает загрузку процессора, памяти, сети и батареи и выглядит следующим образом:
Мониторинг сети
Если вы щёлкнете по временной шкале сети, то увидите подробную информацию о запросах:
В окне выше есть вкладка «Connection View», в которой отображается список запросов с размером, временем, состоянием, запросом и ответом.
Проверка памяти
Профилировщик памяти показывает график использования ОЗУ и выглядит следующим образом:
Используя эту функциональность, вы можете найти функции, которые создают дополнительные объекты и мешают сборке мусора.
Расширенное профилирование
Вы можете отредактировать настройки запуска (Run configuration) вашего приложения, чтобы включить расширенное профилирование:
Характеристики, предоставляемые расширенным профилированием:
- Все окна профилировщика поддерживают временную шкалу.
- Memory Profiler показывает количество выделенных объектов.
- Memory Profiler показывает события сборки мусора.
- Network Profiler показывает подробную информацию обо всех передаваемых файлах.
Плюсы
- Профилировщик Android Studio работает «из коробки», и вам не нужно интегрировать сторонние зависимости в ваш проект.
- Доступные проверки (сеть, процессор, память, энергия) показывают исчерпывающую информацию о вашем приложении.
- Хорошая реализация мониторинга сети: можно выбрать временные рамки и тщательно проверять запросы.
Минусы
- Нет профилировщика для базы данных, что заставляет использовать сторонние инструменты.
Facebook Stetho
Stetho — это ADB для Android, который позволяет получить доступ к инструментам разработчика Chrome для проверки вашего приложения.
Интеграция
Чтобы загрузить библиотеку Stetho в свой проект, добавьте следующую строку в блок зависимостей:
implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.0'
Для инициализации Stetho вы должны добавить следующую строку в метод onCreate()
класса Application
вашего приложения:
Stetho.initializeWithDefaults(this);
Чтобы Stetho смог отображать данные сети с помощью OkHttp-клиента, вы должны добавить такой перехватчик:
new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build()
Возможности
Stetho позволяет вам просматривать уровни сети и хранилища вашего приложения:
Мониторинг сети
Вкладка «Network» показывает таблицу с запросами и выглядит следующим образом:
В таблице показан статус, тип, время, размер и метод каждого запроса. Нужно просто нажать на строку, чтобы увидеть подробную информацию:
Мониторинг баз данных
Вкладка «Resource» показывает таблицу SQLite вашего приложения и выглядит следующим образом:
Это окно представляет собой простую таблицу без поиска и пагинации. Там могут быть ошибки: например, на скриншоте выше вы можете увидеть два столбца id.
Пример проекта
Вы можете найти образец проекта здесь.
Плюсы
- Это бесплатный инструмент.
- Он позволяет проверять уровни сети и хранилища.
- Чтобы проверить базу данных Realm, вы можете установить библиотеку Stetho-Realm.
Минусы
- Ошибки.
- Уродливый пользовательский интерфейс.
- Не очень богатая функциональность.
DebugDrawer
Это инструмент, который позволяет интегрировать отладочную навигационную панель в ваше приложение.
Интеграция
Для загрузки DebugDrawer необходимо добавить следующую строку в блок зависимостей файла build.gradle
:
debugImplementation ‘io.palaima.debugdrawer:debugdrawer:0.8.0’
Вы можете настроить функциональность отладочной навигационной панели, добавив различные модули в ваш проект. Например, если вы хотите проверить сетевой уровень вашего приложения, вы можете добавить следующую строку:
implementation 'io.palaima.debugdrawer:debugdrawer-okhttp3:0.8.0'
Чтобы инициализировать DebugView, вы должны добавить следующие строки в метод onCreate()
вашей Activity:
SwitchAction switchAction = new SwitchAction("Test switch", new SwitchAction.Listener() {
@Override
public void onCheckedChanged(boolean value) {
Toast.makeText(MainActivity.this, "Switch checked", Toast.LENGTH_LONG).show();
}
});
ButtonAction buttonAction = new ButtonAction("Test button", new ButtonAction.Listener() {
@Override
public void onClick() {
Toast.makeText(MainActivity.this, "Button clicked", Toast.LENGTH_LONG).show();
}
});
SpinnerAction < String > spinnerAction = new SpinnerAction < > (
Arrays.asList("First", "Second", "Third"),
new SpinnerAction.OnItemSelectedListener < String > () {
@Override public void onItemSelected(String value) {
Toast.makeText(MainActivity.this, "Spinner item selected - " + value, Toast.LENGTH_LONG).show();
}
}
);
debugDrawer = new DebugDrawer.Builder(this)
.modules(
new ActionsModule(switchAction, buttonAction, spinnerAction),
new FpsModule(Takt.stock(getApplication())),
new LocationModule(this),
new ScalpelModule(this),
new TimberModule(),
new OkHttp3Module(okHttpClient),
new PicassoModule(picasso),
new GlideModule(Glide.get(getContext())),
new DeviceModule(this),
new BuildModule(this),
new NetworkModule(this),
new SettingsModule(this)
).build();
Возможности
Отладочная навигационная панель в зависимости от вашей конфигурации может выглядеть следующим образом:
DebugDrawer позволяет быстро проверить информацию о вашем устройстве, изменить настройки или «подделать» ваше местоположение.
Мониторинг сети
DebugView использует библиотеку Chuck внутри себя и позволяет вам проверять сетевые запросы:
Библиотека Chuck показывает список всех запросов и позволяет вам посмотреть их подробности.
Пример проекта
Вы можете посмотреть пример здесь.
Плюсы
- DebugDrawer даёт вам быстрый доступ к информации и настройкам устройства, позволяет имитировать местоположение и состояние сетевого подключения.
Минусы
- Довольно трудно проверять сетевой запрос на экране мобильного устройства.
- Нет возможности проверки уровня базы данных.
AppSpector
AppSpector — это сервис для отладки приложений на iOS и Android, который позволяет удаленно проверять и контролировать свои приложения в режиме реального времени с помощью простого интерфейса. Полная документация доступна здесь.
Интеграция
Чтобы начать работу с AppSpector, вам нужно пройти простую регистрацию и создать свой проект.
Чтобы интегрировать AppSpector в ваше приложение, вы должны изменить файл build.gradle
следующим образом:
buildscript {
repositories {
jcenter()
google()
maven {
url "https://maven.appspector.com/artifactory/android-sdk"
}
}
dependencies {
classpath "com.appspector:android-sdk-plugin:1.+"
}
}
apply plugin: 'com.android.application'
// Добавьте плагин AppSpector после плагина Android
apply plugin: 'com.appspector.sdk'
repositories {
maven {
url "https://maven.appspector.com/artifactory/android-sdk"
}
}
dependencies {
implementation "com.appspector:android-sdk:1.+"
}
Инициализируйте AppSpector в методе onCreate()
в классе Application
вашего приложения:
AppSpector
.build(this)
.withDefaultMonitors()
.run("android_OGMyYzA3NGYtNDkxNy00ZWRiLTgxOTktNjQ5YjIzMTZjOWM4");
Возможности
Когда вы запустите ваше приложение, будет создан новый сеанс, и вы увидите его в главном окне AppSpector в браузере:
Когда вы нажимаете на определённую сессию, вы можете проверить своё приложение, используя различные мониторы.
Проверка производительности
В окне «Performance» отображаются графики с различными показателями, такими как ЦП, память, сеть, диск, FPS и батарея.
Этот монитор помогает обнаружить утечки ресурсов, использование диска и FPS.
Мониторинг сети
Монитор сети показывает таблицу с запросами. Вы можете нажать на определённую строку, чтобы увидеть подробную информацию о запросе и ответе:
В этом окне также есть функции поиска, фильтрации и экспорта.
Их очень удобно использовать, если приложение большое.
Мониторинг базы данных
Монитор SQLite позволяет вам мониторить базу данных и вызывать SQL-запросы.
Определённую запись легко найти, т.к. в этом мониторе несколько страниц.
Плюсы
- Отличный пользовательский интерфейс. Можете посмотреть демо здесь.
- Сеансом легко поделиться с коллегами по команде, просто скопировав URL-адрес из браузера и отправив его.
- AppSpector поддерживает две платформы: iOS и Android.
Минусы
- Пробный период — 14 дней.
Перевод статьи «Android debug tools»
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
0 комментариев к статье "Инструменты отладки Android"