美文网首页
常用的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