Удаленная отладка приложений в ОС Android. Отладка Android приложения на смартфоне

После написания первой версии кода нашей программы мы, конечно, захотим запустить и протестировать его для обнаружения потенциальных проблем (или чтобы просто похвастаться). Сделать это можно двумя способами: запустить приложение на реальном устройстве, подключенном к компьютеру с помощью USB-кабеля; вызвать эмулятор, включенный в SDK, и протестировать приложение на нем.

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

Подключение устройства

Перед подключением устройства для тестирования необходимо убедиться в том, что оно распознается операционной системой. В Windows для этого нужно установить соответствующий драйвер, являющийся частью инсталляции SDK, которую мы установили ранее. Просто подсоедините устройство и следуйте инструкциям по установке стандартного драйвера для Windows, указав папку driver/ в вашем установочном каталоге SDK. Драйверы для некоторых устройств придется скачать с сайта их производителей. На Linux и Mac OS X обычно нет нужды устанавливать драйверы отдельно – они поставляются с операционной системой. В зависимости от версии Linux может понадобиться совершить несколько дополнительных действий (обычно в части создания нового файла правил для udev). Для разных устройств набор действий может различаться – веб-поиск вам в помощь.

Создание виртуального устройства Android

SDK поставляется с эмулятором, запускающим так называемые виртуальные устройства Android (AVD). Это виртуальное устройство состоит из образа определенной версии операционной системы Android, оболочки и набора атрибутов, включающих разрешение дисплея, размер карты памяти и т. д. Для создания нового AVD необходимо запустить SDK and AVD manager. Вы можете сделать это как описанным в инструкции по инсталляции SDK способом, так и напрямую в Eclipse, нажав кнопку SDK manager (Диспетчер комплекта разработки) на панели инструментов.

1. Выберите Virtual Devices (Виртуальные устройства) из списка в левой части. В результате вы увидите список доступных виртуальных устройств. Если вы ранее не пользовались SDK manager, данный список будет пуст; изменим это положение вещей.

2. Для создания нового AVD нажмите кнопку New (Новый) в правой части. Появится диалог (рис. 2.7).

Рис. 2.7. Диалог создания AVD в SDK manager

3. Каждое виртуальное устройство обладает именем (поле Name (Имя)), по которому вы впоследствии будете на него ссылаться. В Target (Цель) определяется версия Android, которую должен использовать AVD. Кроме того, вы можете определить объем карты памяти для AVD, а также разрешение экрана. Для нашего простого проекта hel1о world можно выбрать в качестве цели Android 1.5, оставив остальные параметры без изменений. В условиях реального тестирования обычно приходится создавать несколько виртуальных устройств, чтобы проверить работу приложения для различных версий ОС и размеров дисплея.

ПРИМЕЧАНИЕ

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

Запуск приложения

Теперь после настройки устройств и AVD вы наконец можете запустить ваше приложение. В Eclipse это делается просто – щелчком правой кнопкой мыши на проекте hel1оworl d в представлении Package Explorer (Диспетчер пакетов) и выбором пункта Run As Android Application (Выполнить как приложение Android) (или же нажатием кнопки Run (Выполнить) на панели инструментов). В результате среда выполнит в фоновом режиме следующие действия.

1. Скомпилирует проект в файл АРК (если с момента прошлой компиляции произошли изменения в файлах).

2. Создаст новую конфигурацию запуска для проекта Android если она еще не существует (скоро мы поговорим о конфигурации запуска).

3. Установит и запустит приложение с помощью запуска нового или использования уже запущенного эмулятора соответствующей версии Android либо его развертывания и запуска на подключенном устройстве (на котором также установлена версия ОС не ниже определенной параметром Min SDK Version (Минимальная версия SDK) при создании проекта).

Если вы только что создали AVD для Android 1.5 (как было описано выше), плагин ADT для Eclipse запустит новый экземпляр эмулятора, развернет в нем АРК проекта hello world и запустит приложение. На выходе вы увидите нечто, похожее на рис. 2.8.

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

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

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


Рис. 2.8. Потрясающее приложение hello world в действии.

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

На момент написания и эмулятор поддерживает только OpenGL ES 1.0 с несколькими расширениями. Для наших целей этого достаточно (за исключением того, что реализация графической библиотеки на эмуляторе страдает погрешностями и иногда вы можете получать не те результаты, что на реальном устройстве). Пока просто запомните, что не стоит тестировать приложения, использующие OpenGL ES, на эмуляторе.

Попробуйте различные действия с эмулятором, чтобы привыкнуть к нему.

ПРИМЕЧАНИЕ

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

Иногда при запуске приложения Android автоматический выбор эмулятора/ устройства, выполняемый плагином ADT, становится помехой. Например, мы подключили несколько аппаратов или эмуляторов и хотим протестировать проект на каком-то одном из них. Чтобы этого добиться, можно отключить автоматический выбор эмулятора/устройства в конфигурации запуска проекта Android. Кстати, что такое конфигурация запуска?

Конфигурация запуска предлагает способ сообщить среде Eclipse, каким именно образом она должна запускать ваше приложение, получив соответствующую команду. Обычно это выражается в возможности определить аргументы командной строки, передаваемые программе, аргументы виртуальной машины (в случае с настольными приложениями на Java SE) и т. д. Eclipse и сторонние плагины предлагают разные конфигурации запуска для определенных типов проекта. ADT не исключение – он тоже добавляет свою конфигурацию запуска в набор. При первом запуске нашего приложения Eclipse и ADT создали новую конфигурацию Android Application Run с параметрами по умолчанию.

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

1. Щелкните правой кнопкой мыши на проекте в представлении Package Explorer (Диспетчер пакетов) и выберите Run As – Run Configurations (Выполнить как – Выполнить конфигурацию).

2. Выберите проект hello world из списка слева.

3. В правой части окна вы можете изменить название конфигурации запуска, а также скорректировать другие настройки на вкладках Android, Target (Цель) и Commons tabs (Общие вкладки).

4. Для переключения развертывания из автоматического в ручной режим перейдите на вкладу Target (Цель) и выберите Manual (Вручную).

Теперь при запуске приложения вам будет предложено выбрать подходящий эмулятор или устройство для развертывания. Этот диалог показан на рис. 2.9. Для наглядности я добавил несколько виртуальных устройств с разными версиями целевой ОС, а также подключил два реальных устройства.


Рис. 2.9. Выбор эмулятора/устройства для запуска приложения

Диалог показывает все запущенные эмуляторы и подключенные в данный момент устройства, также остальные AVD, не запущенные в данный момент.

Отладка приложения

Иногда приложение ведет себя неожиданно или перестает работать. Чтобы определить причину неприятностей, необходима возможность отладки программы. Eclipse и ADT предлагают невероятно мощные возможности для приложений Android. Мы можем устанавливать в коде точки прерывания, получать значения переменных, текущее состояние стека и многое другое.

Перед тем как начать использовать отладку, необходимо подкорректировать файл AndroidManifest.xml. Этот момент – своего рода проблема курицы и яйца, поскольку ранее мы не изучали файлы манифестов. На данном этапе нам достаточно знать, что файл манифеста определяет некоторые атрибуты нашего приложения. Один из них – возможность отладки приложения. Данный параметр задан в форме XML-атрибута тега . Для включения возможности отладки мы просто добавляем следующий атрибут тегу в файле манифеста: androi d:debuggable=true

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

Теперь, включив для приложения возможность отладки, вы можете реализовать ее на эмуляторе или устройстве. Обычно это выражается в установке точек прерывания для анализа состояния программы на определенных этапах. Чтобы установить точку прерывания, откройте файл программного кода в Eclipse и сделайте двойной щелчок в серой зоне перед той строкой кода, которая вам нужна. Для демонстрации этой возможности сделаем это в строке 23 класса Не1oWorl dActi vi ty. Это заставит отладчик останавливать ход выполнения программы при каждом нажатии экранной кнопки. Точка прерывания отмечается в редакторе кода маленьким кружком перед строкой, на которой вы ее установили (рис. 2.10). Чтобы убрать точку прерывания, снова сделайте двойной щелчок на ней в редакторе кода.

Рис. 2.10. Установка точки прерывания

Запуск отладки очень похож на процесс запуска приложения, описанный выше. Щелкните правой кнопкой мыши на проекте в представлении Package Explorer (Диспетчер пакетов) и выберите Debug As – Android Application (Отладка – Приложение Android). Таким образом вы создадите новую конфигурацию отладки для вашего проекта (точно так же, как вы делали при простом запуске программы). Вы можете изменить настройки по умолчанию для данной конфигурации, выбрав Debug As – Debug Configurations (Отладка – Конфигурация отладки) в контекстном меню.

ПРИМЕЧАНИЕ

Вместо применения контекстного меню проекта в представлении Package Explorer (Диспетчер пакетов) вы можете использовать меню Run (Выполнить) для запуска и отладки приложения, а также получать доступ к настройкам.

Если вы стартуете сессию отладки впервые, Eclipse спросит вас, не хотите ли вы переключиться в перспективу Debug (Отладка), на что вы можете соглашаться без колебаний. Рассмотрим эту перспективу. На рис. 2.11 показан ее внешний вид после запуска процесса отладки нашего приложения hel1о world.


Рис. 2.11. Перспектива Debug (Отладка)

Если вы помните наш краткий обзор Eclipse, то знаете, что в ней существуют несколько перспектив, состоящих из набора представлений для определенных задач. Перспектива Debug (Отладка) по виду сильно отличается от перспективы Run (Выполнить).

Первое из новых представлений, на которое следует обратить внимание, – Debug (Отладка) в левом верхнем углу. В нем показаны все запущенные в данный момент приложения и стеки всех их потоков, если они запущены в режиме отладки.

Ниже представления Debug (Отладка) находится представление для редактирования кода, с которым мы уже знакомились при изучении перспективы Java.

Представление Console (Консоль) выводит сообщения от плагина ADT, информируя нас о том, что происходит.

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

Представление Outline (Контур) не очень полезно в данной перспективе. Вы, скорее всего, будете изучать переменные и точки прерывания, и текущее положение в программе вам будет ни к чему. Я обычно закрываю это представление из перспективы Debug (Отладка), чтобы оставить больше места для других.

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

Наконец, представление Breakpoints (Точки прерывания) демонстрирует список установленных нами точек прерывания.

Если вы любознательны, то, вероятно, уже нажали кнопку в работающем приложении, чтобы увидеть работу отладчика. Он остановится на строке 23 в соответствии с установленной точкой прерывания. Вы также можете заметить, что в представлении Variables (Переменные) появились переменные текущего блока программы, состоящего из самой активности (this) и параметра метода (v). Раскрывая список переменных, вы можете исследовать их более детально.

Представление Debug (Отладка) показывает трассировку стека, относящегося к текущему методу. Обратите внимание: у вас может быть несколько запущенных потоков, любой из которых вы можете приостанавливать в любое время в представлении Debug (Отладка). Строка, на которой установлена точка прерывания, подсвечивается, указывая позицию в коде программы.

Вы можете приказать отладчику выполнить текущее выражение (нажав F6), зайти в методы, вызываемые текущим методом (нажав F5), или продолжить выполнение программы обычным образом (нажав F8). Добиться тех же целей можно также, используя меню Run (Выполнить). Учтите, что на самом деле параметров отладки больше, чем я вам сейчас рассказал. Как и всегда, я предлагаю вам самим поэкспериментировать над тем, что вам нужно.

ПРИМЕЧАНИЕ

Любознательность – основной строительный материал для успешной разработки Android-игр. Вам придется действительно близко познакомиться со средой разработки, чтобы получить от нее наибольшую отдачу. а не может описать все подробности Eclipse, поэтому я вновь призываю вас экспериментировать.

LogCat и DDMS

Плагин ADT устанавливает много новых представлений и перспектив для использования в Eclipse. Одно из самых полезных представлений (о котором вскользь упомянуто в предыдущем разделе) называется LogCat.

LogCat – система журналирования событий в Android, позволяющая системным компонентам и приложениям выводить информацию на различных уровнях. Каждая запись в журнале состоит из даты, времени, уровня журналирования, ID процесса-источника записи, тега (определяемого приложением самостоятельно) и собственно сообщения.

Представление LogCat собирает и выводит эту информацию с подключенного эмулятора или реального устройства. На рис. 2.12 показан пример вывода в представлении LogCat.


Рис. 2.12. Представление LogCat

Обратите внимание на кнопки в верхнем правом углу LogCat.

Первые пять из них позволяют выбрать уровни журналирования, которые вы хотите увидеть.

Кнопка зеленый плюс дает возможность определить фильтр, основанный на теге, ID процесса, уровне журналирования. Он очень поможет вам, если вы захотите увидеть лог только вашего приложения (которое, вероятно, будет использовать особый тег).

Остальные кнопки позволяют редактировать и изменять фильтр, а также очищать окно вывода.

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

DDMS (Dalvik Debugging Monitor Server) предлагает более разнообразные сведения о процессах и виртуальных машинах Dalvik, запущенных на всех подключенных устройствах. Переключиться на перспективу DDMS можно в любой момент с помощью пункта меню Window – Open Perspective – Other – DDMS (Окно – Открыть перспективу – Другие – DDMS). На рис. 2.13 показано, как обычно выглядит перспектива DDMS.


Рис. 2.13. DDMS в действии

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

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

LogCat – аналогично описанному в предыдущем разделе, с одним отличием: выводит информацию от устройства, выбранного в представлении Devices (Устройства).

Emulator Control (Контроль эмулятора) – позволяет изменять поведение запущенного экземпляра эмулятора. Вы можете, например, заставить его гененерировать пробные GPS-координаты для тестирования.

Threads (Потоки) – выводит данные о потоках, используемых процессом, который выбран в представлении Devices (Устройства). Информация будет показываться, только если вы включили отслеживание потоков (это можно сделать, нажав пятую слева кнопку в представлении Devices (Устройства)).

Heap (Куча) (не показано на рис. 2.13) – снабжает информацией о статусе памяти устройства. Как и в случае с данными о потоках, необходимо явно включить отслеживание состояния памяти в представлении Devices (Устройства) нажатием второй слева кнопки.

Allocation Tracker (Отслеживание распределений) – показывает использованные недавно классы. Это очень помогает при борьбе с утечками памяти.

File Explorer (Проводник) – позволяет изменять файлы на подключенном Android-устройстве или экземпляре эмулятора. Вы можете перетаскивать файлы в это представление так же, как вы делаете это при работе с операционной системой.

DDMS на самом деле – отдельное приложение, интегрированное в Eclipse с помощью плагина ADT. Вы можете запускать его и отдельно из каталога $ANDR0ID H0M Е/ tools directory (%ANDROID HOME%/tools при использовании Windows). Оно не подключается к устройствам напрямую, применяя для этого Android Debug Bridge (ADB) – еще одну утилиту, включенную в SDK. Рассмотрим ее, чтобы дополнить наши знания о среде разработке Android.

Использование ADB

ADB позволяет управлять подключенными устройствами и экземплярами эмулятора. Она состоит из трех различных компонентов.

Клиентское приложение, запущенное на машине разработчика с помощью команды adb (эта команда будет работать, если вы правильно настроили ваши переменные окружения). Когда мы говорим об ADB, то имеем в виду как раз эту утилиту командной строки.

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

Демон ADB, также являющийся фоновым процессом и запускающийся на каждом телефоне или эмуляторе. Сервер ADB использует этот демон для подключения.

Обычно мы применяем ADB через DDMS, игнорируя существование отдельной утилиты командной строки. Но иногда бывает полезно запускать его отдельно, поэтому кратко изучим некоторые его функции.

ПРИМЕЧАНИЕ

Для получения полного справочника доступных команд обратитесь к документации по ADB на сайте Android Developers (http://developer.android.com).

Весьма полезная задача, выполняемая с помощью ADB, – получение списка всех подключенных к ADB-серверу (а значит, и к компьютеру) устройств и эмуляторов. Для этого выполните следующую команду консоли (обратите внимание: символ не является частью команды):

В результате на экран будет выведен список всех подключенных устройств и эмуляторов с соответствующими серийными номерами:

Серийный номер устройства или эмулятора используется для выполнения последующих команд. Например, следующая команда установит АРК-файл myapp. а рк с машины разработчика на устройство с серийным номером НТ019Р803783:

Аргумент -s может использоваться с любой командой ADB, выполняющей какие-либо действия с конкретным устройством.

Существуют также команды для копирования файлов между компьютером и устройством (эмулятором). Результат действия следующей команды – копирование локального файла myfi1е. txt на карту памяти устройства с серийным номером НТ019Р803783:

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

Если к ADB-серверу в данный момент подключено всего одно устройство или эмулятор, вы можете опустить серийный номер – adb определит его автоматически.

Конечно, возможности ADB не ограничиваются описанными нами функциями. Многие из них реализуются через DDMS, и в большинстве случаев мы не будем применять командную строку. Однако для небольших задач она бывает идеальным решением.

Подводя итог

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

Самое главное, что вы должны понять после изучения – как все это работает вместе. JDK и Android SDK служат основой всей разработки для Android. Они предлагают инструменты для компилирования, развертывания и запуска приложений на экземплярах эмулятора и устройствах. Для ускорения процесса разработки мы используем Eclipse в сочетании с плагином ADT, избавляющим нас от неудобной работы с JDK и SDK в командной строке. Сам Eclipse построен на нескольких корневых концепциях: рабочих пространствах, управляющих проектами; представлениях, предлагающих особую функциональность (например, редактирование программного кода или вывод LogCat); перспективах, объединяющих представления для выполнения определенных задач (например, отладки); конфигурациях запуска и отладки, позволяющих определить параметры запуска или отладки приложения.

Обязательное условие овладения всем этим богатством – практика, как бы скучно это ни звучало. В ходе изучения данной и мы реализуем проекты, которые познакомят вас со средой разработки Android. Однако не стоит на этом останавливаться – только от вас зависит, делать ли следующие шаги.

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

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

Возможность тестирования на смартфоне предоставляется ADB (Android Debug Bridge). В этой статье мы настроим его и запустим наше приложение на настоящем смартфоне.

Что такое ADB

Android Debug Bridge (ADB) является универсальным инструментом командной строки, который способствует взаимодействию между средой разработки, в нашем случае Android Studio, и AVD-эмуляторами или физическими Android-устройствами для возможности запуска и отладки приложений.

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

Настройка Android-устройства для работы с ADB

Для того, чтобы использовать ADB с устройством, подключенным по USB, необходимо разрешить USB-отладку в системных настройках телефона или планшета в разделе "Параметры разработчика" (название может отличаться). На некоторых устройствах этот раздел по умолчанию скрыт. Рассмотрим шаги в случае, когда нет нужного раздела настроек.

  1. Зайдите в настройки, раздел "Об устройстве"
  2. Найдите пункт "Номер сборки" и щёлкните по нему 7 раз. Должно появиться окно, оповещающее о том, что активирован режим разработчика.
  3. Теперь в настройках должен появиться раздел параметров разработчика.
  4. Включите в нём опцию "Отладка USB".

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

Настройка ADB на Windows

При настройке Windows, во-первых, убедитесь, что у вас установлен Google USB Driver. Зайдите в SDK Manager в раздел Extras и найдите Google USB Driver, установите его в случае необходимости.



Теперь следует обновить драйвер. Подключите девайс к компьютеру, перейдите в Панель управления -> Оборудование и звук -> Диспетчер устройств найдите своё устройство. Щёлкните правой клавишей по своему устройству, чтобы открыть контекстное меню и выберите "Обновить драйверы...". Драйвер можно найти в директории sdk в подпапке \{директория sdk}\extras\google\usb_driver.

Как проверить правильность настроек ADB?

Для проверки работоспособности ADB подключите устройство к компьютеру, запустите в папке \{директория sdk}\platform-tools командную строку и введите в ней команду:

Adb devices

Должен появится список наподобие этого:

List of devices attached 5cdb2ced device

Запуск приложения на реальном устройстве

Всё тоже самое, что и в случае запуска на эмуляторе . Откройте в Android Studio наш проект, нажмите на зелёный треугольник, но в появившемся окне выбора устройства выберите ваш девайс.



Если написано, что девайс offline, перевоткните USB и разрешите USB-отладку компьютеру:

В результате на экране телефона или планшета покажется наше приложение.

Заключение

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

Если у вас что-то активно не получается или вы запутались, отпишитесь, пожалуйста, в комментариях и я помогу вам разобраться с вашей проблемой.

28 октября 2013 г.

Переводим... Перевести Китайский (упрощенное письмо) Китайский (традиционное письмо) Английский Французский Немецкий Итальянский Португальский Русский Испанский Турецкий

Удаленная отладка приложений в ОС Android *

Android* Debug Bridge

Android Debug Bridge (ADB) - это программа командной строки, поддерживающая обмен данными между отладчиком на компьютере (обычно это GDB *, DDMS * (Dalvik * Debug Monitor Server) или ADT) и образом Android на целевом устройстве. Целевой образ может работать как на эмулируемом виртуальном устройстве, так и на физическом устройстве, обмен данными с которым осуществляется с помощью кабеля USB-OTG или адаптера USB-Ethernet. ADB является связующим элементом, дающим возможность отлаживать приложения Android.

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

Настройка Android Debug Bridge для удаленной отладки приложений на платформе с процессором Intel® AtomTM практически не отличается от отладки другой архитектуры.

Прежде всего необходимо установить на компьютере Android SDK, в том числе ADB. Инструкции см. по адресу http://developer.android.com/sdk/installing.html .

Настройка ADB*

Если целевой образ запущен на физическом устройстве, то нужно включить поддержку USB-OTG или USB-Ethernet. Для поддержки USB-Ethernet требуется изменение конфигурации ядра и повторная сборка. OEM-поставщик предоставит необходимую информацию по этой процедуре.

Стандартный способ удаленной отладки приложений предусматривает использование интерфейса USB-OTG, которым оснащено большинство устройств с Android. Установка достаточно подробно описана на веб-сайте разработчиков Android *http://developer.android.com/guide/developing/device.html .

Вот основные действия:

1. Объявите для приложения свойство debuggable в манифесте Android.

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

В файле AndroidManifest.xml добавьте android:debuggable="true" в элемент .

Примечание: Если вручную включить отладку в файле манифеста, не забудьте отключить ее перед сборкой приложения для выпуска (опубликованное приложение, как правило, не должно иметь возможность отладки).

2. Включите на устройстве отладку через USB.

На устройстве откройте Settings > Applications > Development и установите флаг USB debugging (в версии Android 4.0 он находится в меню Settings > Developer options ).

3. Настройте систему для обнаружения устройства.

o В Windows нужно установить драйвер USB для ADB. Руководство по установке и ссылки на драйверы OEM-производителей см. в документе OEM USB Drivers .

o Для Mac OS * X устанавливать дополнительные драйверы не нужно. Пропустите этот шаг.

o При использовании Ubuntu * Linux нужно добавить файл правил udev , содержащий конфигурацию USB для каждого типа устройств, которые следует использовать при разработке. В файле правил каждый изготовитель устройств обозначается уникальным идентификатором с помощью свойства ATTR{idVendor} . Список идентификаторов изготовителей см. в разделе Список идентификаторов изготовителей USB ниже. Настройка обнаружения устройств в Ubuntu Linux:

Войдите в систему с правами root и создайте файл: /etc/udev/rules.d/51-android.rules .

Добавьте в файл каждого изготовителя, используя следующий формат:
SUBSYSTEM=="usb", ATTR{idVendor}=="", MODE="0666", GROUP="plugdev"

Примечание: Синтаксис правил может немного отличаться в зависимости от используемой среды. При необходимости ознакомьтесь с документацией udev к системе. Описание синтаксиса см. в этом руководстве по написанию правил udev .

Теперь выполните команду:
chmod a+r /etc/udev/rules.d/51-android.rules

При подключении через USB можно узнать, подключено ли устройство, выполнив команду ADB adb devices из папки platform-tools/ . Если устройство подключено, то на экране будет показано имя устройства со словом device.

При загруженной ОС Android подключите кабель USB-OTG к порту (мини-USB типа b) на устройстве, а другой разъем кабеля - к порту (USB типа A) на компьютере.

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

* daemon not running. starting it now *

* daemon started successfully *

List of devices attached

0123456789ABCDEF device

Примечание: Чтобы узнать, какое имя устройства назначено этому подключению на компьютере с Linux, можно выполнить dmesg для поиска адреса usb-storage: device found at

ADB в Windows *

Загрузите и установите Eclipse Classic по адресу http://www.eclipse.org/downloads/

Загрузите пакет Android * SDK для Windows * по адресу http://developer.android.com/sdk/index.html . (android-sdk_r18-windows.zip, or installer_r18-windows.exe).

После установки Android SDK файл adb.exe будет находиться в папке \android-sdk\platform-tools

Передача данных между сервером и клиентом в ADB

До этого мы обсуждали установку ADB на компьютере разработчика. На самом деле этот клиент - серверная программа, содержащая три компонента:

Клиент, запускаемый на компьютере разработчика. Можно вызвать клиент из оболочки с помощью команды ADB. Другие средства Android, такие как подключаемый модуль ADT и DDMS, также создают клиенты ADB.

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

Управляющей программа, запускаемая на каждом экземпляре эмулятора или на каждом устройстве в виде фонового процесса.

При запуске клиента ADB клиент сначала проверяет, запущен ли уже процесс сервера ADB. Если нет, то клиент запускает процесс сервера. Сервер после запуска подключается к локальному TCP-порту 5037 и прослушивает команды, отправленные клиентами ADB. Все клиенты ADB используют порт 5037 для обмена данными с сервером ADB.

TЗатем сервер устанавливает подключения ко всем запущенным эмуляторам и устройствам. Для обнаружения эмуляторов и устройств сервер проверяет все порты с нечетными номерами в диапазоне от 5555 до 5585 (этот диапазон используется эмуляторами и устройствами). При обнаружении демона ADB устанавливается подключение к этому порту. Обратите внимание, что каждый эмулятор или устройство получает пару портов с последовательными номерами: порт с четным номером для подключения консоли и порт с нечетным номером для подключения ADB. Например:

Emulator 1, console: 5554

Emulator 1, adb: 5555

Emulator 2, console: 5556

Emulator 2, adb: 5557 ...

Как показано выше, к ADB на порте 5555 подключен тот экземпляр эмулятора, консоль которого прослушивает порт 5554.

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

Запуск ADB

Введите "adb shell". Символ # указывает, что соединение успешно установлено.

Основные команды ADB для устройств

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

adb push - копирование файла или папки на устройство

adb pull [] - копирование файла или папки с устройства

adb sync [ ] - копировать с компьютера на устройство только при наличии изменений

(-l отобразить список, но не копировать)

(см. "adb help all")

adb shell - интерактивный запуск удаленной оболочки

adb shell - выполнить удаленную команду оболочки<

adb emu - выполнить команду консоли эмулятора<

adb logcat [ ] - просмотр журнала устройства

adb forward - перенаправлять подключения сокета. Параметры перенаправления:< tcp:

localabstract:

localreserved:

localfilesystem:

dev:

jdwp: (только удаленный)

adb jdwp - показать список всех PID процессов с транспортом JDWP

adb install [-l] [-r] [-s] - передать файл пакета на устройство и установить его

("-l" блокировка пересылки приложения)

("-r" переустановить приложение, сохранив его данные its data)

("-s" установить на карту памяти SD, а не во внутреннюю флеш-память)

adb uninstall [-k] Удалить пакет приложения с устройства

Дополнительные сведения об установке и использовании ADB см. по адресу http://developer.android.com/guide/developing/tools/adb.html

Отладка нативного кода C/C++ с помощью отладчика

Если отладка выполняется с помощью GDB, то задачи по обработке процесса передачи данных такой отладки выполняет gdbserver на устройстве, но можно использовать и драйвер USB-Ethernet с ADB для обработки транспортного уровня передачи данных, по которому gdbserver обменивается данными по протоколу TCP/IP с GDB на компьютере разработчика.

Существует приложение gdbclient, настраивающее среду обмена данными отладки и запускающее gdbserver на отлаживаемом устройстве.

Использование: gdbclient EXECUTABLE:PORT

EXECUTABLE имя исполняемого файла (по умолчанию: app_process)

PORT порт подключения (по умолчанию:1234)

PROG_PATH полный путь к исполняемому файлу в целевой системе (например: /system/bin/mediaserver)

Если параметр PROG_PATH задан, gdclient пытается запустить gdbserver и присоединить его к запущенному PROG_PATH.

Для запуска gdbserver явным образом можно использовать следующую команду

# gdbserver:1234 --attach 269

Attached; pid = 269

Listening on port 1234

Приведенные ниже пошаговые инструкции по запуску сеанса отладки показывают, что ADB по-прежнему используется для передачи данных отладки, даже если отладка выполняется с помощью GDB, а не ADT или DDMS. Предположим, что используется порт 1234.

Запустите процесс:

gdbserver:1234 /system/bin/executable

или подключитесь к существующему процессу:

gdbserver:1234 --attach pid

Перенаправьте локальный порт 1234 рабочей станции на устройство с помощью adb:

adb forward tcp:1234 tcp:1234

Запустите особую версию gdb, находящуюся в области prebuilt структуры исходного кода:

prebuilt/Linux/toolchain-eabi-4.x.x/bin/i686-android-linux-gdb (for Linux)

prebuilt/darwin-x86/toolchain-eabi-4.x.x/bin/i686-android-linux-gdb (for Darwin)

Если особую версию GDB не удается найти, выполните команду find prebuilt –name i686-android-linux-gdbin в структуре исходного кода, чтобы найти и запустить последнюю версию.

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

В GDB укажите расположение общих библиотек для загрузки:

set solib-absolute-prefix /absolute-source-path/out/target/product/product-name/symbols

set solib-search-path /absolute-source-path/out/target/product/product-name/symbols/system/lib

absolute-это путь к дереву исходного кода.

Следите за правильностью указываемых папок: GDB может не выдать сообщение в случае ошибки.

Подключитесь к устройству с помощью команды GDB:

(gdb) target remote:1234

Параметр:1234 указывает на подключение к порту 1234 локального компьютера, соединенному с устройством с помощью ADB.

Теперь можно начать отладку встроенного кода C/C++ на платформе Android * с помощью GDB привычным образом.

Дополнительные сведения см. в документации к .

Использование подключаемого модуля ADT * для Eclipse * для отладки приложений Android *

Для устройств на базе архитектуры Intel® процесс установки не имеет существенных отличий от описанного по адресу http://developer.android.com/sdk/eclipse-adt.html#installing .

Подключаемый модуль средств отладки Android (ADT *) обеспечивает все возможности интегрированной отладки приложений в среде Eclipse * для эмуляторов и устройств с архитектурой Intel. Поддерживается два представления отладки с различными наборами функций.

Можно переключаться между ними по мере необходимости; каждое из них обладает определенными преимуществами.

Представление Debug в Eclipse *

Представление отладки в Eclipse предоставляет доступ к следующим вкладкам:

Debug - отображение уже отлаженных и отлаживаемых в настоящий момент приложений Android и запущенных в настоящий момент потоков

Variables - когда заданы точки останова, отображение значений переменных при выполнении кода

Breakpoints - список точек останова в коде приложения

LogCat - просмотр сообщений в журнале системы в реальном времени. Вкладка LogCat также доступна в представлении DDMS.

Чтобы открыть представление Debug Perspective, щелкните Window > Open Perspective > Debug. Дополнительные сведения см. в документации к отладчику Eclipse.

Представление DDMS

Представление DDMS в Eclipse обеспечивает доступ к всем функциям DDMS из среды разработки Eclipse. Доступны следующие разделы DDMS:

Devices - список физических и виртуальных устройств, подключенных к ADB.

Emulator Control - выполнение различных действий с устройством.

LogCat - просмотр сообщений в журнале системы в реальном времени.

Threads - отображение запущенных в настоящее время потоков в виртуальной машине.

Heap - использование кучи виртуальной машиной.

Allocation Tracker - просмотр выделения памяти объектам.

File Explorer - работа с файловой системой устройства.

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

При отладке приложения Android * для архитектуры Intel® разница заключается в настройке отладки целевого устройства.

Чтобы выбрать устройство с помощью диспетчера Android * Virtual Device Manager, входящего в состав Android * SDK, откройте меню Window>AVD Manager в Eclipse *. Необходимо выбрать Intel Atom в качестве целевого EABI для образа ОС и эмуляции устройства.

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

В остальном отладка приложения Android * для архитектуры Intel® практически не отличается от отладки приложений Android * для архитектуры ARM *.

Действуют все правила и инструкции, приведенные по адресу

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

Для чего нужна Отладка по USB?

Отладка по USB служит для того чтобы использовать службу отладки приложений и устройств на ОС Android (проверить как работает приложение и система в целом и какие возникали сбои) которая называется ADB .

Как включить отладку по USB?

Абсолютно во всех Android девайсах, независимо будь то смартфон или планшет, отладка по USB находится в Меню -> Настройки

Возможные варианты местонахождения опции

Несмотря что, отладка по USB находится в настройках, но варианты расположения в меню может быть различным и иметь несколько вариантов как его найти! Рассмотрим 6 возможных вариантов.

Вариант №1 :

Меню -> Настройки -> Разработка ->

Вариант №2 :

Меню -> Настройки -> Для Разработчиков -> Отладка по USB - поставить галочку


Вариант №3 :

Меню -> Настройки ->Приложения -> Разработка -> Отладка по USB (Android 2.2 - 3.0)


Вариант №4 :

Меню -> Настройки -> Еще -> Параметры Разработчика -> Отладка по USB - поставить галочку


Вариант №5 для Android 4.2 и выше :

Меню -> Настройки -> Система -> О смартфоне/О планшете -> Номер сборки и нажмите по нему примерно 7 - 10 раз, после чего вернитесь в Настройки -> Для Разработчиков -> Отладка по USB - поставить галочку

Вариант №6 для Android 4.2 и выше :

Меню -> Настройки -> О смартфоне/О планшете -> Номер сборки и нажмите по нему примерно 7 - 10 раз, после чего вернитесь в Настройки -> Для Разработчиков -> Отладка по USB - поставить галочку

Вариант №7 для Android 4.2 и выше (Xiaomi/Samsung/LG) :

Меню -> Настройки -> Общие -> О смартфоне/О планшете -> Номер сборки и нажмите по нему примерно 7 - 10 раз, после чего вернитесь в Настройки -> Для Разработчиков -> Отладка по USB - поставить галочку


Вариант №8 для Xiaomi (новые версии MIUI):

Меню -> Настройки -> О телефоне-> Версия MIUI и нажмите по нему примерно 7 - 10 раз, после чего вернитесь в Настройки -> Дополнительно -> Для Разработчиков -> Отладка по USB - поставить галочку

После включения Отладки по USB! (4.2 и выше)

При первом подключение к компьютеру и ввода какой нибудь команды или получения Root прав у вас появиться запрос на доверие компьютеру к которому сейчас Android подключен! Данный запрос будет появляться на любом новом компьютере или ноутбуке! Поставьте галочку и нажмите кнопку OK. Отладка по USB включена.

Отладка по USB включена и устройство Android не определяется?

Первое что вам нужно будет поверить это наличие установленных драйверов на компьютер или же переустановить/обновить их. Подробно о установке драйверов, а также ссылки на свежие драйвера можно найти в статье - как установить USB драйвер . Еще одной проблемой, что Android не определяется это, то что он находится в заблокированном состояние - разблокируйте свой смартфон или планшет! Не используйте порт USB 3.0 , только USB 2.0 .

Если отладку по USB так и не удаться установить с компьютером, то стоит попробовать изменить способ подключения к ПК. В момент когда вы уже подключили смартфон или планшет к ПК, потяните верхний информационный бар «шторку» вниз ->выбрать подключение USB и активировать режим PTP .


Если хотите подключиться по WI-FI

Для того чтобы подключить Android по WI-FI сети необходимо получить ip адрес и порт устройства (нужны root права), в этом вам поможет программа ADB Wireless , после этого ввести команду в командную строку:

adb connect ip:port

Например:

adb connect 192.168.0.14:5555

После того как включили данную опцию на Android вы можете подключить смартфон к ПК и вводить необходимые команды adb или получать Root права !



Режим отладки по USB - особая функция Android-устройств, необходимая в основном для разработчиков. С её помощью можно проверить работоспособность приложения и протестировать его в разных ситуациях. Но режим отладки полезен и для пользователей. Рассмотрим, для чего он может пригодиться, как включить и выключить его на Андроид-устройствах.

Зачем нужен режим отладки по USB на ОС Android?

Режим отладки позволяет пользователям:

  • Протестировать разрабатываемое приложение.
  • Получить root-доступ к смартфону или планшету.
  • Скопировать и переместить файлы с Android-устройства на компьютер.
  • Установить скачанное на компьютер стороннее (не из Play Market) приложение для Android.
  • Установить разные версии прошивок для устройства.
  • Восстановить неработающее устройство.
  • Создать резервную копию файлов и приложений.

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

Как включить режим отладки по USB на своём устройстве

Опция «Включить отладку по USB» находится в «Меню для разработчиков» (либо «Параметры разработчика»), которое бывает скрыто от пользователей в версиях Android выше 4.2. Но, опять же, некоторые производители решают открыть доступ к меню, другие - скрыть. Например, на смартфонах компании Meizu меню разработчиков открыто всегда и находится в разделе «Специальные возможности», а на устройствах Samsung доступ к меню закрыт. Всё зависит не только от компании, но и от конкретной модели устройства.

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

Теперь зайдите в это меню. В зависимости от модели, вход в меню может располагаться в разных разделах меню настроек. Либо в настройках устройства может сразу же находиться раздел «Для разработчиков» («Параметры разработчика», «Меню разработчика»), либо он может быть подразделом пунктов «Специальные возможности», «Другое», «Ещё», «Дополнительные настройки».

Когда войдёте в меню для разработчиков, отмечайте галочкой пункт «Включить отладку по USB» (либо «Режим отладки по USB»). Обычно этот пункт стоит первым.

Где находится режим в разных версиях Андроид (фотогалерея)

Меню разработчика находится в разделе «Ещё» В Android 2.2–3.0 пункт «Отладка по USB» находится в разделе «Приложения» В Android 4.2 и выше меню для разработчиков вынесено в раздел «Настройки»

Видеоинструкция: как включить режим отладки по USB на Android

Как включить режим отладки по USB, если это невозможно сделать с устройства

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

Главное условие: на вашем устройстве уже должно быть установлено стороннее Recovery - CWM или TWRP. Это необходимо, чтобы была возможность получить полный root-доступ к операционной системе.



После перезагрузки с вашим смартфоном или планшетом можно будет работать с помощью QtADB, MyPhoneExplorer, ADB и других подобных программ. То есть, с помощью режима отладки по USB.

Что делать, если ничего не работает

Для работы с отладкой по USB используются специальные ADB-драйверы (Android Debug Bridge, дословно «мост для отладки Android»), которые можно скачать с сайта Google, официальная страница находится по ссылке: https://developer.android.com/studio/index.html. Давайте разберёмся, что делать, если ADB не определяет устройство, почему невозможно использовать режим отладки по USB.

Убедитесь, что мобильное устройство обнаружено компьютером . Для этого:

  1. Проверьте USB-кабель на повреждения. Особенное внимание обратите на сильные изгибы, участки кабеля около штекеров, где часто ломаются соединительные провода. Попробуйте использовать для подключения другой кабель. Если проблема действительно в физических дефектах - замените кабель.
  2. Попробуйте воткнуть штекер в другой USB-порт на компьютере. Желательно использовать порты на задней стороне системного блока, так как задние порты расположены непосредственно на материнской плате. Передние USB-порты не всегда подключены правильно, из-за чего и возникает проблема.
  3. Попробуйте подключить Android-устройство к другому компьютеру. Иногда бывает, что какой-то определённый ПК неправильно распознаёт смартфон или планшет и не считывает с него нужные данные. Если на другом компьютере устройство распознаётся правильно, несите свой ПК в ремонт и объясните проблему, так как причины неполадок могут быть разные.
  4. Попробуйте отключить все USB-устройства от компьютера. Некоторые из них могут мешать смартфону или планшету нормально подключиться к ПК.

Убедитесь, что используете официальную прошивку производителя устройства . Если вы установили на смартфон или планшет стороннюю прошивку (такую, как CyanogenMod или подобные), то отладка по USB может работать некорректно.

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

Разработчикам программного обеспечения лучше использовать не отдельные ADB-драйвера, а систему Android Studio, которую также можно скачать с официального сайта: developer.android.com. В Android Studio настройка драйверов происходит автоматически, кроме того, там присутствует эмулятор Android для компьютера, так что отладка по USB может и не понадобиться.

Как выключить отладку по USB

Чтобы отключить режим отладки по USB на Android-устройствах, откройте «Меню для разработчиков» и снимите отметку с пункта «Использовать отладку по USB».

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