adb命令操作命令及用法

一、ADB是什么?
  ADB,即 Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在Android SDK/platform-tools中找到 adb 工具或下载 ADB Kits

二、ADB有什么作用?

  • ADB 是 Android SDK 里的一个工具, 用这个工具可以直接操作管理Android模拟器或者真实的Android设备。它的主要功能有:
    • 在设备上运行Shell命令; 将本地APK软件安装至模拟器或Android设备;
    • 管理设备或手机模拟器上的预定端口;
    • 在设备或手机模拟器上复制或粘贴文件。
    • ADB 是一个客户端-服务器程序程序,包括三个组件:
      • 客户端:该组件发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
      • 后台程序:该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。
      • 服务器:该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。

三、ADB常用命令

  • 查看adb版本信息
    adb version
  • 启动adb
    adb start-server
    一般无需手动执行此命令,在运行adb时若发现adb server没有启动会自动调起
  • 停止adb
    adb kill-server
  • 以root权限运行adb
    adb root
  • 恢复adbd为非root权限
    adb unroot
  • 查看已连接的设备或模拟器的序列号和状态
    adb devices

     

    • device状态:表示设备正常连接
    • offline状态:表示连接出现异常或没有响应
    • no device状态:表示没有设备连接
  • 查看设备序列号
    adb get-serialno
  • 查看设备状态
    adb get-state

四、设备连接管理

  • USB连接

  通过usb连接需要一下步骤

    • 确认硬件状态正常(包括 Android 设备处于正常开机状态,USB 连接线和各种接口完好)
    • Android 设备的开发者选项和 USB 调试模式已开启(可以在「设置」-「开发者选项」-「USB调试」打开USB调试)
    • 确认设备驱动状态正常(安装ADB驱动程序)
    • 通过 USB 线连接好电脑和设备后确认状态
    • 通过 adb devices 命令查看设备连接情况
  • WLAN连接(需要USB线)

  借助USB通过wifi连接来正常使用adb需要一下步骤:

    • 将 Android 设备与要运行 adb 的电脑连接到同一个 WiFi
    • 将设备与电脑通过 USB 线连接(可通过 adb devices 命令查看设备连接情况)
    • 通过 adb tcpip 5555 命令让设备在 5555 端口监听 TCP/IP 连接
    • 断开 USB 连接
    • 找到设备的 IP 地址(可以在「设置」-「关于手机」-「状态信息」-「IP地址」查看 IP 地址)
    • 通过 adb connect <device-ip-address> 命令使用 IP 地址将 Android 设备与电脑连接
      adb connect 192.168.1.39:5555
    • 通过 adb devices 命令查看设备连接情况
    • 使用完毕后可通过 adb disconnect <device-ip-address> 命令断开无线连接
  • wifi转为usb连接

   通过adb usb 命令以USB模式重启ADB

    • adb usb

五、应用管理

  • 获取设备上所有应用的包名
    adb shell pm list packages
  • 获取设备上第三方应用的包名 
    adb shell pm list packages -3
  • 获取设备上系统应用的包名 
    adb shell pm list packages -s
  • 获取设备上已经启动的应用包名
    adb shell dumpsys window | findstr mCurrentFocus

  • 获取包名和主活动名
    adb shell dumpsys window | findstr mFocusedApp
    • 执行上面命令后在打开app
  • 安装应用
    • 下载的apk包不能直接安装(下载的apk名称与包名有可能不是同一个),例如下载的京东apk,名称和真正的包名是不一致的,需要先先获取到真正的包名才能安装成功,下载的京东apk包名为“com.jingdong.app.mall_11.8.0_98730.apk”
      • 获取真正的包名:aapt d badging <下载的apk包路径>

      • 安装apk包之前需要在手机或模拟器中开发人员选项中设置“监控ADB安装应用时”不需要用户确认

      • 把所下载的“com.jingdong.app.mall_11.8.0_98730.apk”名字改为““com.jingdong.app.mall.apk””
    • 安装apk
      • 当只有一台设备时
        • adb install <apk路径>

            

        • adb install -r <apk路径>,覆盖安装,主要用于apk升级
      • 当有多台设备时
        • adb -s <设备序列号> install <apk路径>,指定安装到某个设备

        • adb -s <设备序列号> install -r <apk路径>,指定安装到某个设备,加入-r表示覆盖安装
    • 卸载apk
      • adb unistall <卸载应用的包名>,不会保留数据或缓存
      • adb unistall -k <卸载应用的包名>,会保留应用的数据或缓存
      • 当有多台设备时,需要卸载指定设备的apk,和安装时的方法一样,加上-s <设备序列号>即可
    • 清楚应用数据和缓存
      • adb shell pm clear <包名>

        

  • 查看正在运行的包名和主活动名
    adb shell dumpsys window | findstr mFocusedApp

    包名:为在在运行的应用的包名;主活动名:正在运行的应用现在所访问的页面
  • 查看应用的安装路径
    • adb shell pm path <包名>

      

屏幕截图

  • 屏幕截图,截图保存到电脑
    adb exec-out screencap -p > sc.png

     

    • 如果 adb 版本较老,无法使用 exec-out 命令,这时候建议更新 adb 版本。无法更新的话可以使用以下麻烦点的办法:
      先截图保存到设备里:
      adb shell screencap -p /sdcard/sc.png

       

      然后将 png 文件导出到电脑:adb pull /sdcard/sc.png
    • 可以使用 adb shell screencap -h 查看 screencap 命令的帮助信息,下面是两个有意义的参数及含义:
      参数 含义
      -p 指定保存文件为 png 格式
      -d display-id 指定截的显示屏编号(有多显示屏的情况下)
      实测如果指定文件名以 .png 结尾时可以省略 -p 参数;否则需要使用 -p 参数。如果不指定文件名,截图文件的内容将直接输出到 stdout。
  • 另外一种一行命令截图并保存到电脑的方法:
    • Linux 和 Windows
      adb shell screencap -p | sed "s/\r$//" > sc.png
    • Mac OS X
      adb shell screencap -p | gsed "s/\r$//" > sc.png

       

      这个方法需要用到 gnu sed 命令,在 Linux 下直接就有,在 Windows 下 Git 安装目录的 bin 文件夹下也有。如果确实找不到该命令,可以下载 sed for Windows 并将 sed.exe 所在文件夹添加到 PATH 环境变量里。
    • 在 Mac 下使用系统自带的 sed 命令会报错:
      sed: RE error: illegal byte sequence
      需要安装 gnu-sed,然后使用 gsed 命令:
      brew install gnu-sed

录制屏幕

  • 录制屏幕以 mp4 格式保存到 /sdcard:
    adb shell screenrecord /sdcard/filename.mp4
    需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒
  • 如果需要导出到电脑:
    adb pull /sdcard/filename.mp4
  • 可以使用 adb shell screenrecord --help 查看 screenrecord 命令的帮助信息,下面是常见参数及含义:
    参数 含义
    –size WIDTHxHEIGHT 视频的尺寸,比如 1280x720,默认是屏幕分辨率。
    –bit-rate RATE 视频的比特率,默认是 4Mbps。
    –time-limit TIME 录制时长,单位秒。
    –verbose 输出更多信息。

其他内容请参考https://blog.csdn.net/lb245557472/article/details/84068519

posted @ 2023-04-23 10:37  A熙  阅读(1166)  评论(0)    收藏  举报