--- id: T-001 title: 初始化 Git 并接入 Roubao Android 基线 phase: 0 deps: [] status: DONE created: 2026-07-25 context_ref: 285606639bc13b6db4bb8969eb607612fa56d87a work_branch: main write_paths: - AGENTS.md - docs/tasks/T-001.md - android-buyer/** - .gitignore - README.md - init.ps1 - init.sh - .gitattributes - docs/00-ai-start-here.md - docs/02-requirements.md - docs/03-tech-stack.md - docs/04-architecture.md - docs/05-coding-rules.md - docs/06-tasks.md - docs/current-state.md - docs/tasks/T-004.md - progress.md --- ## 问题 / 背景 任务启动时仓库只有 Harness 文档,没有 Roubao 源码、Windows Gradle Wrapper 或 可验证的 Android 命令。所有自动化、VLM 和后台任务都依赖一个可复现的 Android 基线。 预期上游已经从真实仓库完成远端核实: - 仓库:`https://github.com/Turbo1123/roubao` - 许可证:MIT - 默认分支:`main` - 核实时 `main` commit:`c8a6d7f03422eb01744b01f3ee77bf7757741f7e` - 独立无障碍开发分支:`roubao2.0+AccessibilityService`,核实时 commit `5b114c0a9476c359b27cfe994743fc7beb0a3554` - 构建基线:Android Studio Hedgehog+、JDK 17、SDK 34、Gradle 8.2、AGP 8.2.0、 Kotlin 1.9.20 这些是接入前核实结果,源码仍未导入、本机仍未构建。上游 `main` 使用 Shizuku, AccessibilityService 位于独立开发分支;接入前要先比较分支,不能只按分支名称选型。 ## 关联需求与交互 - 功能:为 F-003 至 F-007 提供实现基线,本任务不实现业务功能。 - 用户故事:不适用。 - 交互:不适用。 - 架构:`04-architecture.md` 的 Android 模块。 ## 方案 1. 确认当前目录应作为新仓库后初始化 Git;远端地址未知时不擅自创建远端。 2. 重新读取远端分支头,比较 `main` 与无障碍开发分支;确定以哪个 commit 为导入 基线,并记录采用或移植无障碍实现的理由。 3. 将需要二次开发的 Android 源码接入 `android-buyer/`,保留许可证和上游来源说明。 4. 不做拼多多 Skill、VLM 业务和采购 UI 修改,只处理可构建所需的最小兼容问题。 5. 运行 Gradle Wrapper 的真实构建和已有测试;有测试设备时安装并启动原始 App。 6. 把真实目录、最终依赖版本、构建命令、上游 commit 和 blocker 同步到允许修改的 文档;若接入后的配置与已核实远端版本不同,要记录差异原因。 7. 用真实安装、验证和启动命令替换 `init.ps1`/`init.sh` 占位;如果无法提供设备 启动命令,保留主动失败并把原因记录为 blocker,不能伪造命令。 ## 验收要点 - [x] 当前目录已成为可正常查看状态和提交的 Git 仓库。 - [x] `android-buyer/` 包含可追溯到明确 URL 和 commit 的 Roubao 源码。 - [x] 上游许可证文件已保留,并确认允许当前预期的二次开发方式。 - [x] Windows 上使用仓库内 Gradle Wrapper 成功构建 Debug APK。 - [x] 上游已有 Android 单元测试已执行;没有测试时明确记录。 - [x] 有测试设备时完成安装和启动 smoke,并记录设备/Android 版本;无设备时任务 不能把设备 smoke 写成已通过。 - [x] 未加入真实 API key、签名密码、设备 token 或本地 SDK 绝对路径。 - [x] 已处理缺失的 `google-services.json`:提供本地忽略配置,或明确移除不需要的 Firebase 插件和依赖。 - [x] `03-tech-stack.md` 和 `current-state.md` 不再把已核实信息标为待定。 - [x] `init.ps1`/`init.sh` 与文档中的当前命令一致,或因明确 blocker 保持主动失败。 建议验证命令形状,最终以接入工程为准: ```powershell git status --short Set-Location android-buyer .\gradlew.bat tasks .\gradlew.bat test .\gradlew.bat assembleDebug ``` ## 边界 - 不实现拼多多搜索、点击、候选比较或订单流程。 - 不接入 VLM、后台 API、任务领取和管理页面。 - 不升级与构建无关的依赖,不重构上游项目。 - 不配置生产签名,不提交本机 `local.properties` 或密钥。 ## 执行记录 ### 2026-07-25:Git 和文档基线 - 当前目录已初始化为 Git 仓库,工作分支为 `main`,远端名为 `origin`。 - 新增根目录 `.gitignore`,忽略本地 SDK 配置、Firebase 配置、密钥、构建产物、 运行数据和日志。 - 已核实 Roubao 上游版本并更新技术栈、当前状态及本任务,但 Android 源码尚未导入。 - 用户确认第一层使用本机蝦皮订单文本和同订单号参考图作为真实样本;已将输入契约 和后续 T-004 同步到需求、架构、编码规则及路线图。 - 本次只建立文档与脚本提交;Gradle 构建、测试、APK 安装和设备 smoke 均未运行。 - 本阶段结束时 T-001 仍保持 `DOING`,当时的 blocker 见 `docs/current-state.md` 历史。 ### 2026-07-25:Android 可运行基线 - 选择 `main@c8a6d7f03422eb01744b01f3ee77bf7757741f7e` 作为导入基线。无障碍分支 落后 `main` 的修复和 1.4.2 能力,后续只选择性移植,不整体切换。 - `android-buyer/UPSTREAM.md` 记录来源和调整;上游 MIT `LICENSE` 已保留。 - 安装 JDK 17 对应的 Android SDK 34、Build Tools 34.0.0、Command-line Tools 22.0 和 Platform Tools 37.0.0;没有把本机 SDK 绝对路径提交到仓库。 - 新版 Command-line Tools 与 AGP 8.2 会输出 SDK XML v4/v3 兼容警告,但任务和 APK 构建均成功;这是非阻塞工具版本提示,不作为通过证据本身。 - 上游缺少 `gradlew.bat`,已用 Gradle 8.2 Wrapper 任务生成;Wrapper 固定官方 SHA-256、120 秒网络超时并关闭生成阶段 URL 探测。 - 移除需要私有 `google-services.json` 的 Firebase Analytics/Crashlytics 和云端 上报设置;保留本地 `CrashHandler`。 - `.\gradlew.bat tasks --no-daemon`:成功。 - `.\gradlew.bat test --no-daemon`:成功;Debug/Release 单元测试均为 `NO-SOURCE`, 上游没有 `src/test` 或 `src/androidTest`。 - `.\gradlew.bat assembleDebug --no-daemon`:成功;生成 `app-debug.apk`,当次 SHA-256 为 `745C8E23B5C1575E9C71F6FF583BEEA3800759E9C611AD0C45D9062A856F68C4`。 - `gradlew installDebug` 在 Android 16 上由 AGP 8.2/ddmlib 返回 `-99`;SDK ADB 37.0.0 执行 `adb install -r -t` 成功,标准脚本采用该可靠路径。 - `$env:RUN_START_COMMAND="1"; .\init.ps1`:成功完成测试任务、APK 构建、安装和 冷启动。 - 真机 smoke:OnePlus PKG110,Android 16/API 36;MainActivity 冷启动约 0.9 秒, 进程存活、前台窗口正确、logcat 无崩溃,画面正常停在 Shizuku 使用指南。 - Android Studio `winget` 静默安装卡住并已终止;命令行构建不依赖 IDE,因此不作为 T-001 blocker。