关于 android-emulator-automation
供 Agent 使用的 Android 模拟器自动化技能,通过 ADB 和 UIAutomator 检查、启动并操作应用。它强调语义选择器和可复现的冒烟检查,不替代回归 UI 测试。
主要功能
- 01安装或启动指定应用
- 02转储并检查 UI 层级
- 03按文本或资源 ID 定位控件
- 04检查设备状态与启动完成情况
适用场景
- 01在模拟器中启动 APK 并查看当前界面
- 02通过语义控件执行可复现的交互
- 03验证设备可用性并排查选择器问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ krutikjain/ android-agent-skills --skill android-emulator-automation安装后在 Claude Code 中输入/android-emulator-automation确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/official-links.mdpatterns.mdscenarios.mdscripts/app_launcher.pycommon.pydevice_health.pynavigator.pyrun_examples.shscreen_mapper.py详细介绍
Android 模拟器自动化
适用场景
- 当请求涉及 Android 模拟器自动化、adb 语义 UI 自动化、uiautomator 转储和点击时,使用此技能。
- 主要目标:使用语义化 ADB 和 UIAutomator 工作流,从 Agent 检查、启动和操作 Android 应用。
- 当 Agent 需要启动 APK、检查当前屏幕,或执行确定性操作而无需编写 Espresso 或 Compose UI 测试时,使用此技能。
- 当范围扩大时,移交给以下技能:
android-testing-uiandroid-permissions-activity-results
工作流
- 在尝试交互前,确认 Android SDK、
adb、目标设备或模拟器均可用,且设备已完成启动。 - 安装或启动目标应用时,明确指定包名,确保请求关联到正确的应用产物。
- 转储当前 UI 层级,并优先使用文本、内容描述或资源 ID 等语义选择器,而非原始坐标。
- 执行能验证工作流的最小操作;当状态变化很重要时,重新转储屏幕。
- 理解自动化路径后,将长期回归覆盖移交给 UI 测试。
防护措施
- 优先使用语义选择器而非像素坐标;仅当 UI 树缺少所需元数据时,才使用坐标。
- 将自动化视为检查和冒烟测试工具,而非确定性 UI 测试的替代品。
- 执行输入命令前,确认设备状态、包名和启动完成情况。
- 为确保脚本适用于 CI,避免使用破坏性 shell 命令或更改设备范围的设置。
反模式
- 在有可用文本或资源 ID 时硬编码坐标。
- 在模拟器启动完成前运行命令。
- 将不稳定的一次性自动化视为 UI 工作流稳定的证明。
- 将应用安装、交互和日志抓取混入一个不透明且没有中间输出的脚本。
示例
顺利流程
- 场景:构建 Compose 测试夹具,将其安装到模拟器上,并转储当前的 OrbitTasks 屏幕。
- 命令:
bash skills/android-emulator-automation/scripts/run_examples.sh
边缘情况
- 场景:启动预装应用,并在不依赖屏幕坐标的情况下定位单个语义控件。
- 命令:
python3 skills/android-emulator-automation/scripts/navigator.py --find-text "Blocked" --tap
故障恢复
- 场景:确认设备可被发现,且 UIAutomator 能转储层级,然后再排查选择器问题。
- 命令:
python3 skills/android-emulator-automation/scripts/device_health.py --json
完成检查清单
- 已明确目标包名、设备序列号和当前屏幕。
- 优先使用了语义选择器,而非坐标。
- 自动化路径可在本地开发环境和 CI 中复现。
- 当工作流需要回归覆盖时,请求已移交给 UI 测试。
官方参考资料
评论
支持 Markdown