Adb root mount

在这里插入图片描述

*The content of this article is integrated from the Internet, welcome to reprint. *

I believe that friends who do Android development have used ADB commands, but they are only limited to installing application push files and device restarting. I don’t know the deeper ones. In fact, we can understand a little more. There are some uncommon scenarios we should at least Knowing that it can be done, for example, we know adb install but not adb shell am start. The former is used to install software, and the latter is used to open the software. A usage scenario of the latter makes me pay attention to him: the company customizes the Android system. When debugging the screen, it depends on whether the screen is full to verify that the driver is normal. This is a troublesome approach. It is to be installed and opened in the hands of Android developers with eclipse or other ide. Obviously, it is much more complicated than the driver who connects the data line and uses the adb command. Therefore, it is necessary to know more.

-writable-system для эмулятора.

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

Затем, при последующих запусках, вы должны сохранить опцию -writable-system, иначе изменения образа не будут видны:

-verbose показывает нам, что эмулятор переключается с установленного по умолчанию -drive:

  • удаляет ,только для чтения.

  • использует system-qemu.img.qcow2 вместо system-qemu.img.

    Это означает, что изменения будут видны только в том случае, если вы передадите -writable-sytem при последующих загрузках после внесения изменений!

    Мы видим, что образ qcow2 — это просто небольшой overlay поверх базового образа:

      qemu-img info /path/to/aosp/8.1.0_r60/out/target/product/generic_x86_64/system-qemu.img.qcow2
      резервный файл: /path/to/aosp/8.1.0_r60/out/target/product/generic_x86_64/system-qemu.img

Эмулятор -help также подтверждает это:

adb remount + adb root.

Я думаю, что это просто ярлык для mount, как упоминалось на https://android.stackexchange.com/a/110928/126934 , но это очень удобно:

adb help содержит:

Восстановление исходного образа системы

Работа с Android-устройством по ADB(Android Debug Bridge) и в режиме FastBoot

18.png

  • Вывод списка подключенных к ПК устройств, работающих по протоколу ADB.
  • Просмотр логов работы Android ОС.
  • Копирование файлов с/на аппарат.
  • Создание и восстановление пользовательских данных.
  • Выполнение unix-команд на устройстве. Запуск скриптов.
  • Управление сетевыми параметрами.

Установка и настройка ADB на ПК:

  • Скачать и установить как обычную программу драйверы: (Более новая версия может быть в отдельной теме)
  • Распаковать архив в произвольную папку с латинским названием. Например: «c:\adb\«. Полный путь до файлов комплекта НЕ должен содержать пробелов, спецсимволов, русских букв и т.п. В данном примере в папке «c:\adb\» должны быть 5 файлов:
    • «adb.exe» — непосредственно сам ADB, с которым будем работать.
    • «AdbWinApi.dll» — библиотека для работы ADB.
    • «AdbWinUsbApi.dll» — библиотека для работы ADB.
    • «fastboot.exe» — управление устройством переведенным в режим fastboot.
    • «START.exe» — программа для облегченного запуска ADB.

настройка ADB на аппарате:

  • Включить меню разработчика.
  • Включить отладку по USB.
  • Система Windows автоматически установит драйверы на новое устройство.

    Снимок.PNG

  • Запустить «c:\adb\START.exe«, запустится командная строка Windows (cmd.exe — обработчик команд Windows).
  • В окне командной строки ввести: «adb devices» и нажать Enter. Если все настроено верно, будет выведен ответ:
    adb devices
    List of devices attached
    HT16GV402012    device
  • Если что-то настроено неверно, то в списке подключенных устройств (List of devices attached) будет пусто.

Список команд ADB (Полный список команд можно получить, изучив ):

Примеры работы по ADB:

Ниже перечисленные примеры можно вводить в командную строку. Для удобства их можно вписать в файл-сценария .cmd или .bat.

Удаление папки со всеми вложенными каталогами и файлами. Например всей музыки.

adb shell rm -r /sdcard/music

Информация о разделах внутренней памяти аппарата.

adb shell cat /proc/mtd

Информация о точках монтирования, общем и свободном пространстве на разделах.

adb shell df

Информация о разделении ROM-памяти на разделы.

adb shell cat /proc/partitions

Резервная копия определенного раздела.

Монтирование разделов /system и /data в режиме mod-recovery.

FastBoot — консольное приложение для ПК. Используется как правило для прошивки и аварийного восстановления работоспособности аппарата.

Список команд fastboot:

  • Список присоединенных устройств в режиме fastboot.
  • Прошивка файла .img в раздел устройства.
    fastboot flash <раздел> <файл>
  • Стирание раздела. Разделы: boot, recovery, system, userdata, radio.
    fastboot erase <раздел>
  • Прошивка из файла имя_файла.zip
    fastboot update <имя_файла.zip>
  • Прошивка boot + recovery + system.
  • Показать переменные bootloader.
    fastboot getvar <имя_переменной>
  • Отправить ядро (kernel) на устройство и запустить его из оперативной памяти, без прошивки.
  • Отправить ядро (kernel) на устройство и прошить его.
  • Продолжить загрузку.
  • Перезагрузить аппарат.
  • Перезагрузить аппарат в режим 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.

Примеры работы в режиме fastboot:

Прошивка модема. Переименовать файл модема в radio.img и положить его в папку C:\ADB\.

Восстановление прошивки из резервной копии.

Прошивка recovery. Распаковать образ recovery. Переименовать файл в и положить его в папку C:\ADB\.

Прошивка загрузочного раздела. Положить в папку C:\ADB\

Содержание
  1. File Management
  2. Copy the files in the device to the computer
  3. Copy files from computer to device
  4. ADB port is occupied
  5. Security related
  6. Enable SELinux
  7. Disable SELinux
  8. Enable dm_verity
  9. Disable dm_verity
  10. Useful functions
  11. Screenshots
  12. Record screen
  13. Remount.
  14. View connected WiFi passwords
  15. Set the system date and time
  16. restart cellphone
  17. Check if the device is rooted
  18. Use Monkey for stress testing
  19. Turn on/off WiFi
  20. Turn on/off data traffic
  21. View device information
  22. Model
  23. Battery status
  24. Screen Resolution
  25. Screen density
  26. Display parameters
  27. android_id
  28. IMEI
  29. Android system version
  30. IP address
  31. Mac address
  32. CPU information
  33. Memory information
  34. More hardware and system properties
  35. Common problem
  36. Failed to start adb server
  37. Modify settings
  38. Resolution
  39. Screen density
  40. Display area
  41. Turn off USB debugging mode
  42. Display and hide status bar and navigation bar
  43. Return to normal mode
  44. ADB Architecture
  45. Device connection management
  46. Query connected devices/emulators
  47. USB connection
  48. Wireless connection (USB cable required)
  49. Wireless connection (no need to use USB cable)
  50. What is ADB
  51. Application Management
  52. View application list
  53. All applications
  54. system applications
  55. third-party usage
  56. Install APK
  57. Adb install internal principle introduction
  58. Uninstall the app
  59. Clear application data and cache
  60. View foreground activity
  61. View running Services
  62. View application details
  63. Simulation key/input
  64. Power button
  65. menu
  66. HOME key
  67. return key
  68. volume control
  69. Media Control
  70. Turn on/off the screen
  71. Slide to unlock
  72. Enter text
  73. View log
  74. Android log
  75. Kernel log
  76. Flashing related commands
  77. Restart to Recovery mode
  78. Restart from Recovery to Android
  79. Restart to Fastboot mode
  80. Update the system via sideload
  81. More adb shell commands
  82. View process
  83. View real-time resource usage
  84. View process UID
  85. Other
  86. Basic usage
  87. Command syntax
  88. Specify the target device for the command
  89. start stop
  90. View adb version
  91. Run adbd as root
  92. Specify the network port of adb server
  93. Interact with the application
  94. Activating Activity
  95. Transfer Service
  96. Send broadcast
  97. Forcibly stop the application
  98. Disable apps and start
  99. Revoke the permissions of the application

File Management



Copy the files in the device to the computer

adb pull <file path in device> [directory on computer]

Enter fullscreen mode

Exit fullscreen mode

Among them, the directory parameter on the computer can be omitted, and the default is copied to the current directory.

adb pull /sdcard/sr.mp4 ~/tmp/

Enter fullscreen mode

Exit fullscreen mode

*Tips: *The file path on the device may require root privileges to access. If your device has been rooted, you can use the adb shell and su commands to obtain root privileges in the adb shell, then cp /path/on/device /sdcard/filename Copy the file to sdcard, then adb pull /sdcard/filename /path/on/pc.



Copy files from computer to device

adb push <file path on computer> <directory in device>

Enter fullscreen mode

Exit fullscreen mode

adb push ~/sr.mp4 /sdcard/

Enter fullscreen mode

Exit fullscreen mode

*Tips: *The file path on the device may not be directly written by ordinary permissions. If your device has been rooted, you can first adb push /path/on/pc /sdcard/filename, and then adb shell and su in adb shell After obtaining root permissions, cp /sdcard/filename /path/on/device.

ADB port is occupied

A small partner said that he hoped that I would put the Adb startup problem at the top, because he often encountered the problem of adb unable to find the device, then I will put it in front, I think it is definitely not only she will encounter this situation .

5037 is the default port of adb. If port 5037 is occupied, we will be troubled by not finding the device when using the Adb command. This problem is often encountered for those who are not very familiar with Adb, so I will This usage is placed at the beginning of the article so that friends can find it easily;
The idea of ​​solving this kind of port occupation problem is the same, three steps:

  1. Find the Pid of the process using the port;
C:indowsystem32>netstat |findstr 5037
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 3172

Enter fullscreen mode

Exit fullscreen mode

  1. Find the corresponding process name through PID (easy to locate, you can skip);
C:indowsystem32>tasklist /fi "PID eq 3172"

Image name PID session name session# memory usage
     
360MobileLink.exe 3172 Console 4 40,208 K

Enter fullscreen mode

Exit fullscreen mode

  1. Use the command to terminate the operation of the command;
C:serswx229495>taskkill /pid 3172 /f
Success: The process with PID 3172 has been terminated.

Enter fullscreen mode

Exit fullscreen mode

Sometimes, some rogue programs will copy a copy of Adb.exe to the windows environment variable, such as C://Windows/system32, at this time we can use Where
The Adb command finds out the path where adb is located and deletes it.



Enable SELinux

 
   

Enter fullscreen mode

Exit fullscreen mode



Disable SELinux

 
   

Enter fullscreen mode

Exit fullscreen mode



Enable dm_verity

 
 

Enter fullscreen mode

Exit fullscreen mode



Disable dm_verity

 
 

Enter fullscreen mode

Exit fullscreen mode

Useful functions



Screenshots

Save screenshot to computer:

adb exec-out screencap -p> sc.png

Enter fullscreen mode

Exit fullscreen mode

First save the screenshot to the device:

adb shell screencap -p /sdcard/sc.png

Enter fullscreen mode

Exit fullscreen mode

Then export the png file to the computer:

adb pull /sdcard/sc.png

Enter fullscreen mode

Exit fullscreen mode

Actually, if the specified file name ends with .png, you can omit the -p parameter; otherwise, you need to use the -p parameter. If you do not specify the file name, the content of the screenshot file will be directly output to stdout.

Another way to take a screenshot of a one-line command and save it to the computer:

Linux and Windows

adb shell screencap -p | sed "s/\r$//"> sc.png

Enter fullscreen mode

Exit fullscreen mode

Mac OS X

adb shell screencap -p | gsed "s/\r$//"> sc.png

Enter fullscreen mode

Exit fullscreen mode

This method needs to use the gnu sed command, which is available directly under Linux, and under the bin folder of the Git installation directory under Windows. If you really cannot find the command, you can download sed for Windows and add the folder where sed.exe is located to the PATH environment variable.

However, using the sed command that comes with the system under Mac will report an error:

sed: RE error: illegal byte sequence

Enter fullscreen mode

Exit fullscreen mode

Need to install gnu-sed, and then use the gsed command:

brew install gnu-sed

Enter fullscreen mode

Exit fullscreen mode



Record screen

The recorded screen is saved to /sdcard in mp4 format:

adb shell screenrecord /sdcard/filename.mp4

Enter fullscreen mode

Exit fullscreen mode

Press Ctrl-C when you need to stop, the default recording time and maximum recording time are both 180 seconds.

If you need to export to a computer:

adb pull /sdcard/filename.mp4

Enter fullscreen mode

Exit fullscreen mode

Remount the system partition as writable

*Note: root permission is required. *

The /system partition is mounted as read-only by default, but some operations such as adding commands to the Android system, deleting its own applications, etc. require writing to /system, so you need to remount it as read-write.

adb shell
su

Enter fullscreen mode

Exit fullscreen mode

View the current partition mounting status.

mount

Enter fullscreen mode

Exit fullscreen mode

rootfs / rootfs ro, relatime 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /var tmpfs rw,seclabel,relatime,mode=770,gid=1000 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
none /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0
tmpfs /mnt/asec tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
none /dev/memcg cgroup rw,relatime,memory 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
none /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0
none /sys/fs/cgroup/freezer cgroup rw,relatime,freezer 0 0
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,relatime,noauto_da_alloc,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/modem /firmware vfat ro,context=u:object_r:firmware_file:s0,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage =cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /mnt/shell/emulated/0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0

Enter fullscreen mode

Exit fullscreen mode

Find the line with /system that we are concerned about:

/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0

Enter fullscreen mode

Exit fullscreen mode



Remount.

mount -o remount,rw -t yaffs2 /dev/block/platform/msm_sdcc.1/by-name/system /system

Enter fullscreen mode

Exit fullscreen mode

If the output does not prompt an error, the operation is successful, and you can do whatever you want with the files under /system.

Дополнительно:  How to Root Galaxy S5 SM-G900H (International Exynos)



View connected WiFi passwords

*Note: root permission is required. *

adb shell
su
cat /data/misc/wifi/*.conf

Enter fullscreen mode

Exit fullscreen mode

network={
ssid="TP-LINK_9DFC"
scan_ssid=1
psk="123456789"
key_mgmt=WPA-PSK
group=CCMP TKIP
auth_alg=OPEN
sim_num=1
priority=13893
}

network={
ssid="TP-LINK_F11E"
psk="987654321"
key_mgmt=WPA-PSK
sim_num=1
priority=17293
}

Enter fullscreen mode

Exit fullscreen mode

ssid is the name we see in the WLAN settings, psk is the password, and key_mgmt is the security encryption method.



Set the system date and time

*Note: root permission is required. *

adb shell
su
date -s 20160823.131500

Enter fullscreen mode

Exit fullscreen mode

Means to change the system date and time to 13:15:00 on August 23, 2016.



restart cellphone

adb reboot

Enter fullscreen mode

Exit fullscreen mode



Check if the device is rooted

adb shell
su

Enter fullscreen mode

Exit fullscreen mode

At this time, the command line prompt is $, which means that there is no root authority, and # means that it is rooted.



Use Monkey for stress testing

adb shell monkey -p <packagename> -v 500

Enter fullscreen mode

Exit fullscreen mode

It means to send 500 pseudo-random events to the application specified by <packagename>.

For detailed usage of Monkey, refer to the official documentation.



Turn on/off WiFi

Note: root permission is required.

Turn on WiFi:

adb root
adb shell svc wifi enable

Enter fullscreen mode

Exit fullscreen mode

Turn off WiFi:

adb root
adb shell svc wifi disable

Enter fullscreen mode

Exit fullscreen mode

Set wifi priority, use wifi first when there is network and wifi

    

Enter fullscreen mode

Exit fullscreen mode

If the execution is successful, the output will be empty; if the command is executed without root permission, the execution will fail and the output will be Killed.



Turn on/off data traffic

  

Enter fullscreen mode

Exit fullscreen mode

This command can close the data connection, that is, the Internet traffic. Everyone knows that there are many switches to control the Internet, but most of them are realized by adding a suffix to the access point on the apn, but this command will not change any settings of the apn. The bottom layer closes the data connection. It should be the most thorough, and does not affect the apn settings. What is the difference between this and apndroid? When apndroid closes the Internet data, the downloading connection may not be forcibly closed (this is also mentioned in apndroid’s own instructions). For example, if you are downloading a 10M movie, if you download 1M, the download will not sound. Use apndroid to close the connection, maybe the download will continue, not immediately. But with this command, it clicked away without mercy.

    

Enter fullscreen mode

Exit fullscreen mode

This is to open the Internet data connection, which is the opposite of the previous command.

    

Enter fullscreen mode

Exit fullscreen mode

This command is to control the data connection prior to wifi. We all know that under normal circumstances, when there is wifi, the data network connection will not be used. But this command is the opposite. If there is a data network, use data network traffic first, and use wifi when there is no data network.

View device information



Model

adb shell getprop ro.product.model

Enter fullscreen mode

Exit fullscreen mode



Battery status

adb shell dumpsys battery

Enter fullscreen mode

Exit fullscreen mode

  Current Battery Service state:
  AC powered: false
  USB powered: true
  Wireless powered: false
  status: 2
  health: 2
  present: true
  level: 44
  scale: 100
  voltage: 3872
  temperature: 280
  technology: Li-poly

Enter fullscreen mode

Exit fullscreen mode

Among them, scale represents the maximum power, and level represents the current power. The output above indicates that 44% of the battery is left.



Screen Resolution

adb shell wm size

Enter fullscreen mode

Exit fullscreen mode

Physical size: 1080x1920

Enter fullscreen mode

Exit fullscreen mode

The device screen resolution is 1080px * 1920px.

If it is modified using the command, the output may be:

Physical size: 1080x1920
Override size: 480x1024

Enter fullscreen mode

Exit fullscreen mode

Indicates that the screen resolution of the device was originally 1080px * 1920px, but is currently modified to 480px * 1024px.



Screen density

adb shell wm density
Sample output:

Physical density: 420
The device screen density is 420dpi.

If it is modified using the command, the output may be:

Physical density: 480
Override density: 160
Indicates that the screen density of the device was originally 480dpi, but is currently modified to 160dpi.



Display parameters

adb shell dumpsys window displays

Enter fullscreen mode

Exit fullscreen mode

WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
  Display: mDisplayId=0
    init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731
    deferred=false layoutNeeded=false

Enter fullscreen mode

Exit fullscreen mode

Among them, mDisplayId is the display number, init is the initial resolution and screen density. The height of the app is smaller than that in init, which means that there are virtual buttons at the bottom of the screen. The height is 1920-1794 = 126px and 42dp.



android_id

adb shell settings get secure android_id

Enter fullscreen mode

Exit fullscreen mode

51b6be48bac8c569

Enter fullscreen mode

Exit fullscreen mode



IMEI

adb shell dumpsys iphonesubinfo

Enter fullscreen mode

Exit fullscreen mode

Phone Subscriber Info:
  Phone Type = GSM
  Device ID = 860955027785041
The Device ID is IMEI.

Enter fullscreen mode

Exit fullscreen mode

In Android 5.0 and above, the output of this command is empty, and it must be obtained by other means (root permission is required):

adb shell
su
service call iphonesubinfo 1

Enter fullscreen mode

Exit fullscreen mode

Result: Parcel(
  0x00000000: 00000000 0000000f 00360038 00390030'........8.6.0.9.'
  0x00000010: 00350035 00320030 00370037 00350038 '5.5.0.2.7.7.8.5.'
  0x00000020: 00340030 00000031 '0.4.1...')

Enter fullscreen mode

Exit fullscreen mode

Extracting the effective content inside is the IMEI, for example, here is 860955027785041.

Reference: adb shell dumpsys iphonesubinfo not working since Android 5.0 Lollipop



Android system version

adb shell getprop ro.build.version.release

Enter fullscreen mode

Exit fullscreen mode



IP address

Every time you want to know the IP address of the device, you have to «Settings»-«About Phone»-«Status Information»-«IP Address», which is annoying, right? It can be easily viewed through adb.

adb shell ifconfig "| grep Mask"

Enter fullscreen mode

Exit fullscreen mode

inet addr:10.130.245.230 Mask:255.255.255.252
inet addr: 127.0.0.1 Mask: 255.0.0.0

Enter fullscreen mode

Exit fullscreen mode

Then 10.130.245.230 is the device IP address.

wlan0: ip 10.129.160.99 mask 255.255.240.0 flags [up broadcast running multicast]

Enter fullscreen mode

Exit fullscreen mode

wlan0 Link encap:UNSPEC
          inet addr:10.129.168.57 Bcast:10.129.175.255 Mask:255.255.240.0
          inet6 addr: fe80::66cc:2eff:fe68:b6b6/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:496520 errors:0 dropped:0 overruns:0 frame:0
          TX packets: 68215 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3000
          RX bytes: 116266821 TX bytes: 8311736

Enter fullscreen mode

Exit fullscreen mode

adb shell netcfg

Enter fullscreen mode

Exit fullscreen mode

wlan0 UP 10.129.160.99/20 0x00001043 f8:a9:d0:17:42:4d
lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00
p2p0 UP 0.0.0.0/0 0x00001003 fa:a9:d0:17:42:4d
sit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
rmnet0 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet1 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet3 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet2 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet4 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet6 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet5 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet7 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rev_rmnet3 DOWN 0.0.0.0/0 0x00001002 4e:b7:e4:2e:17:58
rev_rmnet2 DOWN 0.0.0.0/0 0x00001002 4e:f0:c8:bf:7a:cf
rev_rmnet4 DOWN 0.0.0.0/0 0x00001002 a6:c0:3b:6b:c4:1f
rev_rmnet6 DOWN 0.0.0.0/0 0x00001002 66:bb:5d:64:2e:e9
rev_rmnet5 DOWN 0.0.0.0/0 0x00001002 0e:1b:eb:b9:23:a0
rev_rmnet7 DOWN 0.0.0.0/0 0x00001002 7a:d9:f6:81:40:5a
rev_rmnet8 DOWN 0.0.0.0/0 0x00001002 4e:e2:a9:bb:d0:1b
rev_rmnet0 DOWN 0.0.0.0/0 0x00001002 fe:65:d0:ca:82:a9
rev_rmnet1 DOWN 0.0.0.0/0 0x00001002 da:d8:e8:4f:2e:fe

Enter fullscreen mode

Exit fullscreen mode

You can see information such as the network connection name, activation status, IP address, and Mac address.



Mac address

adb shell cat /sys/class/net/wlan0/address

Enter fullscreen mode

Exit fullscreen mode

f8:a9:d0:17:42:4d

Enter fullscreen mode

Exit fullscreen mode

This is the local area network Mac address, mobile network or other connection information can be viewed through the adb shell netcfg command mentioned in the previous section «IP address».



CPU information

adb shell cat /proc/cpuinfo

Enter fullscreen mode

Exit fullscreen mode

Processor: ARMv7 Processor rev 0 (v7l)
processor: 0
BogoMIPS: 38.40

processor: 1
BogoMIPS: 38.40

processor: 2
BogoMIPS: 38.40

processor: 3
BogoMIPS: 38.40

Features: swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer: 0x51
CPU architecture: 7
CPU variant: 0x2
CPU part: 0x06f
CPU revision: 0

Hardware: Qualcomm MSM 8974 HAMMERHEAD (Flattened Device Tree)
Revision: 000b
Serial: 0000000000000000

Enter fullscreen mode

Exit fullscreen mode

This is the CPU information of Nexus 5. We can see from the output that the hardware used is Qualcomm MSM 8974, and the processor number is 0 to 3, so it is quad-core and the architecture used is ARMv7 Processor rev 0 (v71).



Memory information

adb shell cat /proc/meminfo

Enter fullscreen mode

Exit fullscreen mode

MemTotal: 1027424 kB
MemFree: 486564 kB
Buffers: 15224 kB
Cached: 72464 kB
SwapCached: 24152 kB
Active: 110572 kB
Inactive: 259060 kB
Active(anon): 79176 kB
Inactive(anon): 207736 kB
Active(file): 31396 kB
Inactive(file): 51324 kB
Unevictable: 3948 kB
Mlocked: 0 kB
HighTotal: 409600 kB
HighFree: 132612 kB
LowTotal: 617824 kB
LowFree: 353952 kB
SwapTotal: 262140 kB
SwapFree: 207572 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 265324 kB
Mapped: 47072 kB
Shmem: 1020 kB
Slab: 57372 kB
SReclaimable: 7692 kB
SUnreclaim: 49680 kB
KernelStack: 4512 kB
PageTables: 5912 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 775852 kB
Committed_AS: 13520632 kB
VmallocTotal: 385024 kB
VmallocUsed: 61004 kB
VmallocChunk: 209668 kB

Enter fullscreen mode

Exit fullscreen mode

Among them, MemTotal is the total memory of the device, and MemFree is the current free memory.



More hardware and system properties

adb shell cat /system/build.prop

Enter fullscreen mode

Exit fullscreen mode

This will output a lot of information, including the «model» and «Android system version» mentioned in the previous sections.

Section Note 1:

Some ROMs customized by small factories may have modified the attribute name of the abi list supported by the CPU. If you can’t find it with the ro.product.cpu.abilist attribute name, you can try:

adb shell cat /system/build.prop | grep ro.product.cpu.abi

Enter fullscreen mode

Exit fullscreen mode

ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi

Enter fullscreen mode

Exit fullscreen mode

Common problem



Failed to start adb server

error: protocol fault (couldn't read status): No error

Enter fullscreen mode

Exit fullscreen mode

The 5037 port that the adb server process wants to use is occupied.

Find the process occupying port 5037, and then terminate it. Take Windows as an example:

netstat -ano | findstr LISTENING

...
TCP 0.0.0.0:5037 0.0.0.0:0 LISTENING 1548
...

Enter fullscreen mode

Exit fullscreen mode

Here 1548 is the process ID, end the process with the command:

taskkill /PID 1548

Enter fullscreen mode

Exit fullscreen mode

Then start adb and there is no problem.

Modify settings

*Note: After modifying the settings, running the recovery command may still display abnormalities. You can run adb reboot to restart the device, or manually restart. *

The principle of modifying settings is mainly to modify the setting values ​​stored in /data/data/com.android.providers.settings/databases/settings.db through the settings command.



Resolution

adb shell wm size 480x1024

Enter fullscreen mode

Exit fullscreen mode

Means to modify the resolution to 480px * 1024px.

Restore the original resolution command:

adb shell wm size reset

Enter fullscreen mode

Exit fullscreen mode



Screen density

adb shell wm density 160

Enter fullscreen mode

Exit fullscreen mode

Means to modify the screen density to 160dpi.

Restore the original screen density command:

adb shell wm density reset

Enter fullscreen mode

Exit fullscreen mode



Display area

adb shell wm overscan 0,0,0,200

Enter fullscreen mode

Exit fullscreen mode

The four numbers respectively indicate the margin pixels from the left, top, right, and bottom edges. The above command means to leave the bottom of the screen 200px blank.

Restore the original display area command:

adb shell wm overscan reset

Enter fullscreen mode

Exit fullscreen mode



Turn off USB debugging mode

adb shell settings put global adb_enabled 0
restore:

It can’t be restored with commands, after all, if USB debugging is turned off, adb cannot connect to the Android device.

Go to the device to manually restore it: «Settings»-«Developer Options»-«Android Debugging».



Display and hide status bar and navigation bar

The related settings mentioned in this section correspond to «Extended Desktop» in Cyanogenmod.

adb shell settings put global policy_control <key-values>

Enter fullscreen mode

Exit fullscreen mode

adb shell settings put global policy_control immersive.full=*

Enter fullscreen mode

Exit fullscreen mode

Indicates that the status bar and navigation bar are hidden at the same time in all interfaces.

adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3

Enter fullscreen mode

Exit fullscreen mode

It means setting to hide the status bar in applications with package names com.package1 and com.package2, and hide the navigation bar in all applications except package names com.package3.



Return to normal mode

What if I don’t want to be full screen?

adb shell settings put global policy_control null

Enter fullscreen mode

Exit fullscreen mode

ADB Architecture

In order to facilitate understanding, we start with three instructions, we often use adb start-server, adb devices, adb kill-server.
Then we often see this output interface:

C:\Users\dell>adb devices
List of devices attached
* daemon not running. starting it now at tcp:5037 *
* daemon started successfully *

Enter fullscreen mode

Exit fullscreen mode

So there are three questions here, why is the server, the server corresponds to the server or the server? If the mobile phone is the client, does the server refer to the service opened on the computer. And what is this daemon?

ADB is a C/S architecture application, composed of three parts:

  1. Adb client running on the PC side:
    The command line program «adb» is used to run adb commands from a shell or script. First, the «adb» program tries to locate the ADB server on the host. If the ADB server cannot be found, the «adb» program automatically starts an ADB server. Next, when the adbd of the device and the adb server on the pc side establish a connection, the adb client can send a service request to the ADB servcer;
  2. Adb server running on the PC side:
    ADB Server is a background process running on the host. Its function is to detect the connection and removal of the USB port sensing device, and the start or stop of the emulator instance. ADB Server also needs to send the request of the adb client to the corresponding adbd via usb or tcp;
  3. The resident process adb demon (adbd) running on the device side:
    The program «adbd» runs as a background process in the Android device or emulator system. Its function is to connect to the ADB server and provide some services for the client running on the host;
Дополнительно:  Пищит ноутбук: чего бояться, чего не бояться - запчасти для ноутбуков

Device connection management




Query connected devices/emulators

adb devices

Enter fullscreen mode

Exit fullscreen mode

List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device

Enter fullscreen mode

Exit fullscreen mode

offline —— Indicates that the device is not successfully connected or has no response.

device-The device is connected. Note that this state does not indicate that the Android system has been fully started and operable. The device instance can be connected to adb during the device startup process, but the system will be in an operable state after startup.

no device —— No device/emulator connection.

The above output shows that three devices/emulators are currently connected, and cf264b8f, emulator-5554 and 10.129.164.6:5555 are their SNs respectively. It can be seen from the name emulator-5554 that it is an Android emulator, and 10.129.164.6:5555, which is the serialNumber of the form :, is generally a wirelessly connected device or a third-party Android emulator such as Genymotion.

Common abnormal output:

No device/emulator is successfully connected.

List of devices attached
The device/emulator is not connected to adb or not responding.

List of devices attached
cf264b8f offline



USB connection

To use adb normally through USB connection, you need to ensure several points:

The hardware status is normal.

Including the Android device is in the normal boot state, the USB cable and various interfaces are intact.

Developer options and USB debugging mode for Android devices are turned on.

You can go to «Settings»-«Developer Options»-«Android Debugging» to view.

If you can’t find the developer option in the settings, you need to use an easter egg to show it: click the «version number» 7 times in «Settings»-«About Phone».

The device drive status is normal.

It seems that you don’t need to worry about this under Linux and Mac OS X. Under Windows, you may encounter a situation where you need to install a driver. To confirm this, you can right-click «Computer»-«Properties» and go to the «Device Manager» to view related devices Whether there is a yellow exclamation mark or question mark, if not, it means the drive status is good. Otherwise, you can download a mobile assistant program to install the driver first.

Confirm the status after connecting the computer and the device via the USB cable.

adb devices

Enter fullscreen mode

Exit fullscreen mode

If you can see
xxxxxx device
The connection is successful.



Wireless connection (USB cable required)

In addition to connecting the device and the computer via USB to use adb, you can also use a wireless connection-although there are steps to use USB during the connection process, your device can get rid of the limitation of the USB cable within a certain range after the connection is successful. !

Steps:
Connect the Android device and the computer to run adb to the same local area network, for example to the same WiFi.
Connect the device to the computer via a USB cable.
Make sure that the connection is successful (you can run adb devices to see if the device can be listed).
Let the device monitor TCP/IP connections on port 5555:

adb tcpip 5555

Enter fullscreen mode

Exit fullscreen mode

Disconnect the USB connection.
Find the IP address of the device.
Generally, it can be found in «Settings»-«About Phone»-«Status Information»-«IP Address», or you can use the adb command to view it using the method in the section View Device Information-IP Address below.

Connect the device by IP address.

adb connect <device-ip-address>

Enter fullscreen mode

Exit fullscreen mode

Here is the device IP address found in the previous step.

Confirm the connection status.

adb devices

Enter fullscreen mode

Exit fullscreen mode

If you can see

<device-ip-address>:5555 device

Enter fullscreen mode

Exit fullscreen mode

The connection is successful.
If you can’t connect, please confirm that the Android device and the computer are connected to the same WiFi, and then execute the step of adb connect <device-ip-address> again;
If it still does not work, restart adb via adb kill-server and try again from the beginning.

Disconnect wireless connection
command:

adb disconnect <device-ip-address>

Enter fullscreen mode

Exit fullscreen mode



Wireless connection (no need to use USB cable)

Note: root permission is required.

The previous section «Wireless connection (requires USB cable)» is the method introduced in the official document, which requires the help of USB data cable to achieve wireless connection.
Since we want to achieve wireless connection, can all steps be wireless? The answer is yes.
Install a terminal emulator on the Android device.
Devices that have already been installed can skip this step. The download address of the terminal emulator I use is: Terminal Emulator for Android Downloads
Connect the Android device and the computer to run adb to the same local area network, for example to the same WiFi.
Open the terminal emulator on the Android device and run the commands in sequence:

su
setprop service.adb.tcp.port 5555

Enter fullscreen mode

Exit fullscreen mode

Find the IP address of the Android device.

Generally, it can be found in «Settings»-«About Phone»-«Status Information»-«IP Address», or you can use the adb command to view it using the method in the section View Device Information-IP Address below.

Connect the Android device via adb and IP address on the computer.

adb connect <device-ip-address>

Enter fullscreen mode

Exit fullscreen mode

Here is the device IP address found in the previous step.

If you can see the output connected to :5555, it means the connection is successful.

Section Note 1:

Some devices, such as Xiaomi 5S + MIUI 8.0 + Android 6.0.1 MXB48T, may need to restart the adbd service before step 5, and run on the device’s terminal emulator:

restart adbd

Enter fullscreen mode

Exit fullscreen mode

stop adbd
start adbd

Enter fullscreen mode

Exit fullscreen mode

What is ADB


The full name of Adb is Android Debug Bridge: Android Debug Bridge. The picture below shows the official introduction of Adb by Android:

在这里插入图片描述

It can be seen that the original intention of Android is to use a tool such as adb to assist developers in debugging apk faster and better in the process of developing android applications, so adb has the ability to install and uninstall apk, copy and push files, view device hardware information, and view Functions such as applications occupying resources and executing shell commands on the device;

We can find the adb tool in the platform-tools directory of the android sdk installation directory;

The permission mechanism of the existing Android system is becoming more and more perfect. Many operations that hope to bypass the permission management mechanism are no longer available, but Adb can achieve it. In fact, Adb has a lot of authority to some extent, even on the latest version of the Android system. Because Adb is designed to facilitate debugging by developers, it is necessary to expose some interfaces outside of permissions. So many companies can use this feature to bypass the permission mechanism to do some operations on non-Root non-customized machines (the specific usage is mentioned below), of course, there are also various ways, such as connecting via mobile phone OTG, which will not be repeated here.

Application Management



View application list

The basic command format for viewing the application list is

adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]

Enter fullscreen mode

Exit fullscreen mode



All applications

adb shell pm list packages

Enter fullscreen mode

Exit fullscreen mode

package:com.android.smoketest
package:com.example.android.livecubes
package:com.android.providers.telephony
package:com.google.android.googlequicksearchbox
package:com.android.providers.calendar
package:com.android.providers.media
package:com.android.protips
package:com.android.documentsui
package:com.android.gallery
package:com.android.externalstorage
...
// other packages here
...

Enter fullscreen mode

Exit fullscreen mode



system applications

adb shell pm list packages -s

Enter fullscreen mode

Exit fullscreen mode



third-party usage

adb shell pm list packages -3

Enter fullscreen mode

Exit fullscreen mode

Applications whose package name contains a certain string
For example, to view the list of applications whose package name contains the string mazhuang, command:

adb shell pm list packages mazhuang

Enter fullscreen mode

Exit fullscreen mode

Of course, you can also use grep to filter:

adb shell pm list packages | grep mazhuang

Enter fullscreen mode

Exit fullscreen mode



Install APK

adb install [-lrtsdg] <path_to_apk>

Enter fullscreen mode

Exit fullscreen mode

[100%] /data/local/tmp/1.apk
pkg: /data/local/tmp/1.apk
Success

Enter fullscreen mode

Exit fullscreen mode

The above is the output of the latest version of adb of v1.0.36, which will show the progress percentage of pushing the apk file to the phone.

Using the old version of adb, the output is like this:

12040 KB/s (22205609 bytes in 1.801s)
        pkg: /data/local/tmp/SogouInput_android_v8.3_sweb.apk
Success

Enter fullscreen mode

Exit fullscreen mode

And if the status is Failure, the installation failed, for example:

[100%] /data/local/tmp/map-20160831.apk
        pkg: /data/local/tmp/map-20160831.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]

Enter fullscreen mode

Exit fullscreen mode

when parsing APK file



Adb install internal principle introduction

adb install is actually completed in three steps:

  1. Push the apk file to /data/local/tmp.
  2. Call pm install to install.
  3. Delete the corresponding apk file under /data/local/tmp.



Uninstall the app

adb uninstall [-k] <packagename>

Enter fullscreen mode

Exit fullscreen mode

<packagename> represents the package name of the application, and the -k parameter is optional, meaning that the application is uninstalled but the data and cache directory are retained.
Command example:

adb uninstall com.qihoo360.mobilesafe

Enter fullscreen mode

Exit fullscreen mode

Means to uninstall 360 Mobile Guard.



Clear application data and cache

adb shell pm clear <packagename>

Enter fullscreen mode

Exit fullscreen mode

<packagename> represents the application name package. The effect of this command is equivalent to clicking «Clear Cache» and «Clear Data» on the application information interface in the settings.

adb shell pm clear com.qihoo360.mobilesafe

Enter fullscreen mode

Exit fullscreen mode

Means to clear the data and cache of 360 Mobile Guard.



View foreground activity

adb shell dumpsys activity activities | grep mFocusedActivity

Enter fullscreen mode

Exit fullscreen mode

mFocusedActivity: ActivityRecord{8079d7e u0 com.cyanogenmod.trebuchet/com.android.launcher3.Launcher t42}

Enter fullscreen mode

Exit fullscreen mode

Among them, com.cyanogenmod.trebuchet/com.android.launcher3.Launcher is the Activity currently in the foreground.



View running Services

adb shell dumpsys activity services [<packagename>]

Enter fullscreen mode

Exit fullscreen mode

The <packagename> parameter is not necessary. Specifying <packagename> means viewing the Services related to a certain package name, and not specifying it means viewing all Services.

<packagename> does not have to give a complete package name. For example, if you run adb shell dumpsys activity services org.mazhuang, then the package name org.mazhuang.demo1, org.mazhuang.demo2, org.mazhuang123 and other related Services will be listed come out.



View application details

adb shell dumpsys package <packagename>

Enter fullscreen mode

Exit fullscreen mode

<packagename> represents the application package name.

Activity Resolver Table:
  Non-Data Actions:
      android.intent.action.MAIN:
        5b4cba8 org.mazhuang.guanggoo/.SplashActivity filter 5ec9dcc
          Action: "android.intent.action.MAIN"
          Category: "android.intent.category.LAUNCHER"
          AutoVerify=false

Registered ContentProviders:
  org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider:
    Provider{7a3c394 org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider}

ContentProvider Authorities:
  [org.mazhuang.guanggoo.fileProvider]:
    Provider{7a3c394 org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider}
      applicationInfo=ApplicationInfo{7754242 org.mazhuang.guanggoo}

Key Set Manager:
  [org.mazhuang.guanggoo]
      Signing KeySets: 501

Packages:
  Package [org.mazhuang.guanggoo] (c1d7f):
    userId=10394
    pkg=Package{55f714c org.mazhuang.guanggoo}
    codePath=/data/app/org.mazhuang.guanggoo-2
    resourcePath=/data/app/org.mazhuang.guanggoo-2
    legacyNativeLibraryDir=/data/app/org.mazhuang.guanggoo-2/lib
    primaryCpuAbi=null
    secondaryCpuAbi=null
    versionCode=74 minSdk=15 targetSdk=25
    versionName=1.1.74
    splits=[base]
    apkSigningVersion=2
    applicationInfo=ApplicationInfo{7754242 org.mazhuang.guanggoo}
    flags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP]
    privateFlags=[ RESIZEABLE_ACTIVITIES]
    dataDir=/data/user/0/org.mazhuang.guanggoo
    supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
    timeStamp=2017-10-22 23:50:53
    firstInstallTime=2017-10-22 23:50:25
    lastUpdateTime=2017-10-22 23:50:55
    installerPackageName=com.miui.packageinstaller
    signatures=PackageSignatures{af09595 [53c7caa2]}
    installPermissionsFixed=true installStatus=1
    pkgFlags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP]
    requested permissions:
      android.permission.READ_PHONE_STATE
      android.permission.INTERNET
      android.permission.ACCESS_NETWORK_STATE
      android.permission.ACCESS_WIFI_STATE
      android.permission.READ_LOGS
      android.permission.WRITE_EXTERNAL_STORAGE
      android.permission.READ_EXTERNAL_STORAGE
    install permissions:
      android.permission.INTERNET: granted=true
      android.permission.ACCESS_NETWORK_STATE: granted=true
      android.permission.ACCESS_WIFI_STATE: granted=true
    User 0: ceDataInode=1155675 installed=true hidden=false suspended=false stopped=true notLaunched=false enabled=0
      gids=[3003]
      runtime permissions:
        android.permission.READ_EXTERNAL_STORAGE: granted=true
        android.permission.READ_PHONE_STATE: granted=true
        android.permission.WRITE_EXTERNAL_STORAGE: granted=true
    User 999: ceDataInode=0 installed=false hidden=false suspended=false stopped=true notLaunched=true enabled=0
      gids=[3003]
      runtime permissions:


Dexopt state:
  [org.mazhuang.guanggoo]
    Instruction Set: arm64
      path: /data/app/org.mazhuang.guanggoo-2/base.apk
      status: /data/app/org.mazhuang.guanggoo-2/oat/arm64/base.odex [compilation_filter=speed-profile, status=kOatUpToDa
      te]

Enter fullscreen mode

Exit fullscreen mode

Simulation key/input

Usage: input [<source>] <command> [<arg>...]

The sources are:
      mouse
      keyboard
      joystick
      touchnavigation
      touchpad
      trackball
      stylus
      dpad
      gesture
      touchscreen
      gamepad

The commands and default sources are:
      text <string> (Default: touchscreen)
      keyevent [--longpress] <key code number or name> ... (Default: keyboard)
      tap <x> <y> (Default: touchscreen)
      swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
      press (Default: trackball)
      roll <dx> <dy> (Default: trackball)

Enter fullscreen mode

Exit fullscreen mode

For example, to simulate a click: //Click the position of the coordinate point x=50 y=250 on the screen.

adb shell input tap 50 250



Power button

db shell input keyevent 26

Enter fullscreen mode

Дополнительно:  Почему не открывается Гугл Хром на компьютере, что делать

Exit fullscreen mode

The effect is equivalent to pressing the power button.

adb shell input keyevent 82

Enter fullscreen mode

Exit fullscreen mode



HOME key

adb shell input keyevent 3

Enter fullscreen mode

Exit fullscreen mode



return key

adb shell input keyevent 4

Enter fullscreen mode

Exit fullscreen mode



volume control

adb shell input keyevent 24

Enter fullscreen mode

Exit fullscreen mode

lower the volume:

adb shell input keyevent 25

Enter fullscreen mode

Exit fullscreen mode

adb shell input keyevent 164

Enter fullscreen mode

Exit fullscreen mode



Media Control

play / Pause:

adb shell input keyevent 85

Enter fullscreen mode

Exit fullscreen mode

adb shell input keyevent 86

Enter fullscreen mode

Exit fullscreen mode

Play the next song:

adb shell input keyevent 87

Enter fullscreen mode

Exit fullscreen mode

Play the previous song:

adb shell input keyevent 88

Enter fullscreen mode

Exit fullscreen mode

adb shell input keyevent 126

Enter fullscreen mode

Exit fullscreen mode

adb shell input keyevent 127

Enter fullscreen mode

Exit fullscreen mode



Turn on/off the screen

Light up the screen:

adb shell input keyevent 224

Enter fullscreen mode

Exit fullscreen mode

Turn off the screen:

adb shell input keyevent 223

Enter fullscreen mode

Exit fullscreen mode



Slide to unlock

If the lock screen does not have a password and is unlocked by swiping gestures, you can unlock it by input swipe.

Command (parameters are based on model Nexus 5, for example, swipe up gesture to unlock):

adb shell input swipe 300 1000 300 500

Enter fullscreen mode

Exit fullscreen mode

The parameters 300 1000 300 500 respectively represent the start point x coordinate, the start point y coordinate, the end point x coordinate, and the end point y coordinate.



Enter text

When the focus is on a text box, you can use the input command to enter text.

adb shell input text hello

Enter fullscreen mode

Exit fullscreen mode

Now hello appears in the text box.

View log

The Android system log is divided into two parts, the underlying Linux kernel log is output to /proc/kmsg, and the Android log is output to /dev/log.



Android log

[adb] logcat [<option>] ... [<filter-spec>] ...

Enter fullscreen mode

Exit fullscreen mode

Filter logs by level

-V —— Verbose (lowest, most output)
-D —— Debug I —— Info
-W —— Warning
-E —— Error
-F—— Fatal
-S —— Silent (the highest, nothing is output)

Filtering logs by a certain level will output logs of that level and above.

For example, the command:

adb logcat *:W

Enter fullscreen mode

Exit fullscreen mode

Warning, Error, Fatal and Silent logs will be output.

(Note: Under macOS, you need to add double quotation marks to :W so that * as the tag parameter, such as adb logcat «:W», otherwise an error will be reported no matches found: *:W.)

Filter logs by tag and level

For example, the command:

adb logcat ActivityManager:I MyApp:D *:S

Enter fullscreen mode

Exit fullscreen mode

You can use the adb logcat -v <format> option to specify the log output format.

The default format. The format is:

D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0

The format is:

D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine)

The format is:

D/HeadsetStateMachine: Disconnected process message: 10, size: 0
To
-raw

The format is:

Disconnected process message: 10, size: 0

The format is:

08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0

The format is:

08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0

The format is:

The specified format can be used simultaneously with the above filtering. such as:

adb logcat -v long ActivityManager:I *:S

Enter fullscreen mode

Exit fullscreen mode

adb logcat -c

Enter fullscreen mode

Exit fullscreen mode



Kernel log

adb shell dmesg

Enter fullscreen mode

Exit fullscreen mode

<6>[14201.684016] PM: noirq resume of devices complete after 0.982 msecs
<6>[14201.685525] PM: early resume of devices complete after 0.838 msecs
<6>[14201.753642] PM: resume of devices complete after 68.106 msecs
<4>[14201.755954] Restarting tasks ... done.
<6>[14201.771229] PM: suspend exit 2016-08-28 13:31:32.679217193 UTC
<6>[14201.872373] PM: suspend entry 2016-08-28 13:31:32.780363596 UTC
<6>[14201.872498] PM: Syncing filesystems ... done.

Enter fullscreen mode

Exit fullscreen mode

Through the kernel log we can do some things, such as measuring the kernel startup time, find the time before the Freeing init memory line in the kernel log after the system is started.



Restart to Recovery mode

adb reboot recovery

Enter fullscreen mode

Exit fullscreen mode



Restart from Recovery to Android

adb reboot

Enter fullscreen mode

Exit fullscreen mode



Restart to Fastboot mode

adb reboot bootloader

Enter fullscreen mode

Exit fullscreen mode



Update the system via sideload

If we download the system update package corresponding to the Android device to the computer, we can also complete the update through adb.

Take the update in Recovery mode as an example:

Restart to Recovery mode.

adb reboot recovery

Enter fullscreen mode

Exit fullscreen mode

Operate on the Recovery interface of the device to enter Apply update-Apply from ADB.

*Note: Different Recovery menus may be different from this. Some first-level menus have Apply update from ADB. *

*Upload and update the system via adb. *

adb sideload <path-to-update.zip>

Enter fullscreen mode

Exit fullscreen mode



More adb shell commands

The Android system is based on the Linux kernel, so many commands in Linux have the same or similar implementations in Android and can be called in adb shell. The adb shell command has been used in the previous part of this document.



View process

adb shell ps

Enter fullscreen mode

Exit fullscreen mode

USER PID PPID VSIZE RSS WCHAN PC NAME
root 1 0 8904 788 ffffffff 00000000 S /init
root 2 0 0 0 ffffffff 00000000 S kthreadd
...
u0_a71 7779 5926 1538748 48896 ffffffff 00000000 S com.sohu.inputmethod.sogou:classic
u0_a58 7963 5926 1561916 59568 ffffffff 00000000 S org.mazhuang.boottimemeasure
...
shell 8750 217 10640 740 00000000 b6f28340 R ps

Enter fullscreen mode

Exit fullscreen mode

Meaning of each column:



View real-time resource usage

adb shell top

Enter fullscreen mode

Exit fullscreen mode

User 0%, System 6%, IOW 0%, IRQ 0%
User 3 + Nice 0 + Sys 21 + Idle 280 + IOW 0 + IRQ 0 + SIRQ 3 = 307

  PID PR CPU% S #THR VSS RSS PCY UID Name
 8763 0 3% R 1 10640K 1064K fg shell top
  131 0 3% S 1 0K 0K fg root dhd_dpc
 6144 0 0% S 115 1682004K 115916K fg system system_server
  132 0 0% S 1 0K 0K fg root dhd_rxf
 1731 0 0% S 6 20288K 788K fg root /system/bin/mpdecision
  217 0 0% S 6 18008K 356K fg shell /sbin/adbd
 ...
 7779 2 0% S 19 1538748K 48896K bg u0_a71 com.sohu.inputmethod.sogou:classic
 7963 0 0% S 18 1561916K 59568K fg u0_a58 org.mazhuang.boottimemeasure
 ...

Enter fullscreen mode

Exit fullscreen mode

Meaning of each column:

Usage: top [-m max_procs] [-n iterations] [-d delay] [-s sort_column] [-t] [-h]
    -m num shows how many processes at most
    -n num exit after refreshing how many times
    -d num refresh interval (unit: second, default value 5)
    -s col Sort by a column (available col values: cpu, vss, rss, thr)
    -t display thread information
    -h show help document

Enter fullscreen mode

Exit fullscreen mode



View process UID

There are two options:

adb shell dumpsys package <packagename> | grep userId=

Enter fullscreen mode

Exit fullscreen mode

$ adb shell dumpsys package org.mazhuang.guanggoo | grep userId=
   userId=10394

Enter fullscreen mode

Exit fullscreen mode

$ adb shell
gemini:/ $ ps | grep org.mazhuang.guanggoo
u0_a394 28635 770 1795812 78736 SyS_epoll_ 0000000000 S org.mazhuang.guanggoo
gemini:/$ cat /proc/28635/status | grep Uid
Uid: 10394 10394 10394 10394
gemini:/$

Enter fullscreen mode

Exit fullscreen mode



Other

Basic usage


What can adb do? The answer is that all operations that can be performed on mobile phones can be implemented with adb. That is to say, if you play 6, your touch screen is completely broken, and the display is completely broken, just give you a motherboard, and you can still complete the actions you want to do. Of course, this is not recommended in general scenarios, efficiency is the priority.



Command syntax



Specify the target device for the command

If there are multiple devices/emulators connected, you need to specify the target device for the command.

When multiple devices/emulators are connected, the -s parameter is commonly used. The serialNumber can be obtained through the adb devices command. Such as:

$ adb devices

List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device

Enter fullscreen mode

Exit fullscreen mode

Cf264b8f, emulator-5554 and 10.129.164.6:5555 in the output are serialNumber.

For example, you want to specify the device cf264b8f to run the adb command to obtain the screen resolution:

adb -s cf264b8f shell wm size

Enter fullscreen mode

Exit fullscreen mode

Another example is to install an application on the device 10.129.164.6:5555 (the format of serialNumber in this form is :, which is generally a wirelessly connected device or a third-party Android emulator such as Genymotion):

adb -s 10.129.164.6:5555 install test.apk

Enter fullscreen mode

Exit fullscreen mode



start stop

Start the adb server command:

adb start-server

Enter fullscreen mode

Exit fullscreen mode

(Generally, there is no need to manually execute this command. If you find that the adb server is not started when running the adb command, it will be automatically activated.)

Stop the adb server command:

adb kill-server

Enter fullscreen mode

Exit fullscreen mode



View adb version

adb version

Enter fullscreen mode

Exit fullscreen mode

Android Debug Bridge version 1.0.36
Revision 8f855a3d9b35-android

Enter fullscreen mode

Exit fullscreen mode



Run adbd as root

The operating principle of adb is that the adb server on the PC side establishes a connection with the daemon adbd on the mobile phone side, and then the adb client on the PC side forwards the command through the adb server, and adbd parses and runs after receiving the command.

So if adbd is executed with normal permissions, some commands that require root permissions to execute cannot be directly executed with adb xxx. At this time, you can execute commands after adb shell and then su, or you can let adbd execute with root privileges, which can execute high-privileged commands at will.

adb root

Enter fullscreen mode

Exit fullscreen mode

restarting adbd as root

Enter fullscreen mode

Exit fullscreen mode

Now run adb shell again and see if the command line prompt becomes #?

Some mobile phones cannot be executed with root privileges through the adb root command after rooting. For example, some Samsung models will prompt adbd cannot run as root in production builds. You can install adbd Insecure first, and then adb root Try it.

Correspondingly, if you want to restore adbd to non-root privileges, you can use the adb unroot command.



Specify the network port of adb server

adb -P <port> start-server

Enter fullscreen mode

Exit fullscreen mode

The default port is 5037.

Interact with the application

<INTENT> The parameters are very flexible, and correspond to the Intent in the code when writing Android programs.

<INTENT> can also carry data, just like Bundle when writing code:



Activating Activity

adb shell am start [options] <INTENT>

Enter fullscreen mode

Exit fullscreen mode

adb shell am start -n com.tencent.mm/.ui.LauncherUI

Enter fullscreen mode

Exit fullscreen mode

Indicates that the main interface of WeChat is activated.

adb shell am start -n org.mazhuang.boottimemeasure/.MainActivity --es "toast" "hello, world"

Enter fullscreen mode

Exit fullscreen mode

It means to call up org.mazhuang.boottimemeasure/.MainActivity and pass it the string data key-value pair toast-hello, world.



Transfer Service

adb shell am startservice [options] <INTENT>

Enter fullscreen mode

Exit fullscreen mode

adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService

Enter fullscreen mode

Exit fullscreen mode

Indicates that a certain service of WeChat has been activated.



Send broadcast

adb shell am broadcast [options] <INTENT>

Enter fullscreen mode

Exit fullscreen mode

It can be broadcast to all components or only to specified components.

For example, to broadcast BOOT_COMPLETED to all components:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

Enter fullscreen mode

Exit fullscreen mode

For another example, only broadcast BOOT_COMPLETED to org.mazhuang.boottimemeasure/.BootCompletedReceiver:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver

Enter fullscreen mode

Exit fullscreen mode

(The above broadcasts can all be triggered by adb)



Forcibly stop the application

adb shell am force-stop <packagename>

Enter fullscreen mode

Exit fullscreen mode

adb shell am force-stop com.qihoo360.mobilesafe

Enter fullscreen mode

Exit fullscreen mode

Means to stop all the processes and services of 360 Security Guard.



Disable apps and start

    
    

Enter fullscreen mode

Exit fullscreen mode

     

Enter fullscreen mode

Exit fullscreen mode

    

Enter fullscreen mode

Exit fullscreen mode



Revoke the permissions of the application

  1. Grant permissions to the app. Only optional permissions declared by the application can be granted
     

Enter fullscreen mode

Exit fullscreen mode

For example: adb -d shell pm grant packageName android.permission.BATTERY_STATS

  1. Cancel app authorization
     

Enter fullscreen mode

Exit fullscreen mode

Disclaimer: The above order is an unconventional order. I am not responsible for any damage to your equipment, forcible stop, etc. You are performing this operation on your device, and you are responsible for it.

Оцените статью
Master Hi-technology
Добавить комментарий