5.5 KiB
5.5 KiB
id, title, phase, deps, status, created, context_ref, work_branch, write_paths
| id | title | phase | deps | status | created | context_ref | work_branch | write_paths | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T-002 | 建立测试设备基线和就绪检查 | 0 |
|
DONE | 2026-07-25 | 04fa4a0994 |
main |
|
问题 / 背景
T-001 证明 Android 工程能够构建和启动,但 App 仍只判断 Shizuku,无法回答采购流程 开始前最重要的几个问题:拼多多是否安装、肉包无障碍是否启用、当前前台 App 是什么, 以及拼多多页面是否出现登录、验证码或风控阻塞。没有统一快照时,后续搜索探针只能在 未知设备状态下失败。
关联需求与交互
- 功能:F-003 采购 App 与设备就绪检查。
- 用户故事:US-003 安全领取下一条任务、US-006 安全失败和可恢复。
- 交互:Android“设备”页。
- 架构:Android 自动化适配器与本地诊断层。
方案
- 建立不依赖 Android 框架的就绪模型和登录阻塞分类器。
- 增加最小
AccessibilityService,只读取拼多多页面文本,不记录原文,也不执行 点击;限制节点遍历数量。 - Android 状态采集器读取系统/App/拼多多版本、无障碍启用和连接状态、最近前台 包名及最近一次拼多多阻塞分类。
- 新增“设备”页作为 App 首屏,提供刷新、打开无障碍设置和打开拼多多入口。
- 使用本地 JVM 测试覆盖阻塞优先级和就绪原因,使用真实设备验证安装、启用、前台 App 变化和无崩溃。
验收要点
- 记录测试设备 Android 版本、拼多多版本和肉包 App 版本。
- App 能明确显示拼多多是否安装及版本。
- App 能区分肉包无障碍“未启用”“已启用未连接”“已连接”。
- App 能显示无障碍观察到的当前前台包名。
- 拼多多页面出现登录、验证码或风控文本时返回可区分的阻塞类型。
- 页面文本不写入日志、任务文档或 Git。
- 登录阻塞判定和开始条件有本地 JVM 测试。
- Debug APK 构建、测试和真实设备 smoke 通过。
边界
- 不执行拼多多搜索、点击、滑动或候选采集。
- 不尝试绕过登录、验证码或风控。
- 不把“没有发现登录文案”等同于账号一定已登录。
- 不移除现有 Shizuku 路径;本任务只建立采购主路径所需的无障碍基线。
执行记录
2026-07-25:任务开始
- 基于 T-001 提交
04fa4a0开始。 - 已知测试设备为 OnePlus PKG110、Android 16/API 36;拼多多已安装,无障碍服务 尚未实现。
2026-07-25:实现和验证完成
- 新增
BuyerAccessibilityService。服务只遍历拼多多可访问节点,单次最多 300 个, 仅保存NONE、LOGIN_REQUIRED、VERIFICATION_REQUIRED、RISK_CONTROL分类和观察时间;页面原文不写入日志或持久化。 - 新增纯 Kotlin 就绪模型和分类器,以及 Android 状态采集器;开始条件要求拼多多 已安装、肉包无障碍已启用并连接,且没有已识别的登录/验证码/风控阻塞。
- 新增“设备”首屏,展示设备、肉包、拼多多、无障碍、当前前台 App 和登录阻塞, 提供刷新、无障碍设置和打开拼多多入口。查看检查页时前台必然是肉包,因此前台 包名只作为事实展示,不作为设备基线阻塞。
- 停止 App 启动时自动弹出 Shizuku 授权;Shizuku 仍保留为兼容路径,只在用户进入 原有功能并主动刷新时申请。
- 修复导入基线的两个 minSdk lint 错误:API 26/27 安全读取版本号,并把 API 27 导航栏主题属性放入限定资源。
- 真机基线:OnePlus PKG110,Android 16/API 36;肉包
1.4.2 (7);拼多多8.17.0 (81700)。 - 真机先验证“未启用”阻塞,再在保留 Microsoft 投屏无障碍服务的情况下启用肉包 服务;系统显示服务已绑定且无崩溃。强制停止时观察到“已启用未连接”,重新切换 服务后恢复“已启用并连接”。
- 打开拼多多后系统前台为
com.xunmeng.pinduoduo/.ui.activity.HomeActivity, 观察器返回NONE;返回肉包后界面显示未发现阻塞(不代表已登录),没有把该结果当作登录确认。 .\gradlew.bat lintDebug test assembleDebug --no-daemon:成功。- 本地 JVM 测试按 Debug/Release 两个变体执行共 10 次,0 failure、0 error、 0 skipped。
- 最新 Debug APK 大小为 10,402,303 字节,SHA-256 为
464382CE98604FF0E81F592307660C399D018A14106639B3D25E246949CF225B; 更新安装、Activity 启动、服务重连和 logcat crash 检查通过。