Освой Android играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

ADB (Android Debug Bridge)

Соединение через Wi-Fi

Клиент-серверное приложение, которое предоставляет доступ к работающему эмулятору или устройству. С его помощью можно копировать файлы, устанавливать скомпилированные программные пакеты и запускать консольные команды. Используя консоль, вы можете изменять настройки журнала и взаимодействовать с базами данных SQLite, которые хранятся на устройстве. В старых версиях SDK программа находилась в папке tools, теперь находится в папке platform-tools.

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

Что бы увидеть весь список параметров и команд, которые можно запустить при помощи adb, введите в командной строке следующее (или в окне студии Terminal):

 
adb  help

Если у вас есть файл приложения APK и вы хотите его установить на эмуляторе, то используйте команду:

adb.exe install d:\program.apk

d:\program.apk - это путь к файлу, который хотите установить в эмулятор. После этого установленное приложение появится в эмуляторе. Если приложение слишком большое (несколько мегабайт), то придётся немного подождать, пока установится. Во время установки в консоли курсор будет мигать, а потом появится надпись Success, что означает успешную установку программы.

Install

Также можно удалить ненужную программу по имени его пакета:

adb uninstall <package name>

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

adb devices

Вы увидите приблизительно такую картину:

Зная имя устройства, вы можете запустить на нужном устройстве требуемую команду:

adb devices
List of devices attached 
0070015947d30e4b device
015d2856b8300a10 device
$ adb –s 015d2856b8300a10 logcat

Перезагрузить устройство. Если устройств несколько, то нужно указать нужное устройство.

adb reboot
adb -s 192.168.56.101:5555 reboot

Чтобы перезапустить сервер:

adb stop-server
adb start-server

Сделать бэкап и восстановить из бэкапа можно так:

adb backup
adb restore <archive name>

Для копирования файлов с устройства на компьютер и обратно используются команды pull и push.

adb push <local source file path> <device destination file path>
adb pull <device source file path> <local destination file path>

Shell

Чтобы запустить оболочку (shell) на подключённом устройстве, выполните следующую команду:

adb  shell

С ним часто используют команды am и pm. Это не время, а сокращение от Application manager и Package Manager. Например, можно запустить сервис через намерение:

adb shell am startservice –a <intent action>

Для просмотра всех установленных приложений (пакетов):

adb shell pm list packages

Предоставить разрешение приложению/запретить.

adb shell pm grant com.myapp.mypackagename android.permission.INTERNET

adb shell pm revoke com.myapp.mypackagename android.permission.INTERNET

Узнать информацию о конкретном приложении.

adb shell dumpsys package ru.alexanderklimov.hellokitty

Получить список доступных системных свойств.

adb shell getprop

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

adb shell getprop ro.build.version.sdk

Получить список всех будильников.

adb shell dumpsys alarm

Информация о всех видимых активностях.

adb shell dumpsys activity top

adb shell dumpsys activity

adb shell dumpsys activity -h

Символ # обозначает приглашение оболочки (shell prompt).

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

# ls  /system/bin

Список доступных команд (часть)

ADB shell

Чтобы просмотреть список каталогов и файлов, находящихся на корневом уровне (root-level), введите в командной строке оболочки следующую команду:

ls  -l

Для просмотра списка баз данных используйте команду:

 
ls /data/data

В этом каталоге содержится список пакетов, установленных на устройстве. Для примера исследуем пакет com.android.providers.contacts:

ls /data/data/com.android.providers.contacts/databases

Эта команда отобразит файл contacts.db и др., представляющие собой базу данных SQLite.

Logcat

adb shell
logcat --help
logcat -t 5

Logcat

Backup Manager

Backup

Monkey Stress Tester - Обезьяна с гранатой

Monkey ([android-sdk-path]**/platform-tools) - утилита для генерации случайных жестов на эмуляторе или устройстве, что напоминает движения глупой мартышки.

Подробнее

Для просмотра всех файлов базы данных *.db используйте команду:

ls  -R  /data/data/*/databases

Вы увидите, что в Android имеются следующие базы данных (зависимости от версии Android набор может варьироваться):

alarms.db
contacts.db
downloads.db
internal.db
settings.db
mmssms.db
telephony.db

Можно активировать команду sqlitе3 для одной из перечисленных баз данных, введя следующую информацию:

 
#sqlite3  /data/data/com.android.providers.contacts/databases/contacts.db

Для завершения работы с sqlite3 напишите:

sqlite> .exit

Обратите внимание: приглашение для adb - это #, а приглашение для sqlitе3 - это sqlite>.

Запись видео с экрана

Вы можете записать видео с экрана вашего устройства (на эмуляторе не работает):

adb shell screenrecord /sdcard/my_app.mp4

Затем можно сбросить на компьютер.

adb pull /sdcard/my_app.mp4

где /sdcard/my_app.mp4 – путь к файлу с видео (sdcard) и его имя (my_app.mp4).

Максимальное время записи равно трём минутам. Можно прервать запись (Ctrl+C).

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

--size <ШИРИНАxВЫСОТА> Задает разрешение, например: 1280x720. По умолчанию этот параметр установлен в соответствии с разрешением главного экрана устройства (если поддерживается), или 1280x720 – если нет.

--bit-rate <СкоростьПотока> Задает скорость потока видео (мегабиты в секунду). По умолчанию – 4 Мб/сек. Например, для записи со скоростью 6 Мб/сек, вам нужно будет ввести следующую команду:

screenrecord --bit-rate 6000000 /sdcard/demo.mp4

--time-limit <Время> Задает максимальную длительность видео в секундах. По умолчанию установлено максимальное значение – 180 сек (3 минуты).

--rotate Поворот видео на 90 градусов. Экспериментальная опция.

--verbose Отображать информацию о процессе записи в окне командной строки.

В Android Studio вы можете начать запись через кнопку записи в панели Android DDMS (Alt-6).

Если вы хотите, чтобы на видео отображались «отпечатки» касаний к экрану, включите в настройках устройства в разделе для разработчиков опцию «Показывать нажатия» или «отображать касания».

Соединение через Wi-Fi

Обычно для тестирования программы на реальном устройстве использует USB-соединение. Предположим, кот уволок куда-то USB-кабель или расшатал USB-порт (ага, валите всё котов). В этом случае можно попробовать использовать Wi-Fi. Описанный ниже способ не гарантирует работоспособность на всех устройствах. Пробуйте.

Сначала соединитесь обычным способом через USB (не знаю, как вы собираетесь это сделать, если у вас утащили кабель и сломали порт). Включите Wi-Fi на компьютере и на устройстве.

Запустите команду:


adb usb

Появится ответ.


* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting in USB mode

Убедитесь, что устройство присоединено.


adb devices

Ответ (у вас будет свой набор символов):


List of devices attached
05e18acf        device

Меняем режим работы с USB на TCP/IP:


adb tcpip 5555

Ответ:


restarting in TCP mode port: 5555

Теперь вам надо узнать IP-адрес вашего устройства. Пример для Nexus 7: Запускаем Настройки | О планшете | Общая информация | IP-адрес. Перепишите адрес на бумажку. Запускаем команду с этим адресом (у вас будет свой адрес).


adb connect 192.168.1.32

Ответ:


connected to 192.168.1.32:5555

Теперь можете отсоединить кабель. Отдайте его коту, пусть играет.

Проверяем, что устройство по прежнему на связи.


adb devices

Ответ:


List of devices attached
192.168.1.32:5555       device

Отлично! Запускайте приложение и оно по воздуху установится на устройстве.

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

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


adb usb

Указанный способ очень удобен. Недаром на баше есть такие строчки:

Слава Wi-Fi! Котэ не может его перегрызть.

А вот другому повезло меньше и на баше описана его ситуация:

Звонок в техподдержку одного интернет-провайдера.
ТП(техподдержка): Добрый день! Я вас слушаю.
А (абонент): У меня тут проблема возникла.
ТП: Какая у вас проблема?
А: Я гонял кота шашкой и перерубил кабель.

Если бы абонент позаботился о настройке через Wi-Fi, то и проблемы бы не было.

Дополнительные материалы

ADB vs Spy Cam & Mic / Хабр

Реклама