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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM