1.说在前面

最近在一家Android公司实习,是系统优化相关的模块,发现Android的调试工具一般都是使用ADB,所以来进行一个简单的学习入门。

2.adb简介

adb全称为(android debug bridge)安卓调试桥,顾名思义就是搭建电脑和安卓之间的桥梁,让我们可以通过电脑来操作安卓手机。

那其实虽然官方说只能调试安卓手机,但是我了解到我们可以在Mac系统中安装xcode来通过adb调试ios设备。

3.adb安装

  • 最简单办法

    本身 adb 是android SDK自带的一个工具。

    最简单的使用方法只用到三个文件就能实现adb控制:

    之后配置电脑环境变量path。

  • 推荐安装SDK来使用

    进入官方SDK网页下载压缩包或者安装包。

    在SDK包的 platform-tools 为adb的路径,并且该文件夹配置到环境变量path中。

    这样就算安装好啦!我们在任何一个目录都能进行adb的使用。

  • 验证安装是否成功

    在cmd窗口中使用adb version,如果看到版本,大功告成。

4.电脑连接设备

建议先使用 android 模拟器操作,避免开始操作失误造成手机错误。

  1. 多次点击手机版本号打开开发者选项。

  2. 在开发者选项中,打开usb调试。

  3. 通过数据线连接电脑与手机。

    一般情况会自动识别并进行连接,或者我们可以通过 adb connect 127.0.0.1:端口号 ,不同的手机端口号不同,可以在网上查阅资料获取。

  4. 之后通过 adb devices 可以显示所有已经连接的设备名称。

    当列表中显示 127.0.0.1:端口号 device device表示连接成功。

5.常用adb命令

由于 Android 系统底层是基于 Linux 内核来进行开发的,所一很多 Linux 命令在 adb 中都可以使用。

  • adb shell

    用于进入安卓系统进行操作。比如常用的 ls,cd,vi 等基本命令都可以直接使用。

    exit 用于退出 Android 系统。

  • adb install [apk包路径]

    将指定路径的 apk 安装包安装到已经连接到的手机。

  • adb uninstall [app的包名-package]

    卸载对应包名的应用。

  • adb shell pm list package

    进入安卓系统中,使用 pm(包管理) 操作将所有的包名列出来。

    在这个命令后面可以加一个 -3 表示只显示第三方的应用包名。

    这个 pm 是已经封装好的脚本,在安卓系统的 sys 文件夹中的 bin 文件夹中可以找到。

  • adb pull /system/Framework/pm.jar [Desktop]

    把安卓系统中的对应文件拉取到电脑上对应的目录,Desktop 代表了电脑桌面。

  • adb push [电脑上的文件路径] [手机上的目录路径]

    把电脑上对应的文件上传到手机对应的位置。

  • adb shell dumpsys activity | findstr “mFocuse”

    这个命令等价于在安卓系统中执行 dumpsys activity | grep “mFocuse”

    意思是获取到当前手机聚焦页面的activity。

    除了这个方法,我们可可以使用SDK中的 aapt 工具:

    1. 在刚才下载的 SDK 中找到 build-tools 下的 aapt.exe 文件

    2. 执行 aapt dump badging [安装包apk的路径] | find launchable

    3. 这个命令就可以解析相应的 apk 并且获取到启动的 activity。

    这两种方法,第一种是不稳定的,不一定就是启动的 activity ,所以我们一般使用第二种方法,更为稳妥。

    还有第三种方式获取:

    1. 使用 monkey 工具。

    2. adb shell mokey -p [被测包名] -v -v -v 1

      这段代码的意思是压测一个 app ,并且使用最高级别的日志记录,只执行一次。

    3. 在上面的日志信息中,我们就能找到一个 + Using Main Activity 的 Activity。

  • adb shell am start -W -S [应用的包名]/[刚才找到的启动Activity]

    这个命令就可以启动应用了。-W 表示等待该Activity启动完成后返回, —S 表示把这个放在栈的最顶端。

  • adb shell input tap [x坐标] [y坐标]

    根据坐标去点击相应的地方。相应的滑动的操作,可以查阅文档使用。

  • adb shell input keyevent [keycode编码]

    调用安卓系统中的一些系统按键。不用背的哦,用的时候搜一下就完事。

6.互动命令

input 命令就是和当前 Activity 进行操作的一个命令

  • adb shell input text [内容]

    这个命令就可以模拟键盘输入,并将指定的文本内容输入到当前活动窗口中的文本框或文本区域中。

7.adb完成自动化操作

  1. 先获取包名

  2. 根据包名获取启动的 Activity

  3. 根据上一步获取的,启动应用。

  4. 根绝我们学习的一些互动命令,就可以进行相应的操作。

那这个脚本文件怎么生成呢?

我们可以编写好命令之后放入 .bat 文件中,这里要注意 bat 文件中的注释符号不是 ’#‘ ,也不是 ‘//‘ 而是 ’rem‘。

之后双击运行就好。