67 lines
3.0 KiB
Markdown
67 lines
3.0 KiB
Markdown
# Android Agent 后续工作建议
|
|
|
|
> [返回文档中心](README.md) · [动作目录](actions/README.md)
|
|
|
|
本文档只记录推荐顺序,不是实施门禁。具体做哪一项仍以当前需求为准。
|
|
|
|
## 当前情况
|
|
|
|
- 协议 v1 支持 `WAIT`、`CLICK`、`INPUT`、`BACK` 和 `EXTRACT_TEXT`。
|
|
- 任务可以按设备名过滤并以 `taskId + revision` 保存到 SQLite。
|
|
- `TaskGateway` 还是接口,尚未接入具体服务端。
|
|
- 当前没有自动轮询、自动执行、结果提交和取消流程。
|
|
- Gradle Wrapper 位于 `android/`,仓库中的构建命令应统一从该目录执行,或以后把 Wrapper 移到仓库根目录。
|
|
|
|
## 推荐实现顺序
|
|
|
|
### 1. 修正现有 v1
|
|
|
|
- 未知或不适用字段明确报错,不再静默忽略。
|
|
- 将“等待目标”和“执行动作”分开;`CLICK`、`INPUT`、`BACK` 不因驱动返回 `false` 而重复分发。
|
|
- 将 `TASK_NOT_MATCHED` 逐步细分为包名不符、Activity 不符、目标未找到和动作失败。
|
|
- 明确 `optional` 只跳过哪些失败。
|
|
- 查询控件时补充可见、启用和有效边界判断,并正确释放节点。
|
|
- 让任务保存返回“新增、重复或失败”,同步统计不再混淆。
|
|
|
|
### 2. 完善公共能力
|
|
|
|
- 先扩展统一选择器,再让 WAIT、CLICK、INPUT 和 EXTRACT 共用。
|
|
- 增加简单 Condition,供 WAIT、`when` 和动作 `after` 使用。
|
|
- 统一简单步骤结果和任务结果。
|
|
- 真正接入单任务串行执行;是否持久化执行进度按实际运行需求决定。
|
|
|
|
### 3. 按需求增加动作
|
|
|
|
建议顺序:
|
|
|
|
1. 完善 `WAIT`、`CLICK`、`INPUT` 和 `BACK`。
|
|
2. 将 `EXTRACT_TEXT` 扩展为 `EXTRACT`。
|
|
3. 实现 `SCROLL`,再实现复合动作 `SELECT_OPTION`。
|
|
4. 需要启动或切换 App 时实现 `OPEN`。
|
|
5. 有诊断取证需求时实现 `SCREENSHOT`。
|
|
6. 出现条件流程需求时实现 `when` 和前向 `BRANCH`。
|
|
|
|
没有实际需求时,不提前实现复杂正则、多窗口、任意循环、任务租约、能力协商或崩溃恢复。
|
|
|
|
## 简单开发流程
|
|
|
|
1. 确认一个动作或公共能力的输入、成功条件、超时和结果码。
|
|
2. 同一个改动完成模型、解析、执行、驱动和测试。
|
|
3. 运行受影响测试;Android 资源或应用代码变化时再运行 `assembleDebug`。
|
|
4. 更新动作状态和示例,说明未做的真机验证。
|
|
|
|
## 测试建议
|
|
|
|
- 解析测试:合法字段、缺失字段、未知字段和范围错误。
|
|
- 执行测试:成功、超时、目标不存在、目标不唯一和驱动失败。
|
|
- 副作用测试:同一步骤不会意外点击、输入或返回多次。
|
|
- 真机测试:只覆盖本次涉及的 Android 版本、目标 App 页面和输入法。
|
|
- 文档测试:相对链接有效,JSON 示例能解析。
|
|
|
|
## 等外部信息明确后再设计
|
|
|
|
- 服务端任务接口与结果提交格式。
|
|
- 是否需要不可变 `agentId`。
|
|
- 同一任务多 revision 的保留和执行规则。
|
|
- 是否需要自动执行、取消、断点恢复或截图上传。
|