本文章主要用于个人学习积累记录
ADB常用命令及应用
一、ADB是什么
ADB (Android Debug Bridge) 是一种用于与 Android 设备进行通信的命令行工具集。它允许开发者在连接的 Android 设备上执行各种操作,例如安装应用程序、调试应用程序、复制文件等等。
二、ADB的作用
ADB是Android SDK里的一个工具,用这个工具我们可以直接操作管理Android模拟器或者真实的Android设备。主要功能如下:
- 在设备上运行shell命令;将本地APK软件安装至模拟器或Android设备
- 文件操作:ADB 可以在设备和计算机之间进行文件传输
- 日志记录和调试:使用 ADB 的 logcat 命令,可以查看设备的系统日志,以帮助开发者调试应用程序和系统问题。
- 设备状态监测和控制:ADB 可以显示连接的设备列表,并提供设备的状态信息,如电池电量、网络连接状态等。还可以使用 ADB 命令重启设备或进入设备的 shell 终端。
- 屏幕截图和录屏:ADB 提供了命令来获取设备屏幕的截图,并可以录制设备的屏幕操作。
ADB是一种客户端-服务器程序,主要包括以下三个组件:
- 客户端(本机电脑):用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
- 守护程序(adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。
- 服务器(Android设备):用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。
三、ADB安装以及手机开发者模式
1. 安装ADB工具
ADB工具在AndroidSDK工具下的platform-tools包下,直接下载AndroidSDK即可
下载地址:[https://www.androiddevtools.cn/#]下载后直接解压缩后安装
安装AndroidSDK后需要配置系统变量:
配置成功后命令行输入adb version
显示出相应版本表示安装成功
2. ADB连接手机的两种常用物理方式
ADB提供了两种连接Android设备的方式:USB以及网络(wifi)方式,本文主要应用USB方式一般android手机及android平板默认会设置为USB方式(直接插数据线的方式) . android系统底层运行着一个服务(adbd),也就是在手机系统内部,用于相应和管理大家在电脑端的adb命令连接,这个服务在启动时会根据手机的配置监听USB连接或网络其中之一
3. Android设备开发者模式开启
不同类型手机开启开发者模式各有差异,以MIUI为例:
我的设备->全部参数与信息->连击8次MIUI版本,即可进入开发者模式
在设置->更多设置中找到开发者模式,并打开USB调试(注意要打开和USB相关的所有选项,小米手机可在插卡打开后将卡拔出打开USB的调试)
4. ADB命令与Abdroid设备连接
将Abdroid设备通过USB与本地设备(电脑)进行连接后,在本地设备上命令行中输入adb devices
:
可以得到Abdroid设备的序列号
四、 ADB基本命令及其应用
adb 命令的基本语法如下:
adb [-d|-e|-s <serial-number>] <command>
单一设备/模拟器连接:
如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s <serial-number>]
这一部分,直接使用 adb <command>
。
多设备/模拟器连接:
如果有多个设备/模拟器连接,则需要为命令指定目标设备,下表是指定目标设备的命令选项:
参数 | 含义 |
---|---|
-d | 指定当前唯一通过 USB 连接的 Android 设备为命令目标 |
-e | 指定当前唯一运行的模拟器为命令目标 |
-s | <serial-number> 指定相应设备序列号的设备/模拟器为命令目标 |
4.1 基本命令
1. adb version //查看adb的版本信息
2. adb start-server //启动adb服务,一般无需手动执行此命令
3. adb kill-server //停止adb
4. adb root //以 root 权限运行 adbd
5. adb -P <port> start-server //指定 adb server 的网络端口,ADB的默认端口为 5037
6. adb devices // 查询已连接的设备/模拟器列表
4.2 设备连接以及设备管理
具体可参考链接: ADB 操作命令详解及用法大全
4.3 应用管理
1.adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
此命令用于查看Android设备应用列表
adb shell pm list packages
后面可以跟一些可选参数进行过滤查看不同的列表,可用参数及含义如下:
参数 | 含义 |
---|---|
无 | 所有应用 |
-f | 显示应用关联的 apk 文件 |
-d | 只显示 disabled 的应用 |
-e | 只显示 enabled 的应用 |
-s | 只显示系统应用 |
-3 | 只显示第三方应用 |
-i | 显示应用的 installer |
-u | 包含已卸载应用 |
<filter> | 包名包含 <filter> 字符串 |
2.adb install [-l] [-r] [-t] [-s] [-d] [-g] <apk-file>
此命令用于安装应用
参数 | 含义 |
---|---|
-l | 将应用安装到保护目录 /mnt/asec |
-r | 允许覆盖安装 |
-t | 允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用 |
-s | 将应用安装到 sdcard |
-d | 允许降级覆盖安装 |
-g | 授予所有运行时权限 |
运行命令后可以看到输出内容,包含安装进度和状态,安装状态如下:
- Success:代表安装成功。
- Failure:代表安装失败。APK 安装失败的情况有很多,Failure状态之后有安装失败输出代码。
adb install
实际是分三步完成:
1.push apk
文件到/data/local/tmp
。
2.调用pm install
安装。
3.删除/data/local/tmp
下的对应 apk 文件。
3.adb uninstall [-k] <package-name>
此命令用于卸载应用
表示应用的包名,-k 参数可选,表示卸载应用但保留数据和缓存目录。
4.adb shell pm clear <package-name>
此命令用于清除应用数据与缓存
<package-name>
表示应用名包,这条命令的效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。
5.adb shell dumpsys activity activities | grep mFocusedActivity
此命令用于查看前台 Activity
可用findstr替换grep
6.adb shell dumpsys activity services [<package-name>]
此命令用于查看正在运行的 Services
参数不是必须的,指定 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。 不一定要给出完整的包名,可以只给一部分,那么所给包名相关的 Services 都会列出来。
7.adb shell dumpsys package <package-name>
此命令用于查看应用详细信息
表示应用包名。运行次命令的输出中包含很多信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。
8.adb shell pm path <package-name>
此命令用于查看应用安装路径
4.4 应用交互
与应用交互主要是使用 am <command>
命令,常用的 <command>
如下:
commmand | 用途 |
---|---|
start [options] <intent> | 启动 <intent> 指定的 Activity |
startservice [options] <intent> | 启动 <intent> 指定的 Service |
broadcast [options] <intent> | 发送 <intent> 指定的广播 |
force-stop <package-name> | 停止 <package-name> 相关的进程 |
<intent>
参数很灵活,和写 Android 程序时代码里的 Intent 相对应。
用于决定 intent 对象的选项如下:
参数 | 含义 |
---|---|
-a | 指定 action,比如 android.intent.action.VIEW |
-c | 指定 category,比如 android.intent.category.APP_CONTACTS |
-n | 指定完整 component 名,用于明确指定启动哪个 Activity |
1.adb shell am start [options] <intent>
用于启动应用/ 调起 Activity
例如:
adb shell am start -a android.settings.SETTINGS //打开系统设置页面
adb shell am start -a android.intent.action.DIAL -d tel:10086 //打开拨号页面
adb shell am start -n com.android.mms/.ui.ConversationList //打开短信会话列表
options 是一些改变其行为的选项,支持的可选参数及含义如下:
选项 | 含义 |
---|---|
-D | 启用调试 |
-W | 等待启动完成 |
–start-profiler file | 启动分析器并将结果发送到 file |
-P file | 类似于 --start-profiler,但当应用进入空闲状态时分析停止 |
-R count | 重复 Activity 启动次数 |
-S | 启动 Activity 前强行停止目标应用 |
–opengl-trace | 启用 OpenGL 函数的跟踪 |
–user user_id | current |
2.adb shell am startservice [options] <intent>
用于调起 Service
3.adb shell am stopservice [options] <intent>
用于停止 Service
4.adb shell am broadcast [options] <INTENT>
用于发送广播
5.adb shell am force-stop <packagename>
用于强制停止应用
adb shell am send-trim-memory <pid> <level>
用于收紧内存
4.5 文件管理
文件管理中的命令除pull和push外大多需要进入shell进行命令操作,和linux基本命令类似
1.adb pull <remote> [local]
用于从模拟器/设备下载指定的文件到计算机
参数说明:
remote: 模拟器/设备里的文件路径
local:计算机上的目录,参数可以省略,默认复制到当前目录
2.adb push <local> <remote>
用于将指定的文件从计算机上传到模拟器/设备
参数说明:
local:计算机上的文件路径
remote: 模拟器/设备里的目录
3.adb shell ls [options] <directory>
用于列出模拟器/设备上指定目录的内容
<directory>
表示指定目录,可以省略,表示列出根目录下的所有文件和目录。
adb shell cd <directory>
用于切换到目标目录
adb shell rm [options] <files or directory>
用于删除文件或目录
4.6 模拟按键
adb shell
中有很实用的命令input
执行adb shell input
结果如下:
Usage: input [<source>] [-d DISPLAY_ID] <command> [<arg>...]
The sources are:
touchnavigation
touchscreen
joystick
stylus
touchpad
gamepad
dpad
mouse
keyboard
trackball
-d: specify the display ID.
(Default: -1 for key event, 0 for motion event if not specified.)
The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress|--doubletap] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
draganddrop <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
motionevent <DOWN|UP|MOVE|CANCEL> <x> <y> (Default: touchscreen)
keycombination [-t duration(ms)] <key code 1> <key code 2> ... (Default: keyboard, the key order is important here.)
4.9 查看 Android 设备系统属性
4.10 修改设置
4.11 实用功能
4.12 刷机命令
4.13安全相关命令
参考
链接: ADB 操作命令详解及用法大全
总结:ADB命令用于和Android设备或者虚拟机进行交互,本文大量参考了以上连接详见上文,在使用python库uiautomator2时必须先安装安卓adb工具