高手进阶必学:ADB工具深度解读与实战应用指南
系统教程190
更新时间:2026-04-03 18:31:27
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系统各个分区的相关信息
获取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 kill-server
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
本文发布于:2026-02-18,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:信息编程读取文件
发布评论