美文网首页
常用的adb命令

常用的adb命令

作者: _karen | 来源:发表于2020-08-22 14:13 被阅读0次

简单介绍

Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件夹中,它是一个非常强大的命令行工具,通过这个工具你能够与你的android设备进行交互,被称为Android 调试桥。
它是一种客户端-服务器程序,包括以下三个组件:

  • 客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
  • 守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。
  • 服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。
    adb官网:https://developer.android.google.cn/studio/command-line/adb#issuingcommands
    过程:
    常用命令
    image.png

常用命令

  • 命令格式
    adb [-d|-e|-s <serialNumber>] <command>
    -d: 让唯一连接到该PC端的真实安卓设备执行命令,如果发现USB中连接有多部设备,将会报错
    -e: 让唯一连接到该PC端的模拟器执行命令,如果发现开启了多个模拟器,将会报错
    -s: 通过设备的序列号进行指定设备执行命令
    如果设备只连接有一个设备或者一个模拟器的时候,可以不用声明这三个参数,adb默认会让这部唯一连接到的设备进行命令执行。

  • 基础命令

adb --help
adb devices  # 查看设备
devices [-l]    - list all connected devices  如果您包含 `-l` 选项,`devices` 命令会告知您设备是什么。当您连接了多个设备时,此信息很有用,可帮助您将它们区分开来

#  获取设备的状态
#  设备的状态有 3 钟,device , offline , unknown
#  device:设备正常连接
#  offline:连接出现异常,设备无响应
#  unknown:没有连接设备
adb get-state   

adb reboot  #  重启 Android 设备

# 安装卸载
adb install  apk的路径
adb uninstall apk的包名
# 查看应用文件列表
adb shell pm list packages

# 保存全部日志
adb logcat  >电脑路径

# 保存单个apk日志
adb logcat | find ”包名“ >电脑路径

# 杀掉adb进程
 adb kill-server

# 重启adb服务
 adb start-server

# 电脑发文件到手机
adb push <电脑路径> <手机路径>

# 手机发文件到电脑
adb pull  <手机路径> <电脑路径>

# adb forward , 将 宿主机上的某个端口重定向到设备的某个端口
adb forward tcp:1314 tcp :8888

# adb connect 远程连接 Android 设备
adb connect 192.168.1.102   #即可通过无线的方式连接手机,缺点是速度比较慢

adb shell 命令
adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下

- pm ,Package Manager , 可以用获取到一些安装在 Android 设备上得应用信息
adb shell pm list package # adb shell pm list package
adb shell pm dump com.tencent.mobileqq # 列出指定应用的 dump 信息,里面有各种信息

pm clear  # 清除应用数据

am start # 启动一个 Activity
adb shell am start -n com.android.camera/.Camera

# am monitor , 监控 crash 与 ANR
adb shell am monitor
am force-stop , 后跟包名,结束应用
am startservice , 启动一个服务
am broadcast , 发送一个广播

# input这个命令可以向 Android 设备发送按键事件
adb shell input text test123456 # 前提先将键盘设置为英文键盘
adb shell input keyevent KEYCODE_HOME #  发送按键事件
adb shell input swipe 900 500 100 500  #  发送滑动事件


# 监控app的内存变化
adb shell dumpsys meminfo  包名

# 监控app的cpu
adb  shell dumpsys cpuinfo | find ”包名“

# 监控app的耗电量
adb shell dumpsys battery

# 截图命令
adb shell screencap -p /手机路径 (sdcard/screen.png)

# 录制视频
adb shell screenrecord  /手机路径/XXX.MP4

monkey命令

# monkey命令

adb shell monkey –p 包名 100

# Adb shell 这个是进入android的shell环境  
# Monkey  这个是调用shell里面的monkey工具  (monkey是每个手机出场自带的,我们输入指令是去唤醒它)
# -p 包名
# 100是点击的次数

adb 的工作原理

当您启动某个 adb 客户端时,该客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它会启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。

然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护程序 (adbd),便会与相应的端口建立连接。请注意,每个模拟器都使用一对按顺序排列的端口 - 用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口。例如:

模拟器 1,控制台:5554
模拟器 1,adb:5555
模拟器 2,控制台:5556
模拟器 2,adb:5557
依此类推

如上所示,在端口 5555 处与 adb 连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。

服务器与所有设备均建立连接后,您便可以使用 adb 命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个 adb 客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。

在设备上启用 adb 调试

要在通过 USB 连接的设备上使用 adb,您必须在设备的系统设置中启用 USB 调试(位于开发者选项下)。

在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状态。如需将其显示出来,请依次转到设置 > 关于手机,然后点按版本号七次。返回上一屏幕,在底部可以找到开发者选项
在某些设备上,“开发者选项”屏幕所在的位置或名称可能有所不同。
执行 adb devices 验证设备是否已连接。如果已连接,您将看到设备名称以“设备”形式列出。

通过 WLAN 连接到设备

一般情况下,adb 通过 USB 与设备进行通信,但您也可以在通过 USB 完成一些初始设置后,通过 WLAN 使用 adb,如下所述。

  1. 将 Android 设备和 adb 主机连接到这两者都可以访问的同一 WLAN 网络。请注意,并非所有接入点都适用;您可能需要使用防火墙已正确配置为支持 adb 的接入点。
  2. 如果您要连接到 Wear OS 设备,请关闭手机上与该设备配对的蓝牙。
  3. 使用 USB 线将设备连接到主机。
  4. 设置目标设备以监听端口 5555 上的 TCP/IP 连接。
  5. 拔掉连接目标设备的 USB 线。
  6. 找到 Android 设备的 IP 地址。
  7. 通过 IP 地址连接到设备。
  8. 确认主机已连接到目标设备$ adb devices

如果 adb 连接断开:

  1. 确保主机仍与 Android 设备连接到同一个 WLAN 网络。
  2. 通过再次执行 adb connect 步骤重新连接。
  3. 如果上述操作未解决问题,重置 adb 主机adb kill-server

将命令发送至特定设备

如果有多个设备在运行,您在发出 adb 命令时必须指定目标设备。为此,请使用 devices 命令获取目标设备的序列号。获得序列号后,请结合使用 -s 选项与 adb 命令来指定序列号。如果您要发出很多 adb 命令,可以将 $ANDROID_SERIAL 环境变量设为包含序列号。如果您同时使用 -s$ANDROID_SERIAL-s 会替换 $ANDROID_SERIAL

$ adb -s emulator-5555 install helloWorld.apk
注意:如果您在多个设备可用时发出命令但未指定目标设备,adb 会生成错误。
如果有多个可用设备,但只有一个是模拟器,请使用 -e 选项将命令发送至该模拟器。同样,如果有多个设备,但只连接了一个硬件设备,请使用 -d 选项将命令发送至该硬件设备。

设置端口转发

使用 forward 命令设置任意端口转发,将特定主机端口上的请求转发到设备上的其他端口。以下示例设置了主机端口 6100 到设备端口 7100 的转发:

>adb forward tcp:6100 tcp:7100

将文件复制到设备/从设备复制文件

您可以使用 pullpush 命令将文件复制到设备或从设备复制文件。与 install 命令(仅将 APK 文件复制到特定位置)不同,使用 pullpush 命令可将任意目录和文件复制到设备中的任何位置。

如需从设备中复制某个文件或目录(及其子目录),请使用以下命令:

adb pull remote local
如需将某个文件或目录(及其子目录)复制到设备,请使用以下命令:

adb push loca remote

停止 adb 服务器

adb kill-server

发出 shell 命令

您可以使用 shell 命令通过 adb 发出设备命令,也可以启动交互式 shell。如需发出单个命令,请使用 shell 命令,如下所示:

adb [-d |-e | -s shell shell_command

调用 Activity 管理器 (am)

在 adb shell 中,您可以使用 Activity 管理器 (am) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性,等等。在 shell 中,相应的语法为:
您也可以直接从 adb 发出 Activity 管理器命令,无需进入远程 shell。例如:

adb shell am start -a android.intent.action.VIEW

相关文章

网友评论

      本文标题:常用的adb命令

      本文链接:https://www.haomeiwen.com/subject/stdvjktx.html