Stetho: новая отладочная платформа для создания приложений под Android

Перевод статьи Stetho: A new debugging platform for Android via code.facebook.com, автор Josh Guilfoyle

Секрет стремительного движения на Facebook - это инвестирование средств в отличный инструментарий. При нашем масштабе, мы стремимся иметь в распоряжении инструменты, которые позволяют инженерам не только быстро обнаруживать проблемы и устранять их, но и помочь модель поведения эффективно продвигаться через объемную базу кода. Отсутствие решений для этих нужд заставляет нас, как и много других разработчиков Android, на справедливое количество непоследовательных внутренних интерфейсов, косвенно и трудно интерпретируемых журналирование, не говоря уже о многих мучительных сессиях с отладчиком Java.

Мы полагаем, есть лучший способ

Трудно не смотреть с тоской на хорошие инструменты для веб-разработчиков, особенно на комплекс разработчиков под названием Chrome Developer Tools. Это удобный интегрированный инструмент доступен через быстрые сочетания клавиш и предлагает богатую визуализацию, которая использует все преимущества глубокой интеграции с браузерным ядром.

Но как насчет платформы Android? Сегодня мы представляем новую мощную open-source платформу для отладки под Андроид под названием Stetho. С ее помощью разработчики могут разблокировать богатый и удобный доступ к данным. И, наконец, самая "вкусная" часть: мы используем инструменты разработчика Chrome в качестве пользовательского интерфейса!

Как работает интеграция?

В общем случае, требуются небольшие усилия со стороны разработчиков. Просто добавьте библиотеку Stetho  и один из помощников сети (stetho-okhttp или stetho-urlconnection), а затем модифицируйте Application.onCreate таким образом:

  public class MyApplication extends Application {
    public void onCreate() {
      super.onCreate();
      Stetho.initialize(
        Stetho.newInitializerBuilder(this)
          .enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
          .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
          .build());
    }
  }

Затем сообщите сетевой библиотеке о Stetho:

OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor());
 

Теперь вы готовы к работе! Просто подключите телефон, запустите приложение и перейдите на страницу chrome://inspect на вашем компьютере:

Для получения более детальной информации, посетите нашу страницу на GitHub.

Но подождите, это еще не все!

Пользовательский интерфейс Chrome Developer Tools, без сомнения, всеобъемлющ. Но есть, конечно, детали каких-то нетривиальных приложений, которые не будут задействованы. Android предлагает малоизвестную точку расширяемости, с некоторыми важными предостережениями. Можно добавить пользовательский код отладки для любого компонента Android (см. Activity#dumpService#dump и т. д.) и и получите доступ к отладке по вызову:

 adb shell dumpsys activity top
 adb shell dumpsys activity service com.yourpackage
 

Многие проблемы так и остались с этим подходом. Возможно, вам необходим хотите более удобный способ для настройки внутренних параметров, хранящихся в SharedPreferences. Разработка пользовательских внутренних настроек экранов - громоздко в обслуживании, и в крупном масштабе может стать еще более неудобным для использования. Запуск сервиса для редактирования этих данных будет перебором. Как мы можем улучшить это положение?

И здесь Stetho снова приходит на помощь! С дополнительной функцией dumpapp, вы можете легко встроить main(String[]) - подобные методы в приложении к инструменту любого пользовательского компоненты. Эти микро-программы решат многие проблем с методами #dump, предлагая удобное, расширяемое окружение командной строки. Для начала, введите:

  export PATH=”$PATH:/path/to/stetho/scripts”
  dumpapp --help

См. stetho-sample для тест-драйва стандартных плагинов или чтобы узнать, как написать собственный плагин.

Лучшее еще впереди

Мы еще на раннем этапе разработки, но мы напряженно работаем над расширением библиотеки. Stetho - наш первый Android-проект с открытым исходным кодом в 2015 году, и мы будем рады получить отзывы на странице github.

Мы с нетерпением ждем отличного года - с более открытым кодом Android-проектов. Так что следите за обновлениями.

И счастливого кодинга!

Компьютерная помощь: задайте свой вопрос

Укажите email, на который я смогу выслать ответ на ваш вопрос