Как дать права приложению через adb
В последнее время все больше людей отказывается от получения root прав. У всех на это свои причины. Кто-то не хочет заморачиваться и читать сложные мануалы, кто-то боится потерять гарантию. Google тоже способствует этому, разрешая в новых версиях Android, хоть и не просто, но все же выполнять некоторые действия, которые без root были раньше невозможны. Речь сегодня пойдет о тонкой настройке через adb. Преимущественно статья написана для людей не имеющих root права на телефоне, для тех у кого все же root права есть - статья предоставляется как есть. Автор статьи не несет ответственности за ваши действия.
Для начала запомним что ни одно действие описанное в этой статье не может окирпичить ваш телефон. Вы не имеете root прав, а значит невозможно испортить какой-либо компонент системы. Это не касается ваших личных файлов и приложение, речь только о компонентах системы, о прошивке короче говоря. Так же данные действия никоим образом не могут повлиять на гарантию вашего телефона, собственно по тем же причинам. Без root мы просто не затрагиваем системные компоненты. Используем только то что разрешает нам сама система, как пользователю.
Разберем немного само устройство системы. В Android нет дисков как в Windows. Есть папки. Папки могут быть например картой памяти. Представьте что на вашем компьютере при вставке флешки, на рабочем столе появляется папка "флешка". Вытаскиваете, исчезает. Вот примерно так же и устроена система в вашем телефоне. И так попадая в shell вашего телефона вы оказываетесь в корневой, главной папке. В ней находится куча папок куда у вас нет доступа. Например System (папка прошивки) или Data (папка данных приложений). То есть доступ в эти папки у вас как бы есть, но только на чтение. Вы не можете изменять, удалять или добавлять туда свои файлы. Нет root доступа для этого. Нас интересует внутренняя память телефона + карта памяти, куда запись нам вполне доступна. И так, внутренняя память телефона всегда называется /sdcard. Карта памяти может находится в другом месте, но обычно она /storage/0123-4567
Для того чтобы попасть в shell вашего телефона (командную строку), нужно произвести на телефоне не сложные действия. Заходите в настройки телефона, ищете пункт "О Телефоне". В нем ищите информацию о прошивке, версию и .т.д. Нас интересует пункт "Номер сборки". Нужно нажать на него быстро 10 раз. Должна появиться надпись "Включен режим разработчика". Не бойтесь, ничего страшного не произойдет, просто в настройках телефона появится новое меню "Параметры разработчика". Нужно зайти в это меню и включить "Отладка по USB".
Далее на компьютер нужно установить adb. Для этого вам необходимо скачать "15 seconds adb installer". К сожалению прямых ссылок дать не могу, но уверен поиском в гугле вы найдете нужный файл.
Запустить от администратора, несколько раз согласится нажав на клавиатуре "Y", установить драйверы от Google Inc.
После того как вы установили adb + необходимые драйверы, вы можете работать с командной строкой телефона.
Для этого в пуске нажмите выполнить и вбейте руками CMD. Ну или на любом месте рабочего стола нажмите на клавиатуре "Win + R", вбейте "cmd" (без кавычек) нажмите Enter.
Вы в командной строке компьютера. Чтобы подключиться к командной строке телефона вбейте adb shell. На телефоне может появится диалог - "доверять ли этому компьютеру?" Жмите доверять. Если все прошло гладко, вы увидите что-то вроде 1|greatlte:/ $
pwd - показывает место (полный путь) к папке где вы находитесь
cd .. - перейти в папку уровнем выше
cd - change directory (сменить папку)
mkdir - make directory (создать папку)
rmdir - remove directory (удалить папку)
rm - remove file (удалить файл)
rm -rf - remove recursive force (удалить папку/файл вместе со всем содержимым) (Это опасная команда! Если запустить ее находясь скажем в корне памяти телефоне, вы сотрете все файлы (фотки например) находящиеся на карте памяти. Лучше не пользоваться этой командой без полного понимания того что она делает).
cp - copy (копировать)
mv - move (перемещать или переименовывать)
cd /sdcard/Downdload - сменить папку на /sdcard/Downdload
mkdir Papka - создает папку Papka в папке где вы находитесь
mkdir /sdcard/Downdload/Papka - создает папку Papka в /sdcard/Downdload
copy bxActions.apk bxActions1.apk - создает копию bxActions.apk с именем bxActions1.apk в папке где вы находитесь
mv bxActions.apk bxActions1.apk - переименовывает файл bxActions.apk в bxActions1.apk в папке где вы находитесь
mv /sdcard/Downdload/bxActions.apk /sdcard/bxActions.apk - переносит файл bxActions.apk из папки /sdcard/Downdload/ в корень внутренней памяти (/sdcard)
Почувствуйте себя хакером, начните использовать кнопку Tab на клавиатуре. Например пишите cd /sd[жмете кнопку TAB] получается - cd /sdcard
Продолжайте - cd /sdcard/Dow[жмете кнопку TAB] - получаете cd /sdcard/Downdload/ и вот уже можно жать Enter. Получается быстрее, если привыкните, жизнь станет сильно проще)
Кнопка Tab в командной строке пытается продолжить то что вы пишите подставляя имена файлов и папок которые есть в системе.
Что может adb? Начнем с азов. Перезагрузка в основные режимы.
reboot - (перезагрузка телефона)
reboot bootloader - перезагрузка в режим download или режим bootloader
reboot recovery - перезагрузка в режим восстановления
Работа с показом всяких системных характеристик:
getprop ro.bootloader - показ версии bootloader (только Samsung)
getprop ro.boot.carrierid - показ региона телефона (только Samsung)
getprop - выводит полный список команд сразу с результатами, можно посмотреть кучу инфы о телефоне
Страшный ужасный push и pull:
Эти две команды, push и pull скачивают и закачивают на телефон файлы с ПК и обратно.
Например. Открываете свой cmd на компьютере. Там вы тоже оказываетесь сразу в какой-то папке. Обычно это какой-нибудь C:\Windows\System32. Допустим вам нужно скачать файл с рабочего стола на телефон. В командной строке ПК пишите - cd C:\Users\Vasya\Desktop
Vasya - название пользователя, у вас оно само собой другое) Используйте кнопку TAB как писал выше, будет быстрее и проще. Задача чтобы вместо C:\Windows\System32 у вас было написано C:\Users\Vasya\Desktop
adb push контакты.csv /sdcard/Download/
И файл контактов скопируется с вашего рабочего стола в телефон, в папку /sdcard/Download/
С помощью команды pull можно наоборот, скачать с телефона на ПК:
adb pull /sdcard/Download/контакты.csv контакты.csv
Файл должен оказаться в той папке где вы находитесь командной строкой на ПК (но мы же на вашем рабочем столе, верно?)
Даем какой-либо программе специальные разрешения на примере bxAction:
Для работы bxActions нужно два специальных разрешения, WRITE_SECURE_SETTINGS и READ_LOGS. Эти разрешения могут быть даны только через компьютер, через adb. Сам разработчик рекомендует ввести в командной строке следующее:
adb shell pm grant com.jamworks.bxactions android.permission.WRITE_SECURE_SETTINGS
adb shell pm grant com.jamworks.bxactions android.permission.READ_LOGS
Это правильные команды, однако они не дают вам понимания сработали ли они при вводе. Я рекомендую вводить так:
adb shell - тут мы заходим в shell телефона
pm grant com.jamworks.bxactions android.permission.WRITE_SECURE_SETTINGS
pm grant com.jamworks.bxactions android.permission.READ_LOGS
Если при вводе возникнут какие-либо ошибки, вы это увидите. Если все хорошо, вывод будет пустой.
Таким вот не очень хитрым образом вы можете выдавать приложениям права которые раньше могли быть доступны только с получением root! К сожалению Google разрешает таким образом выдавать не все права, тот же Titanuim Backup не заработает, однако многие другие приложения сейчас умееют работать довольствуюсь только доступными в adb правами.
Я перечислю несколько приложений который попросили специальные права, я выдал их через adb и приложения прекрасно работают. Это - Wakelock Detector, Tasker, Adhell, Andromeda, AutoNotification, bxAction, Substratum, SystemUI Tuner.
Страшный ужасный менеджер пакетов.
Бывает ситуация когда вы поставили какое-то приложение, например тему. Вы хотите ее удалить, но не можете ее найти в списке установленных приложений. Так же бывает что приложение в списке есть, но оно не удаляется. Тут нам поможет встроенный менеджер пакетов.
У каждого приложения есть уникальное имя пакета. Это скажем так внутреннее название приложения, такое как его видит система. Вы же видите только название из так называемых строк перевода. Даже если приложение не переведено ни на какие другие языки кроме родного языка разработчика или просто английского, в любом случае у приложения будет так называемый default перевод в котором будет прописано название приложения. Таким образом вы видите у себя в меню приложений bxActions вместо com.jamworks.bxactions
Бывают конечно пакеты которые являются скажем какими то системными дополнениями, которые не переводят даже в файле default перевода и оставляют прям называнием пакета. Кстати по этой же логике создаются приложения клоны. Достаточно пересобрать (именно пересобрать через специальный софт) пакет com.jamworks.bxactions с именем com.jamworks.bxactions1 и при установке вы получите второе приложения bxActions) Такой клон не всегда будет работать, но это один из способов создать клон. Система видит приложения с разными названиями пакетов как отдельные приложения.
И так что может pm?
Посмотреть все пакеты установленные в системе, в т.ч. те которые зашиты в прошивку и не могут быть удалены
cmd package list packages
Удалить пакет (например bxactions)
pm uninstall com.jamworks.bxactions
Пакетным менеджером так же можно устанавливать приложения. Например вы скинули bxActions.apk в папку Download
pm install bxActions.apk
Поздравляю вы установили приложение не дотрагиваясь до телефона)
Пакетный менеджер так же умеет отключать приложения. Например встроенный браузер вам не нравится, вы используете Chrome самостоятельно установленный с маркета. По привычке вы заходите на телефоне в настройки, выбираете пункт приложения, находите встроенный браузер, но пункта отключить нету, есть только остановить. Тут то и пригодится пакетный менеджер. Конечно, вы скажете, что можно поставить какой-нибудь Disabler с маркета, но это не всегда бывает удобно, поэтому просто знайте что есть способ сделать это через adb.
pm disable com.jamworks.bxactions - чтобы отключить
pm enable com.jamworks.bxactions - чтобы включить обратно если вы передумали
Есть одна загвоздка, вы можете не знать какое название пакета приложения Браузер. Обычно в если зайти в свойства приложения через настройки (Настройки - Приложения - bxActions), то в какой нибудь строке указывается название пакета, однако на Samsung'ах например невсегда. В случае если посмотреть название пакета негде, а искать в выводе cmd package list packages не хочется, можно воспользоваться сторонним софтом. Например проводник которым я постоянно пользуюсь это умеет. В Solid Explorer открываем боковое меню, приложения, выбираем системное или пользовательское приложение, видим список приложений и под каждым написано название пакета.
- Посмотреть какие устройства подключены и могут работать с ADB.
- Просматривать логи.
- Копировать файлы с/на аппарат.
- Устанавливать/Удалять приложения.
- Удалять (очищать) раздел data.
- Прошивать (перезаписывать) раздел data.
- Осуществлять различные скрипты управления.
- Управлять некоторыми сетевыми параметрами.
Настройки соединения, устройства. Драйверы.
Настраиваем телефон.
Для этого перейдите в: "Настройки" - "О телефоне" - 7 раз нажмите на номер сборки. В настройках для разработчиков активируйте отладку по USB.
При подключении USB-кабеля выбираем "Передача файлов".
Проверяем соединение на компьютере.
Перейдите в, раннее распакованную, папку с утилитами. В ней, в адресной строке папки, сверху, напишите - "cmd" (без кавычек) и нажмите Enter.
Проверьте доступность устройства и правильность установки драйверов. Для этого выполните adb или fastboot команду:
Если все хорошо, драйвера успешно установлены и телефон правильно подключен - вы увидите следующий ответ:
<серийный номер устройства> device
или
<серийный номер устройства> fastboot
Если что-то неправильно, то в списке подключенных устройств (List of devices attached) будет пусто.
Так как adb/fastboot - консольные утилиты, работать с ними надо из командной строки.Перейдите в, раннее распакованную, папку с утилитами. В ней, в адресной строке папки, сверху, напишите - "cmd" (без кавычек) и нажмите Enter.
Далее работаем посредством нужных вам команд.
Скрытые команды ADB
adb -d Команда посылается только на устройство подключенное через USB.
Внимание: Выдаст ошибку, если подключено больше одного устройства.
adb -e Команда посылается на устройство в эмуляторе.
Внимание: Выдаст ошибку, если подключено больше одного эмулятора.
adb -s <серийный_номер_устройства> Команда посылается на устройство с указанным серийным номером:
adb push <путь на PC> <путь на андроид> Копировать файл/папку PC->девайс.
adb shell Запуск упрощенного unix shell.
Примеры использования
adb emu <команда> Послать команду в консоль эмулятора
adb wait-for-device Ждать подключения устройства.
adb start-server Запустить службу/демон.
adb kill-server Остановить службу/демон.
adb get-state Получить статус:
offline Выключен.
bootloader В режиме начальной загрузки.
device В режиме работы.
adb get-serialno Получить серийный номер.
adb status-window Непрерывный опрос состояния.
adb remount Перемонтировать для записи. Требуется для работы скриптов, которые изменяют данные на.
adb reboot bootloader Перезагрузка в режим bootloader.
adb reboot recovery Перезагрузка в режим recovery.
adb root Перезапуск демона с правами root
adb usb Перезапуск демона, прослушивающего USB.
adb tcpip <порт> Перезапуск демона, прослушивающего порт TCP.
FastBoot - консольное приложение для PC. Используется для действий над разделами
fastboot devices Список присоединенных устройств в режиме fastboot.
fastboot flash <раздел> <файл> Прошивает файл .img в раздел устройства.
fastboot erase <раздел> Стереть раздел.
Разделы: boot, recovery, system, userdata, radio
Пример: fastboot erase userdata Стирание пользовательских данных.
fastboot update <имя_файла.zip> Прошивка из файла имя_файла.zip
fastboot flashall Прошивка boot + recovery + system.
fastboot getvar <имя_переменной> Показать переменные bootloader.
Пример: fastboot getvar version-bootloader Получить версию bootloader.
fastboot devices Показать список подключенных устройств.
fastboot continue Продолжить с автозагрузкой.
fastboot reboot Перезагрузить аппарат.
f astboot reboot-bootloader Перезагрузить девайсв режим bootloader.
Перед командами fastboot можно использовать ключи:
-w стереть данные пользователя и кэш
-s <серийный номер> Указать серийный номер устройства.
-p <product> Указать название устройства.
-c <cmdline> Переопределить kernel commandline.
-i <vendor id> Указать вручную USB vendor id.
-b <base_addr> Указать в ручную базовый адрес kernel.
-n <page size> Указать размер страниц nand. по умолчанию 2048.
@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу.
pause
fastboot flash radio radio.img
fastboot reboot @echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу.
pause
fastboot flash userdata data.img
fastboot flash system system.img
fastboot flash boot boot.img
fastboot reboot Качаем бутанимацию. Переименовываем файл в bootanimation.zip и кладем его в папку ADB.
@echo off
adb remount
adb push bootanimation.zip /data/local @echo off
adb devices
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу.
pause
fastboot oem writecid 11111111
fastboot reboot-bootloader
fastboot getvar cid
fastboot reboot Распаковываем образ рекавери. Переименовываем файл в recovery.img и кладем его в папку с ADB.
@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу.
pause
fastboot flash recovery recovery.img
fastboot reboot Переименовываем кусок прошивки отвечающий за загрузку в boot.img и кладем его в папку ADB.
@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу.
pause
fastboot flash boot boot.img
fastboot reboot
Если logcat запускается на машине разработчика (не через удаленный adb shell), можно также установить значение выражения фильтра по умолчанию задав переменную окружения ANDROID_LOG_TAGS:
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
Следует обратить внимание что задав переменную окружения ANDROID_LOG_TAGS она не будет работать в эмуляторе/устройстве, если вы будете использовать logcat в удаленном shell или используя adb shell logcat.
Вышеописанная команда export работает в ОС *nix и не работает в Windows.
Контроль формата вывода лога
Просмотр альтернативного буфера лога
Просмотр stdout и stderr
Это невозможно. Код настроек специально написан для предотвращения этого. Самое близкое, что вы можете получить - открыть страницу настроек администрирования устройства в приложении « Настройки» . Вы можете сделать это с:
Спасибо Дэн, Little коррекция: она должна быть adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity" без единой цитаты В большинстве оболочек эта команда просто запускает настройки , а не страницу настроек администрирования устройства . Вот объяснение Иззи почему .Протестировано и работает на Android 7.0 без рута:
Чтобы найти администраторский получатель установленного пакета, используйте следующую команду adb shell и просмотрите выходные данные:
Чтобы привести пример из реальной жизни, вот команда, используемая для активации клиента IBM Maas360 Android в качестве администратора устройства:
ОНО РАБОТАЕТ! Это должен быть принятый ответ! У меня есть один вопрос, возможно ли добавить дополнительные команды? Мне нужно запросить активацию лицензии Samsung Knox сразу после активации администратора, и я хочу передать лицензионный ключ как дополнительный (чтобы мне не приходилось хранить его в моем коде или на моем устройстве)Да, при условии, что у вас есть root-доступ. Вы должны добавить получателя приложения и флаг политики в файл /data/system/device_policies.xml . Например, чтобы включить Tasker от имени администратора устройства, добавьте в указанный файл следующие строки:
Для Android 5.x: удалите последнюю строку с, </policies> если в системе уже включен Администратор устройства. Просто добавьте строки в файл после строки со строкой <policies setup-complete="true"> .
Для Android 4.2.1: удалите последнюю строку с, </policies> если в системе уже включен Администратор устройства. Просто добавьте строки в файл после строки со строкой <policies> .
Перезагрузите устройство, чтобы изменения вступили в силу.
( Требуется занятость ) Вы можете использовать sed или echo или любую удобную вам команду для записи файла с этими строками. Для получения любой помощи, смотрите мой ответ здесь: Как включить администратора устройства для определенных приложений с помощью Tasker?
Это является возможным. Вы можете использовать новый инструмент Android UI-Automator для нажатия и взаимодействия с любым представлением или кнопкой в системе, включая нажатие кнопки «Активировать» для администратора устройства. Вот как:
-
Запустите UI-Automator . (перейдите к «Настройка среды разработки» и настройте новый проект Java).
Напишите некоторый код для взаимодействия со списком ваших предпочтений и нажмите «Активировать». Пример:
UiScrollable settingsItem = new UiScrollable (new UiSelector (). ClassName ("android.widget.ListView")); UiObject listButton = settingsItem.getChildByText (new UiSelector (). ClassName ("android.widget.LinearLayout"), "Включить администратора устройства"); listButton.click (); (новый UiObject (новый UiSelector (). текст («Активировать»))). clickAndWaitForNewWindow (); me.celebrateWith (новое пиво ());
Скомпилируйте это: ant build
Будет ли это работать, даже если текущая локаль устройства не английская?Вы можете установить устройство в качестве владельца из Android Studio. Сначала перейдите в папку adb, которая находится в Platform-tools в Android Sdk, а затем выполните команду оболочки adb. Я дал полный путь, и вы можете настроить по вашему требованию при изменении пути adb и имени пакета
Существует множество инструментов для работы с подключенным с помощью USB-кабеля или Wi-Fi смартфоном. Особо развитые инструменты позволяют перемещать файлы, устанавливать и удалять софт, просматривать контакты, делать скриншоты экрана и даже отправлять СМС, однако ни один графический инструмент не сравнится с мощью, которую может дать консоль Android. В этой статье мы поговорим об ADB (Android Debug Bridge) — стандартном инструменте для отладки и работы с консолью Android с компа.
Описанные в статье команды можно выполнять непосредственно на устройстве, скачав из маркета эмулятор терминала, но удобнее это делать, конечно же, с компа через adb.
Основы работы с ADB
Для начала работы с ADB его следует активировать на устройстве и установить утилиту adb и драйверы на комп. Первая задача выполняется с помощью включения «Отладки по USB» в пункте настроек «Для разработчиков» (если этот пункт скрыт, нажми семь раз на номер сборки в меню «О телефоне»).
Для установки ADB на комп качаем Adb Kit и распаковываем в любую папку (рекомендую использовать названия папок без русских символов). Также скачиваем и устанавливаем драйверы ADB.
Работать с adb нужно из командной строки. Нажимаем Win + R и вводим cmd, далее переходим в папку, в которой лежит adb. Для моей папки команда будет следующей:
Чтобы не проделывать все эти манипуляции каждый раз, можно добавить нужную папку в переменную Path. Для этого необходимо зайти в «Панель управления -> Система -> Дополнительные параметры системы -> Переменные среды», найти переменную Path и добавить в конец строки, через точку с запятой, путь до папки с adb. Теперь после запуска консоли можно сразу вводить необходимые команды.
Добавление adb в переменную Path
Проверим наше подключение к телефону с помощью следующей команды (она должна вывести список подключенных устройств):
С ADB можно работать через Wi-Fi. Для этого нужны права root и приложение WiFi ADB. Запускаем приложение, жмем переключатель и подсоединяемся к смартфону с помощью команды connect и показанного приложением IP-адреса:
Далее работа с ADB ничем не отличается.
Скопировать вывод консоли после выделения мышкой, а также вставить скопированную команду или имя файла в консоль можно правой кнопкой мыши. Включается в свойствах консоли.
Установка программ
ADB можно использовать для установки приложений без необходимости копировать их на смартфон. Достаточно выполнить такую команду:
В команду также можно добавить дополнительные ключи. Полезными будут -е — переустановить приложение с сохранением данных и -d — установить версию меньше текущей.
Программы можно и удалять, но для этого нужно знать название пакета (как узнать, расскажу чуть позже). На примере игры Angry Birds Seasons команда будет выглядеть так:
Бэкап приложений
В Android есть встроенные функции бэкапа, которые также можно запустить с помощью командной строки. Для этого используется команда adb backup и набор опций:
- -f указывает имя создаваемого файла и его расположение на компе. При отсутствии ключа будет создан файл backup.ab в текущем каталоге;
- -apk|-noapk указывает, включать ли в бэкап только данные приложения или сам .apk тоже (по умолчанию не включает);
- -obb|-noobb указывает, включать ли в бэкап расширения .obb для приложений (по умолчанию не включает);
- -shared|-noshared указывает, включать ли в бэкап содержимое приложения на SD-карте (по умолчанию не включает);
- -all указывает на необходимость бэкапа всех установленных приложений;
- -system|-nosystem указывает, включать ли в бэкап системные приложения (по умолчанию включает);
Если мы хотим создать бэкап всех несистемных прог, включая сами .apk, в определенное место, то команда будет выглядеть так:
После ввода необходимо подтвердить начало выполнения бэкапа на самом устройстве. Для восстановления полученного бэкапа нужно выполнить соответствующую команду:
Процесс бэкапа
Консоль в консоли
Наряду с упомянутой консолью, которая является DOS-консолью под Windows, в Android существует и своя. Она вызывается через adb shell и представляет собой по сути стандартную Linux-консоль, но с неполным набором команд, расширить который можно, установив из маркета BusyBox. Использовать эту консоль можно двумя способами. В интерактивном режиме она запускается командой
В консоли появляется знак $ (далее по тексту этот знак будет означать необходимость ввода предварительной команды adb shell), и после этого можно вводить серию команд, получая после каждой отклик. Второй способ — если необходимо ввести только одну команду, можно писать ее подряд за adb shell.
В шелле работают стандартные команды для копирования, перемещения и удаления файлов: cp, mv и rm. Можно менять каталоги (cd) и смотреть их содержимое (ls). Кроме стандартных Linux-команд, о которых можно узнать из любого справочника, в Android есть несколько своих специализированных инструментов, но, чтобы использовать некоторые из них, придется получить на смартфоне права root, а после запуска консоли выполнять команду su:
Вывод свободного пространства на устройстве командой adb shell df
Пример работы команды ls для вывода информации о разделах
Создание скриншота
Выполняется одной строчкой:
После этого картинку нужно выдернуть из устройства командой adb pull:
В recovery скриншот можно сделать следующей командой:
Затем необходимо преобразовать файл fb0 в нормальное изображение с помощью FFmpeg, который нужно скачать и положить в папку с adb. Расширение необходимо ставить своего устройства:
Запись видео, происходящего на экране устройства
Данная команда начнет записывать видео с разрешением 1280 x 720 (если не указать, то будет использовано нативное разрешение экрана устройства), с битрейтом 6 Мбит/с, длиной 20 с (если не указать, то будет выставлено максимальное значение 180 с), с показом логов в консоли. Записанное видео будет находиться в /sdcard (файл video.mp4).
Все запущенные из консоли и в adb shell процессы, занимающие некоторое время для выполнения, можно прервать с помощью комбинации Ctrl + C. Выйти из шелла и вернуться к выполнению обычных команд adb — Ctrl + D.
Управление приложениями
Для управления приложениями используются две команды: pm (package manager) — менеджер пакетов и am (activity manager) — менеджер активностей. У данных команд есть немало ключей, которые можно посмотреть на портале разработчиков. Остановимся на некоторых.
Для начала получим список установленных на устройстве приложений в виде названий пакетов, которые пригодятся позже:
Добавив в конец -s, ты увидишь только системные приложения, -3 — только сторонние, -f покажет пути установки пакетов, а -d — отключенные приложения. Далее, зная названия пакетов, можно совершать над ними различные насильственные действия :). Например, отключить ненужный календарь:
Ну а совсем удалить можно так:
Для использования activity manager понадобятся более глубокие знания структуры Android и понимание того, что такое Avtivity и Intent. Это позволит тебе запускать различные приложения, например браузер или настройки:
Завершить работу приложения можно противоположной командой:
Ну а убить все запущенные приложения — такой командой:
Тот же activity manager поможет сделать звонок на нужный номер телефона:
А так можно открыть страницу в браузере:
Запуск браузера из консоли
В данной команде input keyevent эмулирует нажатие кнопок и может использоваться как для хардварных, так и для кнопок внутри приложения. В нашем примере 22 соответствует перевод фокуса вправо (джойстик вправо — dpad right), а 66 — Enter.
С помощью команды input можно, например, разблокировать телефон. Для этого необходимо ввести:
Но данная команда не сработает на последних версиях Android. Для управления питанием и беспроводными коммуникациями там используется утилита svc. Например, включить передачу данных через мобильную сеть или управлять Wi-Fi можно через команды
Также можно заставить смартфон оставаться включенным при подключении к USB-порту/зарядке/Wi-Fi-сети или всегда:
Возвращаясь к команде input, стоит выделить еще одну команду для вставки текста в текущее поле. Кому-то это может показаться более привлекательным способом набора текста с компа, чем нажимать на кнопки небольшой области экрана. Выглядит команда так:
Кроме опции text, у команды input есть и другие. Полная форма команды такова:
В качестве источника можно указывать trackball, joystick, touchnavigation, mouse, keyboard, gamepad, touchpad, dpad, stylus, touchscreen. В качестве команд будут:
- text (Default: touchscreen) [delay]
- keyevent [–longpress] … (Default: keyboard)
- tap (Default: touchscreen)
- swipe [duration(ms)] (Default: touchscreen)
- press (Default: trackball)
- roll (Default: trackball)
Как видно из команд, можно, хотя и с трудом, управлять устройством через команды input touch и input swipe при разбитом экране, если не поддерживается работа мышки через USB-OTG. Например, вытянуть шторку с уведомлениями получится так (отсчет координат идет от левого верхнего угла):
А так можно узнать разрешение экрана:
Для Nexus 5 разрешение выдаст 1080 х 1920. Тогда нажать на кнопку «Меню приложений» стандартного лаунчера от Google, которая находится над кнопкой «Домой», можно так:
Скрипты
Системные утилиты
Кратко остановлюсь на нескольких полезных командах (работоспособность некоторых, однако, может зависеть от версии прошивки и модели телефона).
Изменение DPI. Не требует root и работает на Android 5.0+. Стандартное значение для Nexus 5 — 480. При значении 420 на рабочем столе стокового лаунчера помещается пять иконок в ряд вместо четырех:
Подключение /system в режиме записи. Для части команд, которые меняют системные файлы, необходимо сначала перемонтировать раздел /system на запись. Это необходимо в том числе при удалении системных приложений. Перемонтирование выполняется следующей командой:
Мягкая перезагрузка:
Перевод смартфона в режим энергосбережения Doze (Android M+):
. повторяем действия, пока не увидим idle.
Батарейка в процентах (Android 4.4+):
Снятие логов
После этого можно запускать проблемное приложение и смотреть, что именно вызывает ошибку. Также поддерживается вывод информации из альтернативных буферов. Этим способом можно посмотреть, что приложения делают в фоне и, например, какие события происходят после включения экрана:
Вывод команды adb logcat -b events
Продвинутый уровень
В одной из своих статей я показывал, как можно доставать информацию из баз данных различных приложений. Ну а теперь посмотрим, как проделать это прямо из консоли, не качая базы на комп и не устанавливая на устройство просмотрщики баз. Для этого используется команда sqlite3. Выведем на экран историю браузера Chrome:
Чтобы база читалась, необходимо выгрузить браузер из работающих приложений. Прервать выполнение скрипта sqlite можно, нажав Ctrl + Z, а выйти — командой .quit. Если в ответ на команду ты получишь ошибку /system/bin/sh: sqlite3: not found, значит, на смартфоне нет sqlite3 и ее придется скачать, закинуть в /system/bin и дать файлу все права. Я использую sqlite3, который вытащил когда-то из Titanium Backup.
История браузера Chrome
Также с помощью sqlite3 можно выдернуть все контакты с телефона. Для этого в консоли на компе должен использоваться шрифт Lucida Console и перед началом выполнения команд необходимо перевести кодировку на UTF-8. Иначе вместо русских букв будут отображаться непонятные символы. Сами команды выглядят так:
Если все сделано правильно, то в консоли ты увидишь таблицу с порядковым номером записи, номером телефона и контактами, отсортированными по имени. Для контактов с более одного номера будет несколько записей подряд.
Вывод контактов из базы contacts2.db
Можно вывести данные не на экран, а сразу в текстовый файл. Для этого команды нужно изменить:
Альтернативный способ вывода контактов в файл — команда, требующая установленного BusyBox:
Снятие графического ключа, PIN, facelock
Допустим, ты забыл PIN или не совсем трезвым поставил графический ключ, ну или друзья пошутили и поставили распознавание по лицу. Так вот, если устройство по какой-то причине заблокировано, то блокировку можно снять (при условии включенной отладки по USB) через ту же консоль:
Команда удалит все пароли и графические ключи. Сами файлы в зависимости от прошивки и модели устройства могут быть: gesture.key, password.key, cm_gesture.key, personalpattern.key, personalbackuppin.key. Также за блокировку отвечают файлы locksettings.db, locksettings.db-shm, locksettings.db-wal.
После этого достаточно перегрузить устройство и ввести любой ключ, пароль. Если это не помогает, можно попробовать следующее:
Выводы
Как видишь, с помощью ADB можно сделать много интересного. И чем больше пользуешься консолью, тем быстрее можно выполнить некоторые действия без установки дополнительного софта на устройство. Надеюсь, данная статья помогла разобраться с ADB и подтолкнула к чтению документации и поиску новых полезных команд.
Читайте также:
- Приложение бургер кинг скачать бесплатно на андроид мобильное приложение на телефон без регистрации
- Как скачать приложение документы
- Метро москвы приложение для андроид скачать бесплатно на русском языке без регистрации
- Как подписаться на телеграм канал москва 24
- Приложения для просмотра step файлов на iphone