Поиск…


Вступление

adb shell открывает adb shell Linux в целевом устройстве или эмуляторе. Это самый мощный и универсальный способ управления Android-устройством через adb .

Этот раздел был разделен на ADB (Android Debug Bridge) из-за достижения предела примеров, многие из которых adb shell команду adb shell .

Синтаксис

  • adb shell [-e escape] [-n] [-Tt] [-x] [команда]

параметры

параметр подробности
-e выбрать escape-символ или «none»; default '~'
-n не читайте из stdin
-T отключить выделение PTY
-t принудительное распределение PTY
-Икс отключить коды удаленного выхода и разделение stdout / stderr

Отправьте текст, нажав клавишу и коснитесь событий на устройстве Android через ADB

выполните следующую команду, чтобы вставить текст в представление с фокусом (если он поддерживает ввод текста)

6,0

Отправьте текст на SDK 23+

adb shell "input keyboard text 'Paste text on Android Device'"

Если вы уже подключены к вашему устройству через adb :

input text 'Paste text on Android Device'
6,0

Отправить текст до SDK 23

adb shell "input keyboard text 'Paste%stext%son%sAndroid%sDevice'"

Пробелы не принимаются в качестве входных данных, заменяя их% s.

Отправить события

Чтобы имитировать нажатие клавиши включения питания

adb shell input keyevent 26

или альтернативно

adb shell input keyevent POWER

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

adb shell input keyevent CAMERA

Отправить событие касания как вход

adb shell input tap Xpoint Ypoint

Отправить событие салфетки как вход

adb shell input swipe Xpoint1 Ypoint1 Xpoint2 Ypoint2 [DURATION*]

* DURATION является необязательным, по умолчанию = 300 мс. источник

Получите точки X и Y, включив расположение указателя в опции разработчика.

Сценарий оболочки образца ADB

Чтобы запустить скрипт в Ubuntu, Create script.sh щелкните правой кнопкой мыши файл и добавьте права на чтение / запись и отметьте флажок, чтобы выполнить файл как программу .

Откройте эмулятор терминала и запустите команду ./script.sh

Script.sh

 for (( c=1; c<=5; c++ ))
    do  
       adb shell input tap X Y
       echo "Clicked $c times"
       sleep 5s
    done

Полный список номеров событий

Список пакетов

Распечатывает все пакеты, необязательно только те, чье имя пакета содержит текст в <FILTER>.

adb shell pm list packages [options] <FILTER>

All <FILTER>

adb shell pm list packages

Атрибуты:

-f чтобы увидеть их связанный файл.

-i См. установщик для пакетов.

-u также включить удаленные пакеты.

-u Также включают удаленные пакеты.

Атрибуты, которые фильтруют:

-d для отключенных пакетов.

-e для включенных пакетов.

-s для системных пакетов.

-3 для сторонних пакетов.

--user <USER_ID> для конкретного пользовательского пространства для запроса.

Предоставление и аннулирование разрешений API 23+

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

  • предоставление

    adb shell pm grant <sample.package.id> android.permission.<PERMISSION_NAME>
    
  • отменяющий

    adb shell pm revoke <sample.package.id> android.permission.<PERMISSION_NAME>
    
  • Предоставление всех разрешений во время выполнения при установке (-g)

    adb install -g /path/to/sample_package.apk
    

Печать данных приложения

Эта команда печатает все соответствующие данные приложения:

  • код версии
  • название версии
  • предоставленные разрешения (Android API 23+)
  • так далее..
adb shell dumpsys package <your.package.id>

Запись дисплея

4,4

Запись дисплея устройств под управлением Android 4.4 (API уровня 19) и выше:

adb shell screenrecord [options] <filename>
adb shell screenrecord /sdcard/demo.mp4

(нажмите Ctrl-C, чтобы остановить запись)

Загрузите файл с устройства:

adb pull /sdcard/demo.mp4

Примечание. Остановите запись по экрану, нажав Ctrl-C, в противном случае запись автоматически прекратится через три минуты или ограничение по времени --time-limit .

adb shell screenrecord --size <WIDTHxHEIGHT>

Устанавливает размер видео: 1280x720. Значением по умолчанию является собственное разрешение дисплея устройства (если поддерживается), 1280x720, если нет. Для достижения наилучших результатов используйте размер, поддерживаемый кодером Advanced Video Coding (AVC) вашего устройства.


adb shell screenrecord --bit-rate <RATE>

Устанавливает скорость передачи видео для видео в мегабит в секунду. Значение по умолчанию - 4 Мбит / с. Вы можете увеличить скорость передачи данных, чтобы улучшить качество видео, но при этом получается увеличение файлов фильмов. В следующем примере скорость записи составляет 5 Мбит / с:

adb shell screenrecord --bit-rate 5000000 /sdcard/demo.mp4

adb shell screenrecord --time-limit <TIME>

Устанавливает максимальное время записи в секундах. Значение по умолчанию и максимальное значение равно 180 (3 минуты).


adb shell screenrecord --rotate

Поворачивает выход на 90 градусов. Эта особенность экспериментальна.


adb shell screenrecord --verbose

Отображает информацию журнала на экране командной строки. Если вы не установите этот параметр, утилита не отображает информацию во время работы.

Примечание. Это может не работать на некоторых устройствах.

4,4

Команда записи экрана несовместима с версиями Android версии 4.4

Команда screenrecord - это утилита оболочки для записи дисплеев устройств под управлением Android 4.4 (API уровня 19) и выше. Утилита записывает активность экрана в файл MPEG-4.

Изменение прав доступа к файлам с помощью команды chmod

Обратите внимание, что для изменения доступа к файлам ваше устройство должно быть укоренено, su binary не поставляется с заводскими устройствами!

Конвенция:

adb shell su -c "chmod <numeric-permisson> <file>"

Числовое разрешение, построенное из пользовательских, групповых и глобальных разделов.

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

adb shell su -c "chmod 777 <file-path>"

Или же

adb shell su -c "chmod 000 <file-path>"

если вы намерены отказаться от каких-либо разрешений на него.

1- я цифра - указывает разрешение пользователя, 2-я цифра - указывает разрешение группы, 3- я цифра - указывает разрешение на мир (другие).

Разрешения доступа:

--- :   binary value:   000,  octal value: 0 (none)
--x :   binary value:   001,  octal value: 1 (execute)
-w- :   binary value:   010,  octal value: 2 (write)
-wx :   binary value:   011,  octal value: 3 (write, execute)
r-- :   binary value:   100,  octal value: 4 (read)
r-x :   binary value:   101,  octal value: 5 (read, execute)
rw- :   binary value:   110,  octal value: 6 (read, write)
rwx :   binary value:   111,  octal value: 7 (read, write, execute)

Установить дату / время с помощью adb

6,0

Формат по умолчанию: MMDDhhmm[[CC]YY][.ss] , это (2 цифры)

Например, чтобы установить 17 июля 10:10 утра, не меняя текущий год, введите:

adb shell 'date 07171010.00'

Совет 1: изменение даты не будет немедленно отображено, и заметные изменения произойдут только после того, как системные часы перейдут на следующую минуту.
Вы можете принудительно обновить, TIME_SET к вашему вызову трансляцию намерений TIME_SET , например:

adb shell 'date 07171010.00 ; am broadcast -a android.intent.action.TIME_SET'

Совет 2: синхронизация часов Android с локальной машиной:

Linux:

adb shell date `date +%m%d%H%M%G.%S`

Windows (PowerShell):

$currentDate = Get-Date -Format "MMddHHmmyyyy.ss" # Android's preferred format
adb shell "date $currentDate"

Оба совета вместе:

adb shell 'date `date +%m%d%H%M%G.%S` ; am broadcast -a android.intent.action.TIME_SET'
6,0

Формат по умолчанию: «YYYYMMDD.HHmmss»

adb shell 'date -s 20160117.095930'

Подсказка: синхронизировать часы Android с локальной (на основе Linux):

adb shell date -s `date +%G%m%d.%H%M%S`

Возможности Open Developer

adb shell am start -n com.android.settings/.DevelopmentSettings

Будет перемещаться по вашему устройству / эмулятору в разделе « Developer Options ».

Создание трансляции «Загрузка завершена»

Это актуально для приложений, реализующих BootListener . Проверьте свое приложение, убив ваше приложение, а затем проверьте:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n your.app/your.app.BootListener

(замените your.package/your.app.BootListener с правильными значениями).

Просмотр содержимого внешнего / вторичного хранилища

Просмотр содержимого:

adb shell ls \$EXTERNAL_STORAGE
adb shell ls \$SECONDARY_STORAGE

Просмотр пути:

adb shell echo \$EXTERNAL_STORAGE
adb shell echo \$SECONDARY_STORAGE

убить процесс внутри устройства Android

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

Удобный способ устранения проблемы без перезапуска устройства - найти и убить процесс, вызывающий проблему.

От Logcat

03-10 11:41:40.010 1550-1627/? E/SomeProcess: ....

обратите внимание на номер процесса: 1550

Теперь мы можем открыть оболочку и убить процесс. Обратите внимание, что мы не можем убить процесс root .

adb shell

внутри оболочки мы можем больше узнать о процессе, используя

ps -x | grep 1550

и убить его, если мы хотим:

kill -9 1550


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow