Files
goauto/android/README.md
T

4.3 KiB
Raw Blame History

Android Agent

一期 Android 执行端,包名为 cn.ilapage.goauto.agent。

当前已经实现:

  • 首次安装生成并持久化随机 UUID installId,不读取硬件唯一标识。
  • 自动注册和已认证的版本信息更新,无注册码输入页。
  • Android Keystore AES-GCM 加密保存 Device Token,界面和日志不显示明文。
  • 前台服务、15 秒心跳、网络恢复触发重连。
  • Agent 0.3.0 的状态、采集、采购、设置四 Tab 外壳;默认进入状态页。
  • 状态页区分无障碍未开启、系统已开启但服务未绑定、已绑定就绪三态。
  • 设置页可测试服务器连接、保存服务器地址和设备名称并重新连接;任务执行中禁止修改。
  • 设置页只显示 Device Token 是否配置,不显示 Token 明文;采集和采购 Tab 在 #90 接入当前设备任务历史。
  • 清除 App 数据后按新的安装实例注册;Token 无效时明确报错,不降级为无认证注册。

服务端地址可在设置页保存,也可在构建时通过 GOAUTO_SERVER_URL 环境变量或同名 Gradle 属性写入默认值。Release 版本只接受 HTTPS;只有 Debug 构建的独立清单允许 HTTP,便于局域网真机联调。设置页的“测试连接”只访问 /api/v1/health,不会注册设备或创建任务;“保存并重新连接”沿用当前 installId 和 Device Token。

设备执行任务时,状态页显示当前任务,设置页会禁用服务器地址、设备名称、测试和保存操作。返回系统无障碍设置后,状态页和设置页会自动刷新真实就绪状态。

T05 真机验证记录

  • 一加 PKG110 / Android 16:首次注册、15 秒心跳、前台通知和在线空闲状态已验证。
  • 杀死进程后重新打开:installId 和 deviceId 保持不变,设备表仍只有一条记录,心跳恢复。
  • PDD 8.17.0 版本信息已随注册提交。
  • ColorOS 首次 ADB 安装需要在“安装增强防护”页执行“更多 → 开始深度扫描 → 继续安装”。
  • 当前 MVP 只完成并维护一加/ColorOS 真机兼容,不包含华为 ROM。

T23~T24 v2 真机验证

  • 一加 PKG110 / Android 16 已验证 v2 能力上报、正式任务领取、浏览器到 PDD NewPageActivity、规格面板打开、颜色文字点击和逐颜色稳定价格。
  • 图片型颜色卡片只点击文字节点,不点击整卡或“打开大图/查看大图”。
  • 规格值会排除“#一次选多款#”等面板功能入口,避免把操作按钮伪装成尺码和 SKU。
  • 商品 719834019024 已采到 4 个颜色、4 个 2690 分颜色价格和 4 个结构化 SKU,缺少尺码、店铺和评价时正确提交 completed_partial。
  • 商品 236231603269 已验证规格面板归顶、锚定横纵容器、逐行蛇形颜色遍历和尺码续页:14 个颜色、14 个颜色价格、8 个尺码和 112 个完整可用 SKU,任务最终为 completed。
  • 滚动优先使用目标容器的无障碍 ACTION_SCROLL_FORWARD/BACKWARD;回退坐标手势时等待系统完成回调后才读取新树,避免把未结束手势误判成列表边缘。
  • 商品标题回退只接受与销量节点空间关联的文本,不再把页面中任意最长文本当成标题。
  • 规格入口只接受带明确选择语义的规格摘要,或屏幕底部真实“购买/拼单”文字按钮;评价、评论、晒单和问答区域及其父容器不能成为入口。
  • 商品评价页与商品详情页共用 NewPageActivity 时,Agent 通过顶部评价标题和评价内容识别误触,安全返回后最多重新定位一次。点击无页面变化、重复误入评价页和面板结构无法确认使用不同错误码;日志只记录入口语义、控件类型、坐标和动作结果,不保存控件树或截图。
  • 逐颜色价格必须先取得目标选中、已选摘要或规格面板变化证据,再等待价格刷新并连续稳定读取;其他颜色残留的选中标记不会阻塞新价格,相同价格仍允许保存。动作无效果时不会沿用旧价格,结构化日志区分未确认选择、未找到价格和价格不稳定。
.\gradlew.bat test
.\gradlew.bat assembleDebug

APK 输出:app/build/outputs/apk/debug/app-debug.apk。AccessibilityService、任务领取和 PDD 页面执行由后续工单实现。