Что такое Shell и как с ним работать
Консоль (Shell) или Интерфейс командной строки (Command line interface, CLI) — разновидность текстового интерфейса между человеком и компьютером, в котором инструкции компьютеру даются в основном путём ввода с клавиатуры текстовых строк (команд). Википедия
Для доступа в консоль Android нам понадобится ADB, настройку которого мы рассматривали в первой части. Альтернативный способ доступа в консоль — установка любого эмулятора терминала на устройство.
Для работы с консолью вам не понадобятся права администратора на устройстве — все команды описанные в данной статье можно выполнять на устройстве из коробки, лишь включив на нем режим отладки.
В статье напротив некоторых команд будут стоять пометки: (5.0) — они будут указывать на минимальную версию Android с которой доступна та или иная команда. Минимальная рассматриваемая версия — Android 4.1. Если что-то не работает на версиях ниже — то скорее всего там это еще не было реализовано.
Для запуска Shell команд через ADB можно выбрать два пути:
- Вход в CLI устройства и выполнение всех команд в нем. Для этого нам достаточно в консоли ввести
adb shell
илиadb -s <идентификатор устройства> shell
, после чего можно вводить все команды описанные ниже. В данном случае при попытке перенаправить вывод в файл, напримерecho 1 > /sdcard/1.txt
файл будет создаваться на устройстве. - Выполнение команд без входа в CLI устройства. В таком случае все ваши команды будут выглядеть следующим образом:
adb shell <команда>
,adb -s <идентификатор устройства> shell <команда>
Команды
Скриншот экрана
screencap /sdcard/path/to/your/file.png
screencap -p /sdcard/path/to/your/file
Команда принимает в качестве параметра путь к файлу на телефоне куда будет сохранен скриншот экрана. Скриншот делается в режиме реального времени. После создания скриншота — вы можете получить доступ к нему через файловый менеджер в телефоне. Альтернативный вариант — выполнить команду adb pull
и сохранить файл на компьютер.
Пример однострочной команды для создания скриншота и сохранения его на компьютер:
adb shell screencap /sdcard/1.png && adb pull /sdcard/1.png test.png
На выходе вы получите файл test.png с вашим текущим изображением на экране
Запись видео с экрана устройства (4.2)
screenrecord /sdcard/path/to/your/file.mp4
screenrecord --size=640x480 --bit-rate=4M --bugreport --time-limit=10 --verbose /sdcard/film.mp4
Команда принимает в качестве параметра путь к файлу на телефоне куда будет сохранено видео записи экрана. Запись начинается после запуска команды, для того чтобы остановить запись видео — необходимо нажать CTRL+C
. Максимальное время видео — 1800 секунд. Так же через параметры можно задать:
--size=640x480
— размер видео — соотношение сторон в пикселях. По-умолчанию: 1280×720--bit-rate=4M
— бит-рейт. По-умолчанию: 20M--bugreport
— добавить дополнительную информацию на видео (полезно для баг репортов). В том числе время.--time-limit=10
— ограничение по времени в секундах.--verbose
— вывод дополнительной информации о ходе записи видео.
Список параметров актуален для Android Oreo (8.*). Возможно, часть параметров будет недоступна на более ранних версиях Android.
Для того, чтобы сохранить видео на компьютер — так же придется воспользоваться командой adb pull
Работа с экраном устройства
wm size
wm size 720x1280
wm size reset
wm density
wm density 120
wm density reset
Когда-то наступает момент, что вам не хватает ваших устройств — у одного слишком большое разрешение, у другого слишком маленькое. Представленные выше команды помогут сделать из телефона планшет и наоборот. Чем выше разрешение — тем меньше картинка на экране. Чем выше значение плотности — тем крупнее элементы на экране. Для того, чтобы все системные элементы приняли заданные размеры — необходимо перезагружать устройство. Иначе будут лишние артефакты :(.
Список основных разрешений экранов устройств:
- HVGA (640 x 240 или 320 x 480)
- VGA (640 x 480)
- WVGA (800 x 480)
- qHD (960 x 540)
- HDV 720p (HD 720p) (1280 x 720)
- WXGA (1280 x 768)
- WXGA+ (1440 x 900)
- FullHD (1920 x 1080)
Остальные разрешения сильно зависят от конкретного производителя устройства — с появлением «вытянутых» экранов разрешения сильно разнятся.
Работа с Package Manager
Установка приложения
pm install /path/to/package.apk
Устанавливает пакет apk с устройства. Имеет такой же список параметров, как и adb install
Удаление приложения
pm uninstall package.name
Удаляет приложение с устройства по его имени пакета
Очистка данных приложения
pm clear package.name
Очищает все данные приложения — имитация чистой установки
Получение списка приложений
pm list packages - Android <=8.0
cmd packages list packages - Android 8.1>=
Выводит список всех установленных пакетов на устройстве. После команды можно так же указывать фильтрующий параметр — выводиться будут только пакеты с соответствующим именем пакета.
Основные дополнительные параметры:
-3
— только сторонние пакеты-s
— только системные пакеты-d
— только отключенные пакеты-e
— только включенные пакеты-f
— выводит информацию о пути к файлу apk
Дамп системы
dumpsys
— полный дамп всех данных о системе (рекомендую сразу сохранять в файл dumpsys > /sdcard/file.txt
)
Примеры дампа конкретных данных о системе:
dumpsys alarm - данные о сервисах которые будят телефон
dumpsys activity - информация о всех недавних activity
dumpsys activity package.name - информация об activity конкретного пакета
dumpsys battery
dumpsys batterystats
dumpsys cpuinfo - статистика процессора
dumpsys display - информация о дисплее устройства
dumpsys gfxinfo - информация по использованию графики
dumpsys gfxinfo package.name - информация по использованию графики конкретным приложением
dumpsys location - статистика по использованию сервисов геопозиционирования
dumpsys meminfo - статистика по использованию оперативной памяти
dumpsys meminfo package.name - статистика по RAM для конкретного приложения
dumpsys package package.name - информация по конкретному пакету в системе
dumpsys package package.name | grep versionName - версия конкретного пакета
dumpsys procstats - статистика процессов
dumpsys procstats package.name - статистика процессов для конкретного пакета
dumpsys wifi - информация по wifi
dumpsys wifiscanner - статистика по сканированию сетей wifi
Другие полезные команды
Т.к. Android ведет свое начало от Linux-подобных систем, в его консоли так же есть большое количество полезных команд:
df
— информация о разделах на устройствеcat /path/to/file
— вывести в консоль содержимое текстового файлаcp first/path/file second/file
— скопировать файл из одного места, в другоеmv first/path/file second/file
— перенести файл из одного места в другое (так же его можно и переименовать)cmp first.file second.file
— сравнить два файла. Можно применять как для текстовых, так и для бинарных файлов. Утилита не очень удобна, для сравнения больших файлов, но поможет найти какие-то мелкие изменения, если они присутствуютifconfig
— выводит информацию о доступных сетевых интерфейсахls
— выводит список файлов в директории. Можно добавить пусть к папке в качестве параметра и посмотреть файлы в нейkill
— завершить процесс под номером переданным первым параметром (требует ROOT прав)mkdir directory
— создать указанную директорию в текущей папке, или в любой другой (нужно указать полный путь до новой директории)rm -rf file
— удалить файл/файлы в директории рекурсивно и принудительноpwd
— узнать текущий путь где вы находитесь