ADB命令笔记

Android调试桥介绍

  • ADB,即Android Debug Bridge,它是Android提供的一个通用的调试工具,adb.exe存放在SDK开发包platform-tools目录下。
    ADB
  • ADB,它是一个客户端/服务器架构的命令行工具,主要由三部分组成。
  • 1) adb客户端:一个在用户用于开发程序的电脑上运行的客户端。可以通过命令行控制台(cmd)使用adb命令来启动客户端。其他一些基于Android系统的工具,如ADT插件和DDMS同样可以产生adb客户端。
  • 2) adb服务器:一个在用户用于开发的机器上作为后台进程运行的服务器,该服务器负责管理客户端与运行在模拟器或设备上的adb守护程序(deamon)之间的通信。
  • 3) adb deamon(守护进程):一个以后台进程的形式运行于模拟器或设备上的守护程序(deamon)。
  • 当服务器运行,adb服务器就会绑定本地TCP端口5037并监听adb客户端发来的命令。接着服务器将所有运行中的模拟器或设备实例建立连接,它通过扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备。
  • 任何模拟器或设备实例都会取得两个连接端口,一个偶数端口用来控制与控制台的连接,和一个奇数端口用来控制与adb连接。例如:
    Emulator 1,console:5554
    Emulator 1,adb:5555
  • 使用adb控制、调试android设备,准备前提:需要使用USB数据线连接PC和android设备、开启设备的USB调试模式(“开发者选项”菜单项内)
  • 建议将adb.exe放到系统的“PATH”环境变量中,如下:D:\adt\sdk\platform-tools;

ADB相关指令实例

adb devices

  • adb devices,通过该指令用户可以了解到目前连接的设备/模拟器的状态相关信息。
  • 输出信息主要包括2列内容,第一列内容为设备的序列号,第二列为设备的状态信息。设备序列号是用来唯一表示一个模拟器或者设备的一串字符串,通常模拟器是以“<设备类型-<端口号>”的形式表示序列号。
  • 状态信息可能包含以下3种不同状态:
  • 1) device状态:表示设备或模拟器已经连接到adb服务器上。但这个状态并不代表设备或模拟器已经启动完毕并可以进行操作,因为Android系统在启动时会先连接到adb服务器上。
  • 2) offline状态:表示设备或模拟器没有连接到adb服务器上或者没有响应。
  • 3) no device 状态:表示无设备或模拟器连接。

adb intsall

  • adb install 安装包路径(c:…\test.apk),完成将手机应用安装到设备或模拟器的操作。
  • 连接多个设备或模拟器,指定针对哪台设备进行安装:加入’-s’参数:adb -s 设备序列号(Emulator 1-5554) install 安装包路径(c:…\test.apk)如若不指定设备,会提示:more than one device and emulator。
  • 已经安装了该应用,覆盖原来安装软件并保留数据:加入’-r’参数:adb -s 设备序列号(Emulator 1-5554) install -r 安装包路径(c:…\test.apk)。

adb uninstall

  • adb -s 设备序列号(Emulator 1-5554) uninstall 已安装应用包名(com.test.cn),完成卸载指定设备或模拟器的手机应用。
  • 卸载应用时希望保留配置和缓存文件,输入’shell pm uninstall -k’:: adb -s 设备序列号(Emulator 1-5554) shell pm uninstall -k 已安装应用包名(com.test.cn)

adb pull

  • 场景:将手机SD卡“tmp”目录下的“test.txt”下载到我的电脑“D:”盘根目录下:adb pull /sdcard/tmp/test.txt d:/
  • 同样,也可以使用参数’-s’指定哪台设备或模拟器的文件下载到电脑上:adb -s 设备序列号(Emulator 1-5554) pull /sdcard/tmp/test.txt d:/
  • 在Eclipse集成开发环境中也可以实现文件的传输,通过“Devices”标签选择设备与文件,点击“Pull a file from the device”,选择文件下载保存路径就可以了。

adb push

  • 场景:将电脑端的“test.txt”文件传送到手机的SD卡上:adb push d:/test.txt /sdcard。
  • 同样,也可以使用参数’-s’指定传送到哪台设备或模拟器上:adb -s 设备序 列号(Emulator 1-5554) push d:/test.txt /sdcard。
  • “adb push”指令不仅能够传送文件,也能传送文件夹。
  • 在Eclipse集成开发环境中也可以实现文件的传输,通过“File Explorer”标签选择传送的文件,点击“Push a file onto the device”,选择文件保存路径就可以了。

adb shell

  • Android系统是基于Linux系统开发的,支持常见的Linux命令,这些命令均保存在手机的“system/bin”文件下,如:ls、cat、df、uptime、ps、kill。我们可以通过“adb shell”指令后直接加上相关的指令及其参数来执行。
  • 在操作过程中,需要切换为“root”用户。

adb shell dumpsys battery

  • adb shell dumpsys battery,查看电池电量的相关信息。
  • 部分输出信息的含义:
  • 1) AC powered:false,表示是否连接电源供电,false表示没有使用电源供电。
  • 2) USB powered:true,表示是否使用USB供电,true表示使用USB供电。
  • 3) status:5,表示电池充电状态,5表示电池电量是满的(对应“BATTERY_STATUS_FULL”:5)
  • 4) health:2,表示电池的健康状况,2表示电池的状态为良好(对应“BATTERY_HEALTH_GOOD”:2)
  • 5) present:true,表示手机上是否有电池,true 表示有电池。
  • 6) level:100,表示当前剩余的电量信息。如果使用的是模拟器则永远是50,表示剩余电量为50%。
  • 7) scale:100,表示当前电池电量的最大值,通常该值为100。这里里的电池电量是按百分比显示的。
  • 8) voltage:4332,表示当前电池的电压,模拟器上的电压为0,这里电压单位为毫伏(mv)。
  • 9) temperature:314,表示当前电池的温度,314表示31.4度,其单位为0.1度。
  • 10) technology:LI-ion,表示电池使用的技术,Li-ion表示锂电池。

adb shell dumpsys WiFi

  • adb shell dumpsys WiFi,查看无线网络的信息。由于输出内容很多,可以加入“|more”控制输出内容,按空格继续显示下页。
  • 部分输出信息的含义:
  • 1) Wi-Fi:enable,表示wifi的连接状态信息,共包含5中状态:
    • WIFI_STATE_DISABLED:Wifi已关闭。
    • WIFI_STATE_DISBLING:Wifi正在关闭中。
    • WIFI_STATE_ENABLED:Wifi已启用。
    • WIFI_STATE_ENABLING:Wifi正在启动中。
    • WIFI_STATE_UNKNOWN:未知wifi状态。
  • 2) Internal stats,在该部分罗列了一些关于wifi的设备名称、wifi的名称、状态、IP地址、MAc地址、网络加密方式等信息。

adb shell dumpsys power

  • adb shell dumpsys power,查看电源管理的相关信息。
  • 可以输入“findstr”或“grep”只输出我们想要查看的内容:adb shell dumpsys power findstr “mScreenOffTimeoutSetting”

adb shell dumpsys telephony.registry

  • adb shell dumpsys telephony.registry,查看电话相关信息
  • 部分输出信息的含义:
  • 1) mCallState,表示呼叫状态。0:表示待机状态,1:表示来电尚未接听状态,2:表示电话占线。
  • 2) mCallncomingNumber,表示最近一次来电的电话号码。
  • 3) mServiceState,表示服务状态。0:表示正常使用状态,1:表示电话没有连接到任何电信运营网络,2:表示电话只能拨打紧急呼叫号码,3:表示电话已关机。
  • 4) mSignalStrength,表示信号强度信息。
  • 5) mMessageWaiting,表示是否在等待无线电消息。
  • 6) mCallForwarding,表示是否启用了呼叫转移。
  • 7) mDataActivty,表示无线数据通话情况。0:表示没有通话,1:表示正在接收IP PPP信号,2:表示正在发送IP PPP信号,3:表示正在接收和发送IP PPP信号。
  • 8) mDataConnectionState,表示无线数据连接情况。0:表示无数据连接,1:表示正在创建数据连接,2:表示正在发送IP PPP信号,3:表示电话已关机。
  • 9) mDataConnectionPossible,表示是否有数据连接。
  • 10) mDataConnectionReason,表示数据连接的原因。
  • 11) mDataConnectionApn,表示Access Point Name,接入点名称。
  • 12) mDataConnectionLinkproperties,表示数据连接的链路属性。
  • 13) mDataConnectionCapbilities,表示数据链路连接的能力。
  • 14) mCellLocation,表示基站相关信息。
  • 15) registrations,表示等级记录计数。

adb shell cat /proc/cpuinfo

  • Anddroid系统中的“/proc”分区保存系统各种实时信息,如:CPU、内存 等。
  • adb shell cat /proc/cpuinfo,查看CPU硬件的相关信息。

adb shell cat /proc/meminfo

  • adb shell cat /proc/meminfo,查看内存的相关信息。

adb shell cat /proc/iomem

  • adb shell cat /proc/meminfo,查看I/O内存分区的相关信息。

获取手机型号

  • adb shell cat /system/build.prop | findstr “ro.product.model”

获取手机处理器信息

  • adb shell cat /proc/cpuinfo | findstr “Processor”

获取手机内存信息

  • adb shell cat /proc/meminfo | findstr “MemTotal”

获取手机屏幕分辨率信息

  • adb shell dumpsys window | findstr “Display”

获取手机系统版本信息

  • adb shell getprop ro.build.version.release

获取手机内核信息

  • adb shell cat /proc/version

获取手机运营商信息

  • adb shell getprop gsm.operator.alpha

获取手机网络类型信息

  • adb shell getprop gsm.network.type

获取手机串号信息

  • adb shell dumpsys iphonesubinfo | findstr “Device ID”

获取手机Android系统各个分区的相关信息

  • adb shell df

获取Linux内核的环形缓冲区信息

  • adb shell –》su root –》 dmesg
  • 输出内容较多,可以将输出内容放入到SD卡的log.txt文件中:dmesg > /sdcard/log.txt

获取手机Android系统当前状态的相关信息

  • adb shell dumpstate
  • 输出内容大概包括:
  • 1) 系统构建的版本细心
  • 2) 网络相关信息
  • 3) 系统内核的相关信息
  • 4) 正常运行时间信息
  • 5) 内存使用情况信息
  • 6) CPU使用情况信息
  • 7) 进程相关情况信息
  • 8) 正在运行的应用列表相关信息
  • 9) 长在运行的服务列表相关信息
  • 10) 系统中已安装的应用包相关信息
  • ……

获取设备序列号

  • adb get-serialno
  • IMEI:International Mobile Equipment Identify,国际移动设备识别码的缩写,俗称:手机串号、手机串码、手机序列号,用于GSM移动wang落中识别每一步独立的手机。

获取模拟器/设备的当前状态

  • adb get-state
  • 状态信息:device、offline、on device

adb logcat

  • 查看和跟踪系统日志缓冲区信息,每一条日志消息都有一个标记和优先级与其关联。标记是一个极短的字符串,用于表示原始消息的来源。日志的优先级为每一行的首字符,其可能为:V、D、I、W、E。
  • 1) V:代表冗余级别的日志信息
  • 2) D:代表调试级别的日志信息
  • 3) I:代表信息级别的日志信息
  • 4) W:代表警告级别的日志信息
  • 5) E:代表错误级别的日志信息
  • 只想输出优先级别大于“警告”级别的日志信息:adb logcat *:W
  • Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,可以使用”-b”参数,查看附加的缓冲区
  • 1) radio:查看包含无线/电话相关的缓冲区消息
  • 2) events:查看事件相关消息
  • 3) main:查看主缓冲区相关的消息
  • 以查看主缓冲区为例:adb logcat -b main

adb bugreport

  • 查看Android启动过程的日志信息,以及启动后的系统状态,包括进程列表、内存信息、VM信息等。
  • 针对输出信息简单的介绍:
  • 1) MEMORY INFO:读取文件/proc/meminfo,查看系统内存使用状态信息。
  • 2) CPU INFO:执行”/system/bin/top -n 1 -d 1 -m 30 -t”命令,查看系统CPU使用状态信息。
  • 3) PROCARNK:执行”/system/bin/procrank”命令,查看内容使用状态。
  • 4) VIRTUAL MEMORY STATS:读取文件/proc/vmstat,查看虚拟内存分配情况,vmalloc申请的内存位于vmalloc_start~vmalloc_end之间,虽然逻辑上它们是连续的,但是物理上它们不要求连续。
  • 5) VMALLOC INFO:读取文件/proc/wmallocinfo,查看虚拟内存分配情况。
  • 6) SLAB INFO:读取文件/proc/slabinfo,查看分配器SLAB的一些信息。
  • 7) ZONEINFO:读取文件/proc/zoneinfo,查看区域信息。
  • 8) SYSTEM LOG:执行”/system/bin/logcat -v time -f *:v”命令,输出LOG,用于分析系统的当前状态。
  • 9) VM TRACES:读取文件/data/anr/traces.txt。因为每个程序都是在各自的VM中运行的,这个LOG显示各自VM的一些traces。
  • 10) EVENT LOG TAGS:读取文件/etc/event-log-tags。
  • 11) EVENT LOG:执行”/stystem/bin/logcat -b events -v time -d *:v”,输出一些event的log信息。
  • 12) RADIO LOG:执行”/stystem/bin/logcat -b radio -v time -d *:v”,输出一些无线设备的连接状态,如GSM、PHONE等信息。
  • 13) NETWORK STATE:获取网络接状态和路由相关信息。
  • 14) SYSTEM PROPERTIES:获取一系系统属性,如Version、Services、netwok等消息。
  • 15) KERNEL LOG:显示Android内核输出的日志信息。
  • 16) KERNEL WAKELOCKS:内核对一些程式和服务唤醒与休眠的信息。
  • 17) PROCESSES:显示当前进程信息。
  • 18) PROCESSES AND THREADS:执行”ps -t -p P”命令,显示当前进程和线程。
  • 19) LIBRANK:执行/system/bin/librank,提出不必要的library。
  • 20) BINDER FAILED TRANSACTION LOG:读取文件/proc/binder/failed_transaction_log信息。
  • 21) BINDER TRANSACTION LOG:读取文件/proc/binder/transaction_log信息。
  • 22) BINDER STATS:读取文件/proc/binder/stats信息。
  • 23) BINDER PROCESS STATE:读取文件/proc/binder/proc/*,获取一些进程的状态信息。
  • 24) FILESYSTES:执行/system/bin/df,获取主要文件的一些容量使用状态信息。
  • 25) PACKAGE SETINGS:读取文件/data/system/packages.xml,获取系统中package的一些状态信息。
  • 26) PACKAGE UID ERRORS:读取文件/data/system/uiderrors.txt,获取错误信息。
  • 27) KERNEL LAST KMSG LOG:获取最新内核消息日志信息。

adb jdwp

  • 查看指定设备的JDWP相关进程ID。
  • JDWP,全称为Java Debug Wire Protocol,即Java调试器无线协议,它定义了调试器和被调试的Java虚拟机(Target VM)之间的通信协议。JDWP与其他协议不同,它仅仅定义了数据传输的格式,并没有具体的传输方式。

adb start-server

  • 重启adb服务

adb kill-server

  • 关闭adb服务

adb forward

  • 将本机的端口重定向到模拟器或者设备端口上。
  • 例如:将本机的2211端口重定向到设备上的5566端口:adb forward tcp:2211 tcp:5566,将所有发往2211端口的数据转发到5566端口上。

am

  • am,全称Activty Manager,可以利用am去模拟各种系统的行为,如:启动一个Activity、强制停止进程、发生广播进程、修改屏幕属性等。
  • 例如:启动照相功能:adb shell am start -n com.sec.android.app.camera/.Camera
  • 例如:向手机发送低电量环境的信息:adb shell am boardcast -a android.intent.action.BATTERY_CHANGED –ei “level” 5 –ei “scale” 100

pm

  • pm,全称Package Manager,可以去模拟android行为或者查询设备上的应用等。
  • 例如:打印所有包列表信息:adb shell pm list packages
  • 参数:
  • 1) -f:查看其关联的文件,即应用apk的位置对应包名
  • 2) -d:查看disabled package
  • 3) -e:查看enable package
  • 4) -s:查看系统package
  • 5) -3:查看第三方package
  • 6) -i:查看package的对应安装者
  • 7) -u:查看曾被卸载过的package
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值