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

01.05.2019 Программы и сервисы

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

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

Стандартный вариант

В прошивках, где производитель не постарался усложнить доступ к возможностям рутирования и перепрошивки, а также на устройствах без возможности тонкой диагностики, отладка Андроид по USB включается . В пункте «Настройки» главного меню есть раздел «Разработка», в котором нужно поставить галочку напротив пункта «Отладка по USB».

Другая версия прошивки

Аналогично выглядит расположение и для прошивок с «близкой» версией. Например, это может быть тот же пункт «Настройка», однако дальше подменю будет называться «Для разработчиков», где тоже нужно поставить галочку напротив опции отладки.

Версии операционной системы 2.2 — 3.0

Здесь более развёрнутое меню, пункт разработки находится по адресу «Настройки» - «Приложения». Далее режим отладки по USB Android включается аналогично описанным выше .

Другие прошивки

Может быть вариант, когда подменю «Приложения» в меню «Настройки» называется «Ещё». В остальном - аналогично пункту 3.

Операционная система версий 4.2 и более поздних

Здесь опция Android отладки по USB сознательно скрыта. Чтобы галочка активации стала доступна, нужно зайти , выбрать пункт «О планшете» и примерно 10 раз нажать на «Номер сборки». После этого в меню «Настройки» появится подпункт «Для разработчиков», где станет доступна опция «Отладка по USB».


Другое расположение

Пункт «О планшете» может быть расположен прямо в меню «Настройки». Однако есть версии сборок операционной системы, когда нужно дополнительно зайти в подменю «Система» либо «Общие». В остальном отладка , как в пункте 5.

Подключение к ПК

Прежде чем будет использоваться приложение для отладки по USB или утилита для получения root-доступа, нужно правильно подключить устройство к компьютеру. Первое, что может создать препятствие на этом пути, - отсутствие драйверов. Однако эта проблема решаема. Для брендовых устройств с нестандартными протоколами обмена все необходимое можно найти на официальных сайтах. Кроме того, программы телефонных книг, картинок, музыки от производителей устройства обычно комплектуются наборами драйверов. Достаточно установить соответствующую утилиту.

Как хороший вариант, можно порекомендовать программу MOBILedit Enterprise, которая предлагает огромный выбор драйверов для всех типов оборудования. или смартфонов от китайских производителей на основе процессоров МТК. Если же всё равно не удаётся установить драйвера, стоит поискать их на специализированных сайтах по модели устройства и версии прошивки операционной системы.

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

Зачем нужна отладка?

Кратко перечислим некоторые задачи, которые можно решить с помощью отладки по USB:

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

Видео о том, как включить отладку по USB на Android:

На последнем пункте стоит остановиться подробнее, поскольку рутирование является причиной включения отладки по USB примерно в 99% случаев.

Зачем «рутировать» планшет или смартфон?

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


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

Операционная система построена таким образом, что имеет событие AfterStart. В нём может быть целый список действий, вплоть до запуска других процессов. Часто это показ рекламы, сбор статистики и другие откровенно «ненужные» вещи. С помощью рут-прав и небольших приложений можно гибко управлять работой как Андроид в целом, так и отдельных программ.

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

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

Требования к тестовой среде:

  • Операционная система: Windows / Mac OS X / Linux
  • Java (рекомендуется версия 1.7)
  • IDE (Eclipse, IntelliJ IDEA, Android Studio)
  • Android SDK (https://developer.android.com/sdk/index.html?hl=i)
  • APKTool (https://code.google.com/p/android-apktool/)/APK Studio (http://apkstudio.codeplex.com)
  • Устройство / эмулятор на базе Android

В статье будет использоваться следующая конфигурация: Windows 8, Android Studio и IntelliJ IDEA. Устройство: Nexus 4 с Android версии 4.4.4. Рекомендую все утилиты добавить в переменную окружения PATH, чтобы облегчить и ускорить доступ к этим инструментам.

Android application package (APK), используемый в статье, можно скачать отсюда: com.netspi.egruber.test.apk .

Настройка устройства

Инструкция ниже поможет вам подготовить устройство для экспериментов.

Активация раздела Developer Options

Для начала на Android-устройстве должна быть разрешена отладка через USB (опция USB debugging), что позволит «общаться» с девайсом при помощи инструментов из набора Android SDK. Однако перед этим необходимо активировать раздел Developer options. На устройстве зайдите в раздел Settings > About Phone и кликните несколько раз на пункт Build Number, после чего должно появиться сообщение о том, что раздел Developer options активирован.

Рисунок 1: Для того чтобы активировать раздел Developer options, необходимо несколько раз кликнуть на Build number

Разрешение отладки через USB

Чтобы разрешить отладку через USB-порт, зайдите в раздел Settings > Developer options и отметьте флажок напротив USB debugging.

Рисунок 2: Включение опции USB debugging

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

После подключение устройства к компьютеру через USB-порт, должно появиться сообщение «USB debugging connected on the device». Также следует проверить, можно ли подключиться к устройству при помощи приложения Android Debug Bridge (ADB), входящего в состав Android SDK (пакет Android SDK Platform-tools). В командной строке введите следующую команду:

Устройство должно отобразиться в списке.

Рисунок 3: Список подключенных устройств

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

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

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

Первый способ - запустить Android Device Monitor , входящий в состав Android SDK (в папке tools). В Windows файл называется monitor.bat. При открытии Android Device Monitor устройство отобразится в разделе Devices.

Рисунок 4: Приложение Android Device Monitor

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

Второй способ проверить приложение на возможность отладки – исследовать файл AndroidManifest.xml из пакета приложения (APK, Android application package). APK представляет собой zip-архив, содержащий всю информацию, необходимую для запуска приложения на Android-устройстве.

Всякий раз, когда приложения загружается из Google Play Store, также загружается и пакет приложения. Все загруженные APK-файлы обычно хранятся на устройстве в папке /data/app. Если у вас нет прав суперпользователя, вы не сможете получить список файлов из директории /data/app. Хотя, если вы знаете имя APK-файла, можете скопировать его при помощи утилиты adb . Чтобы узнать имя APK-файла, введите следующую команду:

Появится командная строка устройства. Затем введите следующую команду:

pm list packages -f

Отобразится список всех пакетов на устройстве.

Рисунок 5: Перечень пакетов на устройстве

Глядя на список, находим тестовое приложение.

Рисунок 6: Пакет созданного тестового приложения (выделено белым)

Теперь необходимо скопировать файл пакета. Открываем шелл и вводим следующую команду:

adb pull /data/app/[.apk file]

Рисунок 7: Копируем APK-файл с устройства в систему

Теперь нужно открыть файл пакета и исследовать содержимое AndroidManifest.xml. К сожалению, мы не можем просто так распаковать архив, поскольку APK-файл закодирован в бинарном формате. Для раскодировки чаще всего используется утилита apktool , хотя я использую APK Studio , поскольку у этого приложения дружелюбный графический интерфейс. Далее в статье будет рассказываться об APK Studio.

В APK Studio кликните на маленькую зеленую иконку, задайте имя проекту и укажите путь к APK файлу. Затем укажите пусть для сохранения проекта.

Рисунок 8: Создание нового проекта в APK Studio

После открытия APK выберите файл AndroidManifest.xml и посмотрите параметры тега application. Если флаг android:debuggable отсутствует (или присутствует, но установлено значение false), значит, приложение отлаживать нельзя.

Рисунок 9: Содержимое файла AndroidManifest.xml

Модификация файла AndroidManifest.xml

При помощи утилиты apktool или APK Studio мы можем модифицировать файлы и упаковывать содержимое обратно в пакет. Сейчас мы изменим файл AndroidManifest.xml так, чтобы приложение можно было отлаживать. Добавляем внутрь тега application строчку android:debuggable="true".

Рисунок 10: Изменяем содержимое тега application

После добавления флага кликаем на иконку «молоток» и заново собираем пакет. Пересобранный пакет будет находиться в директории build/apk.

Рисунок 11: Повторная сборка пакета завершилась успешно

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

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

adb pm uninstall

Затем устанавливаем новый пакет:

adb install [.apk file]

Также можно удалить и установить пакет одной командой:

adb install -r [.apk file]

Рисунок 12: Установка пересобранного пакета

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

Рисунок 13: Теперь пересобранное приложение можно отлаживать

Настройка среды разработки (IDE)

Теперь к пересобранному приложению можно подцепить отладчик, но вначале нужно создать проект в среде разработки (в статье используется IntelliJ IDEA). Создаем новый проект. В поле Application name указываем произвольное имя. В поле Package name указываем имя, в точности совпадающее с иерархией папок пересобранного пакета.

Рисунок 14: Создание нового проекта в IntelliJ IDEA

Обычно имя APK-файла совпадает со структурой папок, хотя, если вы не уверены, в APK Studio проверьте иерархию директорий до папки, где находятся файлы приложений. В моем случае имя и структура папок полностью совпадают (com.netspi.egruber.test).

Рисунок 15: Иерархия директорий тестового приложения

Снимите флажок «Create Hello World Activity» и завершите создание проекта (все остальные параметры остаются по умолчанию). Новый проект должен выглядеть примерно так:

Рисунок 16: Иерархия папок и файлов нового проекта

После создания проекта нужно добавить исходный код из APK-файла для того, чтобы отладчик «знал» имена символов, методов, переменных и т. д. Хорошая новость в том, что Android-приложения можно декомпилировать практически без потери качества (исходный код будет совпадать с оригиналом). После декомпиляции исходный текст импортируется в среду разработки (IDE).

Получение исходных текстов из пакета приложения

Для начала необходимо преобразовать APK в jar-файл. Затем мы при помощи java-декомпилятора получим исходный текст приложения. Преобразование в jar будем делать при помощи утилиты dex2jar . У dex2jar есть файл d2j-dex2jar.bat, используемый для конвертирования APK в jar. Синтаксис команды довольно прост:

d2j-dex2jar.bat [.apk file]

Рисунок 17: Преобразование APK в jar

Затем открываем или перетаскиваем полученный файл в JD-GUI (это java-декомпилятор).

Рисунок 18: Структура jar-файла

Jar-файл должен отобразиться в виде иерархической структуры, внутри которой находятся java-файлы с читабельным исходным кодом. Заходим в File > Save All Sources, чтобы упаковать все исходные тексты в zip-архив.

Рисунок 19: Сохранение исходных текстов декомпилированного файла

После сохранения исходных текстов распаковываем архив в отдельную директорию.

Рисунок 20: Распакованный архив

Теперь нужно импортировать обе директории в созданный ранее проект в IDE. В IntelliJ заходим в папку src и копируем туда содержимое распакованного архива (две директории).

Рисунок 21: Обе папки скопированы в директорию src

Возвращаясь в Intellij, видим обновленный проект.

Рисунок 22: В проекте появились исходные тексты

Если мы кликнем на какой-нибудь элемент из списка, то увидим исходный текст. Как видно на скриншоте ниже (исходный текст класса LoginActivity), исходный код обфусцирован при помощи ProGuard.

Рисунок 23: Обфусцированный исходный текст класса LoginActivity

Подключение отладчика

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

Рисунок 24: Поставлена точка останова на обфусцированный метод

Как только появилась точка останова, подключаем отладчик к процессу на устройстве, кликнув на иконку с экраном в правом верхнем углу (на вашей IDE иконка может отличаться).

Рисунок 25: Подключаем отладчик к процессу

Рисунок 26: Перечень процессов для подключения отладчика

После выбора процесса отладчик подсоединится к устройству.

Рисунок 27: Отладчик подключен к процессу, запущенному на устройстве

В текстовое поле я буду вводить число 42 (если помните, на соответствующем методе стоит точка останова).

Рисунок 28: В текстовое поле вводим число 42

После нажатия на кнопку «Enter Code» выполнение приложения прервется на точке останова, поскольку отладчик «осведомлен», какой метод вызывается на устройстве. Скомпилированное Android-приложение содержит отладочную информацию (например, имена переменных), доступную любому отладчику, совместимому с Java Debug Wire Protocol (JDWP). Если в приложении разрешена отладка, отладчик, совместимый с JDWP (в эту категорию попадает большинство отладчиков идущих в составе сред разработки для Java), сможет подсоединиться к виртуальной машине Android-приложения, а затем считывать и выполнять отладочные команды.

Рисунок 29: Сработала точка останова

На скриншоте ниже видно число, которое ранее мы ввели в текстовом поле.

Рисунок 30: Перечень переменных текущего экземпляра класса

Заключение

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

Режим отладки по 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-доступ к устройству, что значительно расширит возможности операционной системы.

После написания первой версии кода нашей программы мы, конечно, захотим запустить и протестировать его для обнаружения потенциальных проблем (или чтобы просто похвастаться). Сделать это можно двумя способами: запустить приложение на реальном устройстве, подключенном к компьютеру с помощью 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. Однако не стоит на этом останавливаться – только от вас зависит, делать ли следующие шаги.

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

На любом смартфоне или планшетном компьютере, работающем на платформе Андроид, не зависимо от его производителя и предустановленной версии ОС, присутствует возможность включения специальной функции, которая имеет название «Режим отладки». Однако процесс активации этого функционала различается. Дело в том, что все зависит от версии установленной системы.

В этой статье мы подробно рассмотрим вопрос, как включить отладку по USB на Андроид, как на ранних версиях ОС, так и на последних. Также разберем вопрос, для решения каких задач предусмотрен данный режим.

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

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

Процедура активации на разных версиях

Версия Андроид 2.0 — 3.0

Если у вас старое Андроид-устройство, на борту которого установлена система версии 2.0 и 3.0, то для активации отладки необходимо сделать несколько простых шагов:

Версия Андроид 4.0, 5.0 и 6.0

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

Как включить режим отладки USB на Андроид последних версий? Чтобы осуществить это, нужно проделать следующие шаги:

Что делать, когда устройство не определяется при включенной отладке?

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

  • Первым делом, нужно проверить установлена ли на компьютере последняя версия драйверов для определения устройства через USB. Попробуйте обновить драйвера, скачав их последнюю версию с сайта производителя устройства.
  • Проверьте, не заблокировано ли устройство. При подключении к компьютеру блокировку рекомендуется снять.
  • Проверьте порты, к которым подключается шнур. Так, для более корректной работы лучше использовать порты ЮСБ 2.0, с ними будет более хорошая совместимость.

Отладка через Wi-Fi

В ситуации, если использовать режим отладки по USB Android нет возможности, можно попробовать выполнить подключение через Wi-Fi.

Важно! Перед тем как приступать, убедитесь, что на устройстве получены права ROOT. Данная инструкция актуальна только для операционной системы Windows 7, которая на данное время самая распространенная на ПК.

  1. Сначала необходимо узнать ip-адрес, а также порт своего устройства. Для этой цели можно воспользоваться программой . Она доступна в магазине приложений Google Play.
  2. Скачайте программу и запустите ее.
  3. Внизу должна появиться информация о текущем ip-адресе.
  4. На своем ПК перейдите в раздел «Пуск» — «Все программы» — «Стандартные» . В списке приложений найдите и выберите «Командная строка».
  5. В открывшейся консоли введите следующую команду: adb connect 192.168.0.1:8555 . На этом все. Подключение Андроид завершено. Теперь все манипуляции с ADB можно выполнять через беспроводную технологию Wi-Fi.

Отключение отладки

Для деактивации отладки воспользуйтесь следующей инструкцией:

Заключение

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

Напомним, что отладка по USB – это полезный системный инструмент, который предоставляет пользователю возможность переустанавливать прошивку, скачивать и устанавливать стороннее программное обеспечение, синхронизировать свое мобильное устройство с ПК и так далее. Опытные пользователи смогут получить права «Суперпользователя» и даже в некоторых случаях восстановить работоспособность системы, если она перестала нормально работать.