Android驱动笔记(3)——adb(不定期更新)

 adb是安卓调试必不可少的工具之一,可在Android 调试桥 (adb)中去了解具体的内容。

3.1、adb的工作原理

 当启动某个adb客户端时,会先检查是否有adb服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地TCP端口5037绑定,并监听adb客户端发出的命令。
 然后,服务器会与所有正在运行的设备建立连接。它通过扫描5555到5585之间(该范围供前16个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现adb守护进程(adbd),便会与相应的端口建立连接。
注意:每个模拟器都使用一对按顺序排列的端口-用于控制台连接的偶数号端口和用于adb连接的奇数号端口。

例如:
模拟器 1,控制台:5554
模拟器 1,adb:5555
模拟器 2,控制台:5556
模拟器 2,adb:5557
依此类推…

 如上所示,在端口 5555 处与 adb 连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。
 服务器与所有设备均建立连接后,便可以使用adb命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个adb客户端的命令,因此可以从任意客户端(或从某个脚本)控制任意设备。

3.2、(高通平台)常用的adb命令

 进入设备和刷机:

查看当前连接到电脑的安卓设备: adb device
进入并调试这台设备: adb -s <device> shell
fastboot模式: adb reboot bootloader
9008: adb reboot edl 或 fastboot oem edl

 获取日志信息:

diag立即生效: adb shell setprop sys.usb.config diag,serial_cdev,rmnet,adb
diag重启生效: adb shell setprop persist.sys.usb.config diag,serial_cdev,rmnet,adb
获取logcat log: 启动adb shell setprop persist.service.logd.enable 1

 信息命令:

软件版本: getprop ro.build.version.internal
boardid: getprop ro.boot.hwversion
RAM\ROM信息: adb shell ghr
CPU id: cat /proc/serial_num
UFS id: cat /d/ufshcd0/dump_string_desc_serial
EMMCid: cat /sys/class/block/mmcblk0/device/serial
sim卡状态: getprop gsm.sim.state
熔丝状态: cat /proc/fuse_state
GPU频率: cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq
CPU频率: cat /sys/devices/system/cpu/<cpu-num>/cpufreq/scaling_cur_freq

 电量命令:

USB电压: cat sys/class/power_supply/usb/voltage_now
电池信息: cat /sys/class/power_supply/bms/

 器件命令:

使能禁用TP: adb shell “echo * > /proc/tp_work”
TPlockdown信息: adb shell "cat /proc/tp_lockdown_info"
wifi的扫描结果: adb shell "wpa-cli -iwlan0 scan_result"
NFC状态: adb shell "dumpsys nfc | grep mState"或adb shell "dumpsys nfc | grep mState=on | wc -l"
启动NFC,wifi和蓝牙: adb shell "svc nfc enable"
NFC CPLC: adb shell "pnscr -p ese_cplc"或adb shell "pnscr -p ese_cplc | grep CPLC: | cut -b 7-90"
NFC Dieid: adb shell "pnscr -p ndi"或adb shell "pnscr -p ndi | grep Die | cut -b 9-40"
查看sensor:adb shell see_workhorse
查看sensor状态:adb shell dumpsys sensorservice

3.3、次常用的adb命令

 获取img镜像(以persist.img为例):

adb root
adb remount
adb shell
dd if=/dev/block/by-name/persist of=persist.img
adb pull *.img out

 待机电流休眠状态的抓取:

adb shell cat /d/rpm_stats > rpm_state_1.txt
adb shell cat /d/rpm_master_stats > rpm_master_stats_1.txt
adb shell dumpsys batterystats --reset
5分钟后
adb shell cat /d/rpm_stats > rpm_state_2.txt
adb shell cat /d/rpm_master_stats > rpm_master_stats_2.txt
mkdir %LOG_PATH%\sdcard_log
adb pull /sdcard/log %LOG_PATH%\sdcard_log

 重启modem或adsp的命令:

adb shell echo "related" > /sys/bus/msm_subsys/devices/subsys4/restart_level
qxdm log command: send_data 75 37 03 00 00
adb shell gsort --check
adb shell echo "related" > /sys/bus/msm_subsys/devices/subsys2/restart_level
in adsp send_data 75 37 03 48 00 

3.4、如何在linux下安装adb工具

sudo apt-get install android-tools-adb

 将USB插入电脑,令ubuntu识别,在虚拟机右下角有USB图标,点击右键连接。操作与windows下ADB工具相同。

附:某手机品牌暗码:

“*#*#284#*#*”抓取bugreport
“*#*#6484#*#*”进入工程模式
“*#*#4636#*#*”info设备信息
“*#*#1227#*#*”打开T卡log:文件管理器/内部存储器/log
posted @ 2020-04-17 11:20  hansenn  阅读(2169)  评论(0编辑  收藏  举报