Отладка — важнейший аспект разработки под Android. Хотя такие инструменты, как Logcat и Debugger, часто являются оптимальными вариантами, обмен логами или сетевыми вызовами с командой QA может быть затруднен. Что, если бы существовал более простой и эффективный способ подойти к этому процессу? Появился Flipper — инструмент, призванный упростить эти процессы и вывести отладку на новый уровень эффективности.
Flipper состоит из двух частей. Десктопное приложение, в котором можно увидеть всю отладочную информацию, и SDK, который вы включаете в свое приложение. Flipper использует систему плагинов для передачи данных из приложения на декстоп. Он позволяет писать собственные плагины или предлагает множество встроенных дополнений, в том числе:
- Crash Reporter: уведомляет о сбоях в работе приложения.
- База данных SQL: Позволяет просматривать и выполнять запросы в базе данных SQL.
- Network Viewer: Отслеживает сетевые запросы и ответы.
- LeakCanary: Обнаруживает утечки памяти в приложении.
- Navigation: Регистрирует события навигации и позволяет быстро тестировать глубокие ссылки.
- SharedPreferences Viewer: Предоставляет доступ к сохраненным данным.
- Инспектор макетов: Поддерживает проверку XML-представлений .
- Средство просмотра журналов: Работает как Logcat в Android Studio, но без необходимости устанавливать Android Studio на MacBook тестировщика :)
- Инспектор изображений: Позволяет просматривать загруженные изображения и кэш изображений. В настоящее время поддерживается только Fresco.
- Песочница: Позволяет разработчикам опробовать работу приложения в «песочнице».
Далее я покажу, как настроить Flipper на Android.
Загрузка приложения Flipper Desktop
Перейдите на официальный сайт, чтобы загрузить приложение Flipper. После установки не забудьте указать путь к Android SDK в настройках, иначе оно не будет работать :)
В левой части интерфейса приложения вы найдете список плагинов. Они неактивны, но станут доступны после подключения приложения. Об этом расскажем в следующем разделе.
Включение Flipper в проект Android Studio
Начнем с того, что перейдем в файл build.gradle и включим в него зависимости Flipper:
implementation("com.facebook.flipper:flipper:0.210.0") implementation("com.facebook.soloader:soloader:0.10.5")
Для простоты в этом руководстве я использовал ‘implementation’ как для отладочных, так и для релизных сборок. Однако для вашего производственного приложения следует выбрать ‘debugImplementation’ и разделить код инициализации Flipper для debug- и release-вариантов сборки. Таким образом, Flipper не будет включен в релизные сборки. Вот пример приложения, в котором можно проверить, как это реализовать.
Далее инициализируем Flipper в классе Application:
class MyApp : Application() { override fun onCreate() { super.onCreate() if (BuildConfig.DEBUG) { initFlipper() } } private fun initFlipper() { SoLoader.init(this, false) val client = AndroidFlipperClient.getInstance(this) client.start() } }
После запуска приложения вы должны увидеть, что оно подключено к десктопному приложению и что плагин Logs Plugin включен и уже что-то выводит! Это происходит потому, что Logs Plugin включается автоматически, без дополнительной настройки.
И это все, что касается инициализации! Дальше я покажу пример добавления встроенного плагина.
Включение сетевого плагина
Плагины Flipper Plugins поставляются в виде отдельных зависимостей, поэтому мы должны добавить сетевой плагин в сборку gradle отдельно.
implementation("com.facebook.flipper:flipper-network-plugin:0.201.0")
Далее мы обновляем функцию initFlipper, чтобы включить в нее сетевой плагин:
private fun initFlipper() { SoLoader.init(this, false) val networkPlugin = NetworkFlipperPlugin() AndroidFlipperClient.getInstance(this).run { addPlugin(networkPlugin) start() } }
На данный момент Flipper поддерживает только OkHttp и Retrofit. Для просмотра сетевых логов необходимо добавить FlipperOkhttpInterceptor к OkHttpClient.
Если вы используете другой HTTP-клиент, то для создания отчетов о сетевых вызовах можно напрямую использовать следующие функции плагина Network:
networkPlugin.reportRequest(RequestInfo) networkPlugin.reportResponse(ResponseInfo)
На этом работа с Network Plugin завершена. Запустив приложение и выполнив несколько запросов с помощью HTTP-клиента, вы должны увидеть сетевые логи в десктопном приложении.
Аналогичным образом добавляются и другие встроенные плагины. Инструкции по плагину Crash Reporter и другим можно найти здесь.
Вот и все для сегодняшнего руководства по Flipper! Надеюсь, это руководство натолкнет вас на новые идеи по улучшению рабочих процессов отладки.