Дебаггер с для андроид

Инструменты отладки Android

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

В 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 в свой проект, добавьте следующую строку в блок зависимостей:

Для инициализации Stetho вы должны добавить следующую строку в метод onCreate() класса Application вашего приложения:

Чтобы Stetho смог отображать данные сети с помощью OkHttp-клиента, вы должны добавить такой перехватчик:

Возможности

Stetho позволяет вам просматривать уровни сети и хранилища вашего приложения:

Мониторинг сети

Вкладка «Network» показывает таблицу с запросами и выглядит следующим образом:

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

Мониторинг баз данных

Вкладка «Resource» показывает таблицу SQLite вашего приложения и выглядит следующим образом:

Это окно представляет собой простую таблицу без поиска и пагинации. Там могут быть ошибки: например, на скриншоте выше вы можете увидеть два столбца id.

Пример проекта

Вы можете найти образец проекта здесь.

Плюсы

  • Это бесплатный инструмент.
  • Он позволяет проверять уровни сети и хранилища.
  • Чтобы проверить базу данных Realm, вы можете установить библиотеку Stetho-Realm.

Минусы

  • Ошибки.
  • Уродливый пользовательский интерфейс.
  • Не очень богатая функциональность.

DebugDrawer

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

Интеграция

Для загрузки DebugDrawer необходимо добавить следующую строку в блок зависимостей файла build.gradle :

Читайте также:  Список вкладок хром андроид

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

Чтобы инициализировать DebugView, вы должны добавить следующие строки в метод onCreate() вашей Activity:

Возможности

Отладочная навигационная панель в зависимости от вашей конфигурации может выглядеть следующим образом:

DebugDrawer позволяет быстро проверить информацию о вашем устройстве, изменить настройки или «подделать» ваше местоположение.

Мониторинг сети

DebugView использует библиотеку Chuck внутри себя и позволяет вам проверять сетевые запросы:

Библиотека Chuck показывает список всех запросов и позволяет вам посмотреть их подробности.

Пример проекта

Вы можете посмотреть пример здесь.

Плюсы

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

Минусы

  • Довольно трудно проверять сетевой запрос на экране мобильного устройства.
  • Нет возможности проверки уровня базы данных.

AppSpector

AppSpector — это сервис для отладки приложений на iOS и Android, который позволяет удаленно проверять и контролировать свои приложения в режиме реального времени с помощью простого интерфейса. Полная документация доступна здесь.

Интеграция

Чтобы начать работу с AppSpector, вам нужно пройти простую регистрацию и создать свой проект.

Чтобы интегрировать AppSpector в ваше приложение, вы должны изменить файл build.gradle следующим образом:

Инициализируйте AppSpector в методе onCreate() в классе Application вашего приложения:

Возможности

Когда вы запустите ваше приложение, будет создан новый сеанс, и вы увидите его в главном окне AppSpector в браузере:

Когда вы нажимаете на определённую сессию, вы можете проверить своё приложение, используя различные мониторы.

Проверка производительности

В окне «Performance» отображаются графики с различными показателями, такими как ЦП, память, сеть, диск, FPS и батарея.

Этот монитор помогает обнаружить утечки ресурсов, использование диска и FPS.

Мониторинг сети

Монитор сети показывает таблицу с запросами. Вы можете нажать на определённую строку, чтобы увидеть подробную информацию о запросе и ответе:

В этом окне также есть функции поиска, фильтрации и экспорта.

Их очень удобно использовать, если приложение большое.

Мониторинг базы данных

Монитор SQLite позволяет вам мониторить базу данных и вызывать SQL-запросы.

Определённую запись легко найти, т.к. в этом мониторе несколько страниц.

Источник

Отладка приложений для Android без исходного кода на Java

О чем статья

В этой статье я сжато, без «воды», расскажу как отлаживать приложения для Android не имея их исходного кода на Java. Статья не совсем для новичков. Она пригодиться прежде всего тем кто более или менее понимает синтаксис Smali и имеет некоторый опыт в reversing engineering приложений для Android.

Инструменты

Нам понадобится Apk-tool 1.4.1 и NetBeans 6.8. Да-да, именно эти древние версии! С более новыми версиями отладка к сожалению «не заводится», о чем уже неоднократно упоминалось в различных обсуждениях (см. например тут и тут).

На установке подробно не останавливаюсь. NetBeans устанавливается по умолчанию, просто запускам инсталляцию и кликаем Next-Next-Next. Установка Apk-tools заключается в обычной распаковке файла apktool.jar в любую папку.

Также по ходу дела нам понадобится DDMS — он есть в Android SDK.

Отладка

В этом разделе дана пошаговая инструкция. Она писалась для Windows, но вероятно сработает и на Linux и Mac OS. Черновик этой инструкции на английском также есть у меня в блоге, но ссылку не дам, ибо правила. Эта инструкция более или менее повторяет оригинальную инструкцию с Apk-tool wiki, однако содержит некоторые дополнительные пункты, без которых отладка может «не завестись». В своё время у меня не заводилась, и я нашел эти дополнительные пункты методом усиленного гугления и «научного тыка». Надеюсь, теперь мой опыт кому-то сэкономит время.

Читайте также:  Включение vpn для android

Пожалуйста, следуйте инструкции в точности – это важно!

    Декодируйте свой .apk файл в директорию out с помощью Apk-tool. Для этого используйте опцию -d :

В результате в директории out/smali у вас будет куча .java файлов с закомментированным Smali кодом внутри. Это нормально, так и должно быть.

  • Добавьте атрибут android:debuggable=»true» в секцию файла out/AndroidManifest.xml
  • Соберите директорию out обратно в .apk файл:

  • Подпишите файл my.app.to.debug.apk и установите его на реальное устройство или эмулятор, на котором вы собираетесь его отлаживать.
  • Удалите директорию out/build (она может помешать создать проект на шаге 6 и 7).
  • Запустите NetBeans, кликните «File» -> «New Project». Выберите «Java» -> «Java Project with Existing Sources». Кликните «Next».
  • Укажите out в качестве «Project Folder». Кликните «Next».
  • Добавьте директорию out/smali в список «Source Package Folder». Кликните «Next», а затем «Finish». В результате в проект будут добавлены те самые .java файлы с закомментированным Smali кодом внутри.
  • Запустите my.app.to.debug.apk на реальном устройстве или эмуляторе (если вы используете реальное устройство, то убедитесь что оно подключено к вашему компьютеры с помощью USB кабеля и ваша система его «видит»).
  • Запустите DDMS, найдите своё приложение в списке и кликните на него. Запомните информацию в последней колонке, это номер порта, обычно что-то вроде 86xx/8700 .
  • В Netbeans кликните «Debug» -> «Attach Debugger» -> выберите «JPDA» и введите в поле «Port» 8700 (или какой там номер порта у вас был на предыдущем шаге). Остальные поля оставте без изменений. Кликните «OK».
  • Теперь вы можете отлаживать приложение: на панели Netbeans станет можно кликать на соответствующие кнопки
  • Установите breakpoint на интересующую вас инструкцию (да-да, на одну из тех инструкция из закомментированного Smali кода внутри тех самых .java файлов о которых я уже дважды до этого упоминал). Помните, что вы не можете устанавливать breakpoints на строчки начинающиеся с «.», «:» или «#». Только на инструкции Smali кода!
  • Сделайте что-нибудь в приложении, что бы ваша breakpoint сработала. После этого вы сможете делать пошаговую отладку, просматривать значения полей и переменных и т.д.
  • Вот и всё, если вкратце.

    Подводные камни

    Без подвоха тут конечно никак. Обычно всё идёт хорошо, строго по инструкции, аж до шага 13. А вот на шаге 13 люди часто ставят breakpoint в самом начале кода приложения: например в методе onCreate(. ) в activity с которой начинается выполнение приложения. Оно вроде бы и логично – если не совсем понятно откуда начинать отлаживать приложение, лучше начинать с самого начала. Однако в большинстве случаев дело не идёт. Отлаживаемое приложение работает себе как ни в чем не бывало, а подлый breakpoint в onCreate(. ) ни в какую не желает срабатывать.

    Это происходит из-за того что мы подсоединяем отладчик к уже работающему приложению. Это значит код в начале приложения (например в том же методе onCreate в activity с которой начинается выполнение приложения) уже выполнился, и ставить на него breakpoint’ы как правило (хотя не всегда конечно) бесполезно. Более того, когда мы присоединяем отладчик к работающему приложению, оно не останавливается пока не сработает наш breakpoint или пока мы его сами не остановим – об этом моменте также стоит помнить.

    В своей следующей статье я показываю трюк, который позволяет отлаживать Java приложения для Android без исходного кода с самого начала, т.е. именно с того самого первого метода onCreate(. ) (или даже конструктора) в activity с которой начинается выполнение приложения.

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

    Читайте также:  Все для android виджеты

    Источник

    Обзор средств запуска и отладки приложений на Android

    Разрабатывая свое первое приложение под Android, я столкнулся с проблемой запуска приложения для проверки и отладки. Эта статья должна помочь начинающему пользователю выбрать средство эмуляции.

    Содержание:
    Android Virtual Device (AVD)

    Установка:
    Это средство эмуляции встроено в Android SDK.

    Настройка:
    (на примере использования в Eclipse)
    Window > Android SDK and AVD Manager > New
    Вписываем имя виртуального устройства, платформу, размер карты памяти, тип дисплея…
    Жмем Create AVD.

    Запуск:
    Первый запуск эмулятор длиться очень долго, особенно на слабых устройствах. Например, я так и не смог дождаться первого запуска на своем нетбуке, а, запуская первый раз на компьютере, был уверен, что эмулятор ушел в вечный цикл.
    Последующие запуски эмулятора будут чуть шутрее.
    Время между нажатием кнопки «Run» и появлением главного активити тестового приложения на эмуляторе проходит в среднем 11 секунд. Замеры проводил на достаточно производительном компьютере.

    Преимущества и недостатки:
    + возможность протестировать приложение на разных версиях ОС Android, на устройствах с разными типами дисплея…
    + различные настройки, необходимые для тестирования, например, смена ориентации экрана
    + эмуляция SD-карты
    — большой промежуток времени между нажатием кнопки «Run» и запуском приложения на эмуляторе
    — эмулятор работает очень медленно, например, то, что телефон обрабатывал 1-2 секунды, эмулятор делал за 8-10 секунд

    VirtualBox+Android x86

    Установка и настройка:

    1. Скачиваем и устанавливаем VirtualBox.
    2. Скачиваем образ.
    3. «Создаём виртуальную машину Linux 2.6/Other Linux, 512 Mb RAM, Bridged Network, HD 2 Gb, Disable Mouse Integration. Подключаем ISO файл и загружаемся одной из опций LiveCD (есть вариант HDPI и MDPI)» (с) или следуем этой инструкции.
    4. Нажимаем Alt-F1 для выхода в консоль и набираем netcfg и запоминаем IP адрес эмулятора. Для возврата к GUI, нажимаем Alt-F7.
    5. adb connect

    Запуск:
    Время между нажатием кнопки «Run» и появлением главного активити тестового приложения на эмуляторе не засекал, но, по субъективным ощущениям, это происходит почти мгновенно.

    Преимущества и недостатки:
    + маленький промежуток времени между нажатием кнопки «Run» и запуском приложения на эмуляторе
    + местами шустрая работа
    — достаточно длительная и иногда проблематичная установка
    — эмулятор работает местами медленно, имеются проблемы с изображением (особенно на MDPI)
    — проблемы с эмуляцией SD-карты, сменой ориентацию экрана,…
    — только два (три) доступные версии ОС Android и только два доступных типа дисплея

    Телефон с ОС Android, подключенный через USB

    Установка и настройка:

    1. Включаем на телефоне режим отладки. (Насторйки > Приложения > Разработка > Отладка по USB).
    2. Скачиваем драйвер для вашего телефона.
    3. Подключаем телефон к ПК.
    4. Устанавливаем драйвера. В Диспетчере устройств должен появиться раздел ADB Interface.
    5. adb devices. Если ваш телефон не отображается в списке, то переустанавливаем драйвер ADB.

    Запуск:
    Между нажатием кнопки «Run» и появлением главного активити тестового приложения на телефоне проходит порядка 5 секунд.

    Преимущества и недостатки:
    + возможность увидеть приложение так, как его будет видеть пользователь (очень важным момент, особенно при создании интерфейса и дизайна приложения)
    + мультитач (если есть в телефоне)
    + смена ориентации экрана, акселерометр (если есть в телефоне)
    — только одна версия ОС и один тип дисплея
    — на физическом рабочем столе появиться еще один объект

    Выводы:

    Я пробовал работать с каждым из этих средств эмуляции и остановился на таком варианте:
    1. написание и тестирование приложения, используя телефон;
    2. тестирование приложения на многочисленных Android Virtual Device с различными комбинациями версии ОС и типа дисплея.
    Надеюсь, что читающий сделал выбор эмулятора или почерпнул для себя что-то новое.
    Удачи в тестировании!

    Источник

    Оцените статью