adb 命令

发布时间:2023年12月20日

一、adb基本介绍

1 adb 定义和作用
  • 定义: adb 就是android debug bridge 的缩写,我们可以理解为是 android 调试的桥梁。是我们测试安卓APP时必不可少的一个命令行工具
  • 作用:adb 是一个命令集合,它里面有很多的命令语句,我们通过它与手机建立连接,然后在PC设备上向手机发送操作指令
  • 组成:adb 可以看做是由三部分组成,分别是 adb client【adb 客户端】、adb server【adb 服务】、adb daemon【真实设备/进程】
2 adb 工作原理
  1. 在客户端使用具体的 adb 命令来建立与手机的通信连接

  2. 在 PC 机的客户端里书写想要执行的 adb 命令

  3. 已连接的手机或者模拟器会有具体的进程接收到PC机上发来的命令,然后让手机去执行

  4. 原理图:

二、常用的 adb 命令

1. 常用的 adb 命令
命令名称命令作用
adb start-server开启一个管理 命令 的服务
adb kill-server关产一个管理 命令 的服务
adb devices以列表的形式展示出PC机连接的设备和模拟器信息
adb logcat查看当前手机运行的日志信息
adb push 本地 远端将PC机上的文件推送到远端的目录下
adb pull 远端 本地将远端的文件拉取到本地的目录
adb shell进入当前连接设备的Linux管理界面
adb -s 指定的机器码 ...指定某台设备的机器码,执行具体的命令
adb shell getprop ro.build.version.release获取当前已连接设备的 android 版本
adb install 包路径将指定的安装包安装到对应的设备上
adb uninstall 包名卸载设备上的对应 APP
adb shell am start -W 包名/启动名冷启动 APP 的时长统计

注意:

? 01 在使用 adb 操作的时候,可以直接在客户端里书写对应的 adb 命令,它会自动检查当前的 PC 机上是否有一个 adb server ,如果没有它会自动开启一个 adb server ,默认占用的是就是 5037 端口。所以在使用的时候可以不需要先执行 adb start-server

? 02 在使用 雷神 模拟器的时候,默认情况下会连接上二个设备,所以第一次我们使用的时候需要先通过 adb kill-server 关闭服务,然后再重新执行 adb start-server 开启服务。

? 03 如果 adb start-server 命令提示启动失败,那么可以使用 netstat -ano | findstr 5037 来查看该端口当前被哪个应用占用,然后可以在进程中手动关闭。

三、包名与启动相关

一、包名与启动名介绍
  1. 定义:
    • 包名:可以理解为是用来唯一标识某个 APP 的ID号,不可能存在二个包名相同的 APP 。就是我们一般所说的 package 名
    • 启动名:一款完整的 APP 会由多个不同的单页组合而成,而启动作就是在APP中用来唯一标识某个单页的名称。这就是我们所说的 activity 名
  2. 作用:自动化测试的本质都是使用代码或者第三方工具去代替之前的手工操作。而在 APP 功能自动化实现过程中我们就需要使用 python 来编写对应的脚本,然后代替之前的手工操作。此时我们就需要告诉代码我们要操作的是哪个具体的 APP 或者 某个 APP 里哪个界面。
二、获取包名和启动名
  1. 获取包名:

    a. 具有APP安装包,没有安装时

    aapt dump badging 对应安装包路径
    aapt dump badging C:\Users\Administrator\Desktop\jd.apk | findstr "launchable-activity"
    

    b. 已经安装了具体的 APP

    adb shell dumpsys window windows | findstr "mFocusedApp"
    
  2. 获取启动名:

    上述二个命令行操作不但可以获取包名同时也会获取启动名,我们可以在返回的结果中进行对应字段的过滤,得到最终的启动名。

    注意:

    ? 01 使用第一种方法获取包名和启动名的前提是将 appt.exe 添加到设备的系统环境变量中

    ? 02 使用第二种方法获取包名和启动名的前提是将 对应的APP 提前启动

文章来源:https://blog.csdn.net/dragons_/article/details/135036119
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。