zoukankan      html  css  js  c++  java
  • 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
    RAMROM信息: 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
    
  • 相关阅读:
    hadoop 2.x 简单实现wordCount
    httpClient连接超时设置
    Java io使用简介
    log4j使用教程
    F#中的自定义隐式转换
    Computation expressions and wrapper types
    Introducing 'bind'
    Understanding continuations
    Computation expressions: Introduction
    MySQL优化总结,百万级数据库优化方案
  • 原文地址:https://www.cnblogs.com/hansenn/p/12718619.html
Copyright © 2011-2022 走看看