3、自动化测试环境搭建:配置Android SDK、安装TalkBack、开启无障碍服务

环境搭建这种事,说简单也简单,说复杂也复杂。我见过不少同学卡在SDK配置这一步,一卡就是半天。其实你只要理清楚三个核心环节:SDK工具链、被测试应用(TalkBack)、系统开关(无障碍服务)。这三样凑齐了,你的自动化脚本才算真正有了跑起来的土壤。

核心要点:搭建过程本质上是“工具→依赖→授权”的链条。顺序错了容易踩坑,后面我会讲我踩过的几个典型。

自动化测试环境搭建流程 配置 Android SDK 安装 TalkBack 开启无障碍服务 命令行工具 + platform-tools 配置环境变量 (ANDROID_HOME) 验证 adb 与 aapt 从 Play Store 或 APK 安装 确认版本兼容性 (>= 12.0) 设置 → 无障碍 → TalkBack 打开开关 + 允许权限 验证:无障碍节点可正常访问 ⚠ 建议先在真机/模拟器上 手动走一遍流程确认无阻

3.1 配置 Android SDK

SDK 配置是基础中的基础。说白了,没有 SDK,你的 adb、aapt、uiautomator 全用不了。我个人习惯用 Android Studio 自带的 SDK Manager 来管理,但如果你只想轻量化干活,单独下载命令行工具也够用。

步骤拆解

  1. 下载命令行工具:去 Android 开发者官网下载 command-line-tools,解压到某个目录,比如 C:\android-sdk 或 ~/android-sdk。
  2. 使用 sdkmanager 安装必要包:
sdkmanager "platform-tools" "platforms;android-33" "build-tools;33.0.0"

为什么要装 android-33?因为我们测试的模拟器或真机大概率是 Android 13/14。你要是用 android-30 也不是不行,但部分无障碍新特性可能不全。

  1. 配置环境变量:
# Windows (加到系统变量)
ANDROID_HOME=C:\android-sdk
PATH=%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\cmdline-tools\latest\bin

# macOS / Linux
export ANDROID_HOME=$HOME/android-sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin

配置完后打开新终端,执行 adb --version,能看到版本号说明配置成功。

我曾经犯过的错:把 ANDROID_HOME 指向了 cmdline-tools 目录,结果 aapt 死活找不到。ANDROID_HOME 必须指向 SDK 根目录,而不是 bin 目录。你想想看,如果路径配错了,后面跑自动化脚本时会一直报“找不到资源”,排查起来很揪心。

3.2 安装 TalkBack

TalkBack 是 Google 官方的屏幕阅读器,也是我们无障碍UI测试的核心被测应用。安装它有两种方式:

方式命令 / 操作适用场景
Play Store 安装 在 Android 设备上搜索“TalkBack”并安装 真机 / 带 Google 服务的模拟器
APK 侧载 adb install -r TalkBack.apk 不带 Google 服务的 AOSP 模拟器

我的建议:优先用 Play Store 安装,因为版本更新及时。但如果你的模拟器是 AOSP 镜像(比如 Pixel Experience 的阉割版),那就只能侧载了。TalkBack 的 APK 可以从 APKMirror 下载,注意选 com.google.android.marvin.talkback,别下错了。

安装完成后,在应用列表里确认图标存在。你可以用 adb 查包名:

adb shell pm list packages | grep talkback
# 输出类似:package:com.google.android.marvin.talkback

嗯,看到这个包名就等于安装成功了。

3.3 开启无障碍服务

这一步最容易出幺蛾子。很多同学装完 TalkBack 就以为完了,结果跑脚本时发现 AccessibilityService 没绑定,所有节点抓取都返回空。为什么会这样?因为无障碍服务需要用户在系统设置里手动授权。

手动开启流程(真机或模拟器操作):

  1. 打开“设置” → “无障碍”(Accessibility)。
  2. 找到“TalkBack”并点击。
  3. 把开关打开,弹窗询问权限时点“允许”。

也可以用 adb 命令快速开启(Android 9+ 实测可行):

adb shell settings put secure enabled_accessibility_services com.google.android.marvin.talkback/com.google.android.marvin.talkback.TalkBackService
adb shell settings put secure accessibility_enabled 1

但注意,部分定制 ROM(比如 MIUI、ColorOS)可能会拦截这种 adb 设置,最后你不得不手动点。我在项目中遇到过几次小米手机,adb 改完后一重启又被还原了,后来只好写了个自动化脚本来模拟点击设置界面。

避坑指南:开启无障碍服务后,建议立刻重启一次设备。因为我曾遇到过服务虽然显示开启,但实际绑定线程没启动,uiautomator 抓到的节点里没有 TalkBack 的虚拟节点。重启后一切正常。你想想看,一个小重启能省半小时排查时间,值不值?

3.4 验证环境是否可用

环境搭好没有,用一个小脚本验证一下最踏实。我一般写个 Python 脚本用 uiautomator2 或 Appium 来检查无障碍树:

# 使用 uiautomator2(需要先 pip install uiautomator2)
import uiautomator2 as u2

device = u2.connect()  # 默认连接第一个设备
print(device.info)
# 查看无障碍服务状态
print(device.service("accessibility").running)

如果输出 True,并且你能通过 device(text="按钮名").click 等操作正常交互,说明环境搭建完毕。

最后画个总结图放在心里:SDK 提供工具 → TalkBack 提供被测服务 → 无障碍开关提供运行时授权,三者缺一不可。我每次搭建新环境都会走一遍这个流程,不出意外的话 15 分钟搞定。