前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ADB 操作命令详解及用法大全(一)

ADB 操作命令详解及用法大全(一)

作者头像
雷子
发布2024-03-25 16:57:08
2130
发布2024-03-25 16:57:08
举报

ADB命令语法

adb 命令的基本语法如下:

代码语言:javascript
复制
adb [-d|-e|-s <serial-number>] <command>

单一设备/模拟器连接

如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s <serial-number>] 这一部分,直接使用 adb <command>。

多个设备/模拟器连接

如果有多个设备/模拟器连接,则需要为命令指定目标设备,下表是指定目标设备的命令选项:

参数 含义

-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标

-e 指定当前唯一运行的模拟器为命令目标

-s <serial-number> 指定相应设备序列号的设备/模拟器为命令目标

在多个设备/模拟器连接的情况下较常用的是 -s <serial-number> 参数,serial-number是指设备的设备序列号,可以通过 adb devices 命令获取。

ADB常用命令

查看adb的版本信息
代码语言:javascript
复制
adb version
启动adb
代码语言:javascript
复制
adb start-server

一般无需手动启

停止adb
代码语言:javascript
复制
adb kill-server
  • 1
以 root 权限运行 adb
代码语言:javascript
复制
adb root
  • 1
指定 adb server 的网络端口
代码语言:javascript
复制
adb -P <port> start-server
  • 1

ADB的默认端口为 5037。

查询已连接的设备/模拟器列表
代码语言:javascript
复制
adb devices
查看应用列表

查看应用列表的基本命令格式是:

代码语言:javascript
复制
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]

adb shell pm list packages 后面可以跟一些可选参数进行过滤查看不同的列表,可用参数及含义如下

-f 显示应用关联的 apk 文件

-d 只显示 disabled 的应用

-e 只显示 enabled 的应用

-s 只显示系统应用

-3 只显示第三方应用

-i 显示应用的 installer

-u 包含已卸载应用

<filter> 包名包含 <filter> 字符串

查看所有应用
代码语言:javascript
复制
adb shell pm list packages
查看系统应用
代码语言:javascript
复制
adb shell pm list packages -s
查看第三方应用
代码语言:javascript
复制
adb shell pm list packages -3
包名包含某字符串的应用
代码语言:javascript
复制
adb shell pm list packages test
安装应用

基本命令格式:

代码语言:javascript
复制
adb install [-l] [-r] [-t] [-s] [-d] [-g] <apk-file>

adb install 后面可以跟一些可选参数来控制安装 APK 的行为,可用参数及含义如下:

-l

将应用安装到保护目录 /mnt/asec

-r

允许覆盖安装

-t

允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用

-s

将应用安装到 sdcard

-d

允许降级覆盖安装

-g

授予所有运行时权限

包含安装进度和状态,安装状态如下:

  • Success:代表安装成功。
  • Failure:代表安装失败。APK 安装失败的情况有很多,Failure状态之后有安装失败输出代码。常见安装失败输出代码、含义及可能的解决办法如下:

adb install 实际是分三步完成:

代码语言:javascript
复制
push apk 文件到 /data/local/tmp。
调用 pm install 安装。
删除 /data/local/tmp 下的对应 apk 文件。
卸载应用

卸载应用的基本命令格式是:

代码语言:javascript
复制
adb uninstall [-k] <package-name>

表示应用的包名,-k 参数可选,表示卸载应用但保留数据和缓存目录

清除应用数据与缓存
代码语言:javascript
复制
adb shell pm clear <package-name>
查看前台 Activity
代码语言:javascript
复制
adb shell dumpsys activity activities | grep mFocusedActivity
查看正在运行的 Services
代码语言:javascript
复制
adb shell dumpsys activity services [<package-name>]

<package-name> 参数不是必须的,指定 <package-name> 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。<package-name> 不一定要给出完整的包名,可以只给一部分,那么所给包名相关的 Services 都会列出来。

查看应用详细信息
代码语言:javascript
复制
adb shell dumpsys package <package-name>

运行次命令的输出中包含很多信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。

查看应用安装路径
代码语言:javascript
复制
adb shell pm path <package-name>

与应用交互

代码语言:javascript
复制
start [options] <intent> 启动 <intent> 指定的 Activity

startservice [options] <intent> 启动 <intent> 指定的 Service

broadcast [options] <intent> 发送 <intent> 指定的广播

force-stop <package-name> 停止 <package-name> 相关的进程

<intent> 参数很灵活,和写 Android 程序时代码里的 Intent 相对应。用于决定 intent 对象的选项如下:

代码语言:javascript
复制
-a <action>  指定 action,比如 android.intent.action.VIEW
-c <category>  指定 category,比如 android.intent.category.APP_CONTACTS
-n <component>  指定完整 component 名,用于明确指定启动哪个 Activity

<intent> 里还能带数据,就像写代码时的 Bundle 一样:

启动应用/ 调起 Activity
代码语言:javascript
复制
adb shell am start [options] <intent>

例如:

代码语言:javascript
复制
adb shell am start -a android.settings.SETTINGS                   # 打开系统设置页面
adb shell am start -a android.intent.action.DIAL -d tel:10086     # 打开拨号页面

options 是一些改变其行为的选项,支持的可选参数及含义如下:

-D 启用调试

-W 等待启动完成

–start-profiler file 启动分析器并将结果发送到 file

-P file 类似于 --start-profiler,但当应用进入空闲状态时分析停止

-R count 重复 Activity 启动次数

-S 启动 Activity 前强行停止目标应用

–opengl-trace 启用 OpenGL 函数的跟踪

–user user_id current

调起 Service
代码语言:javascript
复制
adb shell am startservice [options] <intent>
停止 Service
代码语言:javascript
复制
adb shell am stopservice [options] <intent>
发送广播
代码语言:javascript
复制
adb shell am broadcast [options] <INTENT>

比如某个广播的场景很难制造,可以考虑通过这种方式来发送广播。 既能发送系统预定义的广播,也能发送自定义广播。如下是部分系统预定义广播及正常触发时机:

android.net.conn.CONNECTIVITY_CHANGE 网络连接发生变化

android.intent.action.SCREEN_ON 屏幕点亮

android.intent.action.SCREEN_OFF 屏幕熄灭

android.intent.action.BATTERY_LOW 电量低,会弹出电量低提示框

android.intent.action.BATTERY_OKAY 电量恢复了

android.intent.action.BOOT_COMPLETED 设备启动完毕

android.intent.action.DEVICE_STORAGE_LOW 存储空间过低

android.intent.action.DEVICE_STORAGE_OK 存储空间恢复

android.intent.action.PACKAGE_ADDED 安装了新的应用

android.net.wifi.STATE_CHANGE WiFi连接状态发生变化

android.net.wifi.WIFI_STATE_CHANGED WiFi状态变为启用/关闭/正在启动/正在关闭/未知

android.intent.action.BATTERY_CHANGED 电池电量发生变化

android.intent.action.INPUT_METHOD_CHANGED 系统输入法发生变化

android.intent.action.ACTION_POWER_CONNECTED 外部电源连接

android.intent.action.ACTION_POWER_DISCONNECTED 外部电源断开连接

android.intent.action.DREAMING_STARTED 系统开始休眠

android.intent.action.DREAMING_STOPPED 系统停止休眠

android.intent.action.WALLPAPER_CHANGED 壁纸发生变化

android.intent.action.HEADSET_PLUG 插入耳机

android.intent.action.MEDIA_UNMOUNTED 卸载外部介质

android.intent.action.MEDIA_MOUNTED 挂载外部介质

android.os.action.POWER_SAVE_MODE_CHANGED 省电模式开启

都可以通过广播来触发。

强制停止应用
代码语言:javascript
复制
adb shell am force-stop <packagename>
收紧内存
代码语言:javascript
复制
adb shell am send-trim-memory  <pid> <level>

参数说明:

  • pid: 进程 ID
  • level:HIDDEN、RUNNING_MODERATE、BACKGROUND、RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ADB常用命令
    • 查看adb的版本信息
      • 启动adb
        • 停止adb
          • 以 root 权限运行 adb
            • 指定 adb server 的网络端口
              • 查询已连接的设备/模拟器列表
                • 查看应用列表
                  • 查看所有应用
                    • 查看系统应用
                      • 查看第三方应用
                        • 包名包含某字符串的应用
                          • 安装应用
                            • 卸载应用
                              • 清除应用数据与缓存
                                • 查看前台 Activity
                                  • 查看正在运行的 Services
                                    • 查看应用详细信息
                                      • 查看应用安装路径
                                        • 与应用交互
                                          • 启动应用/ 调起 Activity
                                          • 调起 Service
                                          • 停止 Service
                                          • 发送广播
                                          • 强制停止应用
                                          • 收紧内存
                                      领券
                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档