- Общая информация об отладке в Android Studio
- Точки останова (Breakpoints)
- Отслеживание потребления памяти
- Android Device Monitor
- Скриншоты и видео
- ADB (Android Debug Bridge)
- Shell
- Список доступных команд (часть)
- Logcat
- Backup Manager
- Monkey Stress Tester — Обезьяна с гранатой
- Запись видео с экрана
- Соединение через Wi-Fi
- Эмулятор
- Виртуальное устройство
- Ввод с настольной клавиатуры
- Создание SD-карты на эмуляторе
- Эмулятор Android 4.0 с панелью навигации
- Скопировать базу данных на эмулятор
- localhost на эмуляторе
- Тайм-аут при загрузке приложения
- Перезагрузить эмулятор
- Failed to allocate memory: 8
- Поддержка многопользовательского режима в Android 4.2
- Google TV Emulation
- Genymotion и другие эмуляторы
Общая информация об отладке в Android Studio
Студия позволяет отлаживать приложения на эмуляторе и на реальных устройствах. Вы можете просматривать системный журнал логов, устанавливать точки останова, проверять значения переменных и вычислять выражения во время работы, делать скриншоты и видеозаписи.
Когда вы разрабатываете приложение, то студия собирает отладочную версию программы, соединяется с устройством/эмулятором, устанавливает и запускает её.
Обычно для запуска приложения вы используете значок с зелёным треугольником Run (Shift+F10) на панели инструментов. Для отладки следует нажимать соседнюю кнопку Debug (Shift+F9) с изображением жучка .
Остальные действия будут идентичными — вам надо выбрать устройство, на котором будет происходить отладка.
Android Studio откроет окно Debug. Можно открыть его вручную через кнопку 5: Debug в нижней части среды разработки. Окно показывает потоки и переменные в вкладке Debugger, статус устройства в вкладке Console и системные логи в вкладке Logcat.
Если приложение уже запущено, то необязательно его перезапускать для работы в отладочном режиме. Вы можете нажать на кнопку Attach debugger to Android proccess , которая идёт сразу после кнопку с жучком.
В вкладке Logcat вы видите системные сообщения, включая сообщения от вашей программы, если вы использовали их своём коде. Для записи логов используется класс Log. Подробнее о нём в отдельной статье.
Логи можно просматривать также через панель Android DDMS (Dalvik Debug Monitor Server) — запускается через кнопку 5: Android в нижней части студии. В Android DDMS вы можете просматривать логи только нужного процесса, если нажмёте на кнопку Only Show Logcat from Selected Process .
Точки останова (Breakpoints)
Точки останова позволяет приостановить выполнение программы на нужной строчке кода, проверить значение переменных, запустить выражение и продолжать выполнение кода строчка за строчкой. Позволяет выявить ошибки, которые не удаётся вычислить простым просмотром кода.
Откройте свой исходник, определите строку кода, в которой хотите поставить точку останова и щёлкните по ней. Строка окрасится в жёлтый цвет. Щёлкните в левой части редактора кода в серой области. В этом месте появится красный кружок (повторный щелчок уберёт его), а строка примет розовый цвет. Точку останова можно ставить не только для исполняемого оператора, но и на комментарии.
Запустите приложение в отладочном режиме. Когда выполнение программы дойдёт до установленной точки останова, то студия прекратит дальнейшее выполнение приложения, кружок станет ещё более красным и строка будет выделена. И затем вы можете попытаться выявить причину ошибки.
Для просмотра всех точек останова и их настроек щёлкните на кнопке View Breakpoints в левой части панели Debug . Появится отдельное диалоговое окно.
После того, как вы установили точки останова, щёлкните кнопку Rerun для повторного запуска программы. Когда выполнение кода дойдёт до установленной точки останова, студия выполнит паузу и подсветить строку кода. Панель Debug позволит проверить переменную и выполнить код шаг за шагом.
Для проверки переменных раскройте список в панели Variables. Если панель не видна, то щёлкните кнопку Restore Variables
Для вычисления выражения в текущей точки щёлкните кнопку Evaluate Expression
Для перехода на следующую строку кода без выполнения щёлкните кнопку Step Over .
Для перехода на первую строку кода внутри метода щёлкните кнопку Step Into .
Для перехода на следующую строку за пределами текущего метода щёлкните кнопку Step Out .
Чтобы продолжить работу приложения в нормальном режиме, нажмите кнопку Resume Program .
Отслеживание потребления памяти
Студия позволяет также отслеживать потребления памяти объектами и показывает, какие классы и потоки используют объекты.
Запустите студия в отладочном режиме, щёлкните 6: Android, чтобы открыть панель Android DDMS. Выберите вкладку Devices | logcat, выберите ваше устройство из выпадающего списка, выберите вашу программу по имени пакета из списка запущенных программ.
Щёлкните кнопку Start Allocation Tracking . Начинайте пользоваться программой.
Повторно нажмите на предыдущую кнопку Stop Allocation Tracking. Студия покажет объекты, выделенные системой для работы.
Android Device Monitor
Для анализа потребления памяти, сетевого трафика, поведения приложения при входящих звонках можно использовать графический инструмент Android Device Monitor. Щёлкните кнопку Monitor на панели инструментов. Android Device Monitor откроется в новом окне. Опытные программисты увидят знакомое окно, когда работали с Eclipse.
Скриншоты и видео
Вы можете делать скриншоты и видео работающего приложения.
Запустите приложение и откройте панель 6: Android. Щёлкните кнопку Screen Capture в левой части панели.
По такому же принципу можно сделать видеозапись через кнопку
Источник
ADB (Android Debug Bridge)
Клиент-серверное приложение, которое предоставляет доступ к работающему эмулятору или устройству. С его помощью можно копировать файлы, устанавливать скомпилированные программные пакеты и запускать консольные команды. Используя консоль, вы можете изменять настройки журнала и взаимодействовать с базами данных SQLite, которые хранятся на устройстве. В старых версиях SDK программа находилась в папке tools, теперь находится в папке platform-tools.
Состоит из трёх компонентов: фоновой службы (демона), работающей в эмуляторе, сервиса, запущенного на компьютере разработчика, и клиентской программы (наподобие DDMS), которая связывается со службой через Сервис.
Что бы увидеть весь список параметров и команд, которые можно запустить при помощи adb, введите в командной строке следующее (или в окне студии Terminal):
Если у вас есть файл приложения APK и вы хотите его установить на эмуляторе, то используйте команду:
d:\program.apk — это путь к файлу, который хотите установить в эмулятор. После этого установленное приложение появится в эмуляторе. Если приложение слишком большое (несколько мегабайт), то придётся немного подождать, пока установится. Во время установки в консоли курсор будет мигать, а потом появится надпись Success, что означает успешную установку программы.
Также можно удалить ненужную программу по имени его пакета:
Чтобы получить список запущенных эмуляторов и их серийные номера, используйте команду:
Вы увидите приблизительно такую картину:
Зная имя устройства, вы можете запустить на нужном устройстве требуемую команду:
Перезагрузить устройство. Если устройств несколько, то нужно указать нужное устройство.
Чтобы перезапустить сервер:
Сделать бэкап и восстановить из бэкапа можно так:
Для копирования файлов с устройства на компьютер и обратно используются команды pull и push.
Shell
Чтобы запустить оболочку (shell) на подключённом устройстве, выполните следующую команду:
С ним часто используют команды am и pm. Это не время, а сокращение от Application manager и Package Manager. Например, можно запустить сервис через намерение:
Для просмотра всех установленных приложений (пакетов):
Предоставить разрешение приложению/запретить.
Узнать информацию о конкретном приложении.
Получить список доступных системных свойств.
Если вы знаете свойство, то можно запросить его значение напрямую.
Получить список всех будильников.
Информация о всех видимых активностях.
Символ # обозначает приглашение оболочки (shell prompt).
Вы можете просмотреть список команд, доступных при работе в оболочке, введя следующую информацию по приглашению оболочки:
Список доступных команд (часть)
Чтобы просмотреть список каталогов и файлов, находящихся на корневом уровне (root-level), введите в командной строке оболочки следующую команду:
Для просмотра списка баз данных используйте команду:
В этом каталоге содержится список пакетов, установленных на устройстве. Для примера исследуем пакет com.android.providers.contacts:
Эта команда отобразит файл contacts.db и др., представляющие собой базу данных SQLite.
Logcat
Backup Manager
Monkey Stress Tester — Обезьяна с гранатой
Monkey ([android-sdk-path]**/platform-tools) — утилита для генерации случайных жестов на эмуляторе или устройстве, что напоминает движения глупой мартышки.
Для просмотра всех файлов базы данных *.db используйте команду:
Вы увидите, что в Android имеются следующие базы данных (зависимости от версии Android набор может варьироваться):
alarms.db
contacts.db
downloads.db
internal.db
settings.db
mmssms.db
telephony.db
Можно активировать команду sqlitе3 для одной из перечисленных баз данных, введя следующую информацию:
Для завершения работы с sqlite3 напишите:
Обратите внимание: приглашение для adb — это #, а приглашение для sqlitе3 — это sqlite>.
Запись видео с экрана
Вы можете записать видео с экрана вашего устройства (на эмуляторе не работает):
Затем можно сбросить на компьютер.
где /sdcard/my_app.mp4 – путь к файлу с видео (sdcard) и его имя (my_app.mp4).
Максимальное время записи равно трём минутам. Можно прервать запись (Ctrl+C).
Также вы можете управлять качеством записи, разрешением и другими параметрами с помощью следующих команд:
—size Задает разрешение, например: 1280×720. По умолчанию этот параметр установлен в соответствии с разрешением главного экрана устройства (если поддерживается), или 1280×720 – если нет.
—bit-rate Задает скорость потока видео (мегабиты в секунду). По умолчанию – 4 Мб/сек. Например, для записи со скоростью 6 Мб/сек, вам нужно будет ввести следующую команду:
—time-limit Задает максимальную длительность видео в секундах. По умолчанию установлено максимальное значение – 180 сек (3 минуты).
—rotate Поворот видео на 90 градусов. Экспериментальная опция.
—verbose Отображать информацию о процессе записи в окне командной строки.
В Android Studio вы можете начать запись через кнопку записи в панели Android DDMS (Alt-6).
Если вы хотите, чтобы на видео отображались «отпечатки» касаний к экрану, включите в настройках устройства в разделе для разработчиков опцию «Показывать нажатия» или «отображать касания».
Соединение через Wi-Fi
Обычно для тестирования программы на реальном устройстве использует USB-соединение. Предположим, кот уволок куда-то USB-кабель или расшатал USB-порт (ага, валите всё котов). В этом случае можно попробовать использовать Wi-Fi. Описанный ниже способ не гарантирует работоспособность на всех устройствах. Пробуйте.
Сначала соединитесь обычным способом через USB (не знаю, как вы собираетесь это сделать, если у вас утащили кабель и сломали порт). Включите Wi-Fi на компьютере и на устройстве.
Убедитесь, что устройство присоединено.
Ответ (у вас будет свой набор символов):
Меняем режим работы с USB на TCP/IP:
Теперь вам надо узнать IP-адрес вашего устройства. Пример для Nexus 7: Запускаем Настройки | О планшете | Общая информация | IP-адрес. Перепишите адрес на бумажку. Запускаем команду с этим адресом (у вас будет свой адрес).
Теперь можете отсоединить кабель. Отдайте его коту, пусть играет.
Проверяем, что устройство по прежнему на связи.
Отлично! Запускайте приложение и оно по воздуху установится на устройстве.
Учтите, что передача данных будет идти медленнее и для больших приложений будет не слишком удобно использовать данный способ. Хотя я особых тормозов не заметил для учебных примеров.
Если вам надо вернуться к старому способу, то вызываем команду:
Указанный способ очень удобен. Недаром на баше есть такие строчки:
Слава Wi-Fi! Котэ не может его перегрызть.
А вот другому повезло меньше и на баше описана его ситуация:
Звонок в техподдержку одного интернет-провайдера.
ТП(техподдержка): Добрый день! Я вас слушаю.
А (абонент): У меня тут проблема возникла.
ТП: Какая у вас проблема?
А: Я гонял кота шашкой и перерубил кабель.
Если бы абонент позаботился о настройке через Wi-Fi, то и проблемы бы не было.
Источник
Эмулятор
В апреле 2016 вышла версия Android Studio 2.0 с новым эмулятором. Постепенно все материалы будут заменяться с учётом новой версии. В новых версиях студии эмуляторы также немного менялись, поэтому в статье могут быть устаревшие сведения.
Во время выбора нового устройства в эмуляторе вам могут попасться два варианта: с Google Play или с Google APIs. Обычно рекомендуют выбирать вариант с Google Play, так как в этом случае на устройстве будет доступ к одноимённому магазину приложений и плюс доступ к Google Play services. У варианта Google APIs есть доступ к Google Play services, но нет к Google Play.
Вы можете просто перетащить apk-файл на окно эмулятора для быстрой установки. Также доступны изменение размеров окна, операции мультитача и многое другое.
Эмулятор Android — это важный инструмент для разработчика. Необходимо изучить его особенности и использовать его на начальном этапе разработки. Однако, следует помнить, что эмулятор лишь моделирует общее поведение реального устройства. Поэтому окончательное тестирование необходимо проводить на настоящем телефоне.
Вы можете пользоваться мышкой вместо лапы и настольной клавиатурой вместо экранной клавиатуры в эмуляторе.
Одно из преимуществ AVD при тестировании устройств — возможность задавать произвольные значения для разрешения и плотности пикселей экрана. Это избавляет вас от необходимости покупать все устройства на рынке. Хотя серьёзные компании так и поступают.
Виртуальное устройство
Перед разработкой приложения необходимо создать виртуальное устройство, которое включает в себя эмулятор. Само устройство создаётся в Eclipse (божечки-кошечки, это осталось с тех времён, когда вместо Android Studio был Eclipse!). Но что происходит за кулисами? В Windows 7 в папке C:\Users\user_name\.android\avd создаются отдельные папки для каждого вида устройства под Android 2.1, 2.3 и так далее. В Linux ищите каталог /home/user_name/.android/.
Это знание может помочь вам, если ваше имя пользователя в Windows используется на русском языке. В этом случае эмулятор отказывается запускаться и выдаёт ошибку. Откройте ini-файл и пропишите путь к виртуальному устройству таким образом, чтобы в пути не встречались русские буквы (соответственно, сам файл *.avd также нужно переместить в другое место).
Ввод с настольной клавиатуры
Если в приложении есть текстовое поле и нужно вводить большой текст, то удобнее это делать с помощью настольной клавиатуры, чем тыкать мышкой по клавишам на эмуляторе. Для этого сделаем вид, что у нашего виртуального устройства есть встроенная клавиатура — открываем Android Virtual Device Manager, выбираем нужное устройство и нажимаем кнопку Edit. . Далее в диалоговом окне в разделе Hardware выбираем настройку Keyboard support и присваиваем ему свойство yes. Перезапускаем устройство и теперь можно вводить текст со своей клавиатуры.
Создание SD-карты на эмуляторе
В эмуляторе по умолчанию нет SD-карты. Необходимо сделать некоторые настройки для её эмуляции. В папке ..\Android\android-sdk\tools есть утилита MkSDCard.
Создайте карточку памяти необходимого размера и укажите путь к ней. Например, для создания карточки 256 мегабайт в папке D:\AnroidTutorial\ для файла mysdcard.iso:
Кстати, не стоит гнаться за размерами карточки и тратить место на жёстком диске, так как вряд ли вы будете тестировать гигабайтные видеоролики на эмуляторе.
После создания карточки памяти, необходимо сообщить о её существовании эмулятору. Откройте Eclipse, перейдите в ваш проект. В меню Run | Run Configurations выберите пункт Android Configuration в левой части панели, потом перейдите на вкладку Target. Внизу вы увидите строчку Additional Emulator Commandline Options и текстовую строку для ввода параметров. Введите в ней строку:
Можно пойти другим путём. Откройте AVD Manager, выберите нужное устройство, которое должно иметь SD-карту, и щелкните на кнопке Edit. В диалоговом окне укажите путь к созданному образу карточки.
Чтобы копировать файлы на эмулированную карточку, можно использовать утилиту ADB с командой push (от слова пушистый кот)
Например, вы хотите поместить файл meow.txt в приватную папку вашего приложения /data/data/ru.alexanderklimov.filesystemdemo:
Чтобы убедиться, что файл успешно скопирован, используйте команду:
Если в списке файлов увидите нужный вам файл, значит копирование произошло успешно.
Если перед вам стоит обратная задача — извлечь файл из устройства/эмулятора, то используйте команду pull:
С её помощью также можно скопировать файл базы даннных на свой компьютер:
Эмулятор Android 4.0 с панелью навигации
В Android 4.0 появилась новая навигационная панель. Но она может не отображаться на эмуляторе. В окне настроек эмулятора достаточно поставить флажок у пункта Display a skin with hardware controls.
Если вы по-прежнему не видите панель навигации, то выберите устройство с большим разрешением. Я наблюдал такую проблему, когда использовалось разрешение 800 на 480.
Скопировать базу данных на эмулятор
Запустите утилиту adb.exe через командную строку.
Запустите оболочку (shell)
Определитесь с местонахождением базы данных. Если пакет имеет имя «ru.alexanderklimov.sample», то путь будет data/data/ru.alexanderklimov.sample/databases.
Загружаем базу в эмулятор
localhost на эмуляторе
Веб-мастера часто тестируют свои сайты на собственном компьютере, устанавливая веб-сервер (Denver, XAMPP и др.). При обращении к странице на локальном сервере используются адреса типа http://localhost или http://127.0.0.1. На эмуляторе нужно использовать адрес http://10.0.2.2.
Создадим в корне сервера файл cats.php:
Запустим эмулятор. Далее запустим браузер и перейдём по адресу http://10.0.2.2/cats.php
Отлично, всё работает! Это стандартные настройки. На конкретных машинах возможно понадобится дополнительно настраивать прокси, файерволы и прочее. У меня были проблемы, когда установил OpenServer.
Также можно указать dns-сервер через командную строку. Может пригодиться, если вдруг эмулятор перестал видеть интернет.
Тайм-аут при загрузке приложения
Иногда, при попытке загрузить приложение в эмулятор после редактирования кода, может вылезти сообщение:
Попробуйте увеличить стандартное значение, которое равно 5000, на большее число. Зайдите в меню Window | Preferences. Выберите слева Android | DDMS и в поле ADB connection time out (ms): введите нужное значение.
По собственному наблюдению могу сказать, что данный приём не всегда помогает. Если раньше такой проблемы не было, то попробуйте просто перезагрузить Eclipse и запустить эмулятор снова.
Перезагрузить эмулятор
Кстати, о перезагрузке. Можно перезагрузить сам эмулятор, если возникают с ним какие-то проблемы. Это можно сделать через вкладку Devices, если выбрать команду Reset adb.
Failed to allocate memory: 8
Неожиданно столкнулся с проблемой создания нового эмулятора под Nexus 7 (Android SDK Manager version 21). Эмулятор отказывался запускаться, выводя сообщение:
Поддержка многопользовательского режима в Android 4.2
В Android 4.2 появилась поддержка многопользовательского режима, который можно видеть, например, на планшетах Nexus 7. Но на эмуляторе такая возможность по умолчанию отключена. Если вы хотите выделить отдельное пространство своему коту, чтобы он играл на эмуляторе в свои любимые игры и не сбивал ваши настройки, то заведите нового пользователя следующим образом.
Запустите новый эмулятор с версией Android 4.2 (можно выбрать из списка готовых устройств в AVD планшет Nexus 7). Далее запустите командную строку и выполните в ней последовательно команды:
После этих действий эмулятор перезагрузится и в настройках появится новый пункт Пользователи, через который можно добавить новых пользователей. Теперь, если устройство выключить/включить через кнопку питания в левой части эмулятора, то на экране блокировки увидите два значка — владельца (т.е. вас) и нового пользователя Мурзика (у вас будет имя вашего кота).
Google TV Emulation
Существует ещё эмуляция Google TV. Для России это пока не актуально. Просто оставлю ссылку Google TV Emulation — Google TV — Google Developers
Genymotion и другие эмуляторы
Стандартные эмуляторы, которые входят в состав SDK, вызывают много нареканий среди разработчиков. Особенно недовольны те, кто работает на не слишком мощной машине. Эмуляторы долго загружаются, медленно работают. А у некоторые эмуляторы просто не запускаются из-за проблем с драйверами.
Существует альтернатива — эмулятор Genymotion. На домашней странице можете почитать информацию об эмуляторе. Эмулятор предназначен для личного пользования, в этом случае он бесплатен. Если вы используете его для рабочих проектов, то следует купить лицензию. Бесплатной версии хватает для обычных программ при обучении. Можете смело им пользоваться.
Одно время эмулятор был очень популярен, но однажды Гугл серьёзно взялся за свой эмулятор и сильно переработал его. Поэтому на данный момент пик славы Genymotion миновал.
Источник