Page:
T-002
Pages
00-ai-start-here
01-vision
02-requirements
03-tech-stack
04-architecture
05-coding-rules
06-tasks
07-user-stories
08-interaction-checklist
Design
Home
Integrations-shunyunbao-contract
PPT
T-001
T-002
T-003
T-004
T-101
T-102
T-103
T-104
T-201
T-202
T-203
T-204
T-205
T-206
T-207
T-208
T-209
T-210
T-211
T-212
T-213
T-214
T-215
T-216
T-217
T-218
T-219
T-220
T-221
T-222
T-223
T-224
T-225
T-226
T-227
T-228
T-229
T-230
T-231
T-232
T-233
T-234
T-235
T-236
T-237
T-238
T-239
T-240
T-241
T-242
T-243
T-244
T-245
T-246
T-247
T-248
T-249
T-250
T-251
T-252
T-253
T-254
T-255
T-256
T-257
T-258
T-259
T-260
T-261
T-262
T-263
T-264
T-265
T-266
T-267
T-268
T-269
T-270
T-271
T-272
T-273
T-274
T-275
T-276
T-277
T-278
T-279
T-280
T-281
Task-Template
Tasks
agent-context
api
clean-state-checklist
current-state
routes
Clone
Table of Contents
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
同步来源:
docs/tasks/T-002.md· commitafc651f75a3a
id: T-002 title: 建立测试设备基线和就绪检查 phase: 0 deps:
- T-001
status: DONE
created: 2026-07-25
context_ref:
04fa4a0994work_branch: main write_paths: - android-buyer/app/build.gradle.kts
- android-buyer/app/src/main/AndroidManifest.xml
- android-buyer/app/src/main/java/com/roubao/autopilot/MainActivity.kt
- android-buyer/app/src/main/java/com/roubao/autopilot/accessibility/**
- android-buyer/app/src/main/java/com/roubao/autopilot/readiness/**
- android-buyer/app/src/main/java/com/roubao/autopilot/ui/screens/DeviceReadinessScreen.kt
- android-buyer/app/src/main/java/com/roubao/autopilot/utils/CrashHandler.kt
- android-buyer/app/src/main/res/values/strings.xml
- android-buyer/app/src/main/res/values-en/strings.xml
- android-buyer/app/src/main/res/values/themes.xml
- android-buyer/app/src/main/res/values-v27/themes.xml
- android-buyer/app/src/main/res/xml/buyer_accessibility_service.xml
- android-buyer/app/src/test/**
- docs/current-state.md
- docs/03-tech-stack.md
- docs/tasks/T-002.md
- progress.md
问题 / 背景
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 检查通过。