feat(android): establish Roubao build baseline

This commit is contained in:
QiuSW
2026-07-25 18:20:37 +08:00
parent 285606639b
commit 04fa4a0994
96 changed files with 15249 additions and 125 deletions
+20 -21
View File
@@ -6,10 +6,10 @@
| 维度 | 选型 | 状态 | 说明 |
| --- | --- | --- | --- |
| Android 基础 | Roubao `main` 的 Kotlin 原生 Android 代码,应用版本 1.4.2 | 上游已核实,待接入 | 上游为 `Turbo1123/roubao`,MIT;接入时固定具体 commit。 |
| Android IDE/JDK | Android Studio Hedgehog 2023.1.1 或更高;JDK 17 | 上游已核实 | 首次导入不接受 IDE 自动升级 AGP、Gradle 或 Kotlin。 |
| Android 构建链 | Gradle 8.2;AGP 8.2.0;Kotlin 1.9.20;JVM target 17 | 上游已核实 | 使用仓库内 Gradle Wrapper,不依赖全局 Gradle。 |
| Android SDK | compileSdk/targetSdk 34;minSdk 26;SDK Build Tools 34.0.0 | 上游已核实 | 支持 Android 8.0+;真机自动化优先 Android 11+。 |
| Android 基础 | Roubao `main` 的 Kotlin 原生 Android 代码,应用版本 1.4.2 | 已接入并构建 | 固定 `main@c8a6d7f...`,来源与调整见 `android-buyer/UPSTREAM.md`。 |
| Android IDE/JDK | Android Studio Hedgehog 2023.1.1 或更高;JDK 17 | JDK/CLI 已验证,IDE 可选安装 | 命令行构建不依赖 Android Studio;首次用 IDE 导入时不接受自动升级。 |
| Android 构建链 | Gradle 8.2;AGP 8.2.0;Kotlin 1.9.20;JVM target 17 | 已验证 | 已补齐上游缺失的 `gradlew.bat`,不依赖全局 Gradle。 |
| Android SDK | compileSdk/targetSdk 34;minSdk 26;SDK Build Tools 34.0.0 | 已验证 | 支持 Android 8.0+;本机使用 Command-line Tools 22.0。 |
| Android UI | Jetpack Compose + Material 3;Compose Compiler 1.5.5 | 上游已核实 | Compose BOM 为 2023.10.01。 |
| Android 自动化 | 项目目标以 `AccessibilityService` 为主,Shizuku 为兼容/增强路径 | 目标已定,待实现 | 上游 `main` 使用 Shizuku 13.1.5;无障碍实现位于独立开发分支,不能把它误认为主分支现状。 |
| 第一层任务源 | UTF-8 四行蝦皮订单文本 + 同订单号 JPEG | 首份样例已核实,待实现 | 使用 Debug/测试专用 `TaskSource`;原始数据和生成物不得提交。 |
@@ -27,7 +27,7 @@
| VLM 接入 | 应用内统一适配器,优先兼容 OpenAI 风格多模态接口 | 接口已定,供应商待定 | 模型输出必须符合本项目 JSON Schema。 |
| 通知 | MVP 不使用推送 | 已定 | 点击“获取任务”调用原子 claim API;V2 再评估厂商推送/WebSocket。 |
| 后端测试 | 标准库 `testing` + `httptest` | MVP 已定 | 覆盖状态机、权限、幂等、SQLite 事务和输入校验。 |
| Android 测试 | JUnit + 现有上游测试工具;真实设备 smoke | 待源码核实 | UI 自动化核心必须在目标设备验证。 |
| Android 测试 | Gradle `test` + 真实设备 smoke | 基线已验证 | 上游没有 `test/androidTest` 源;T-003 建立 workflow 测试。 |
| 部署 | 单机局域网 Go 服务;容器化后置 | MVP 已定 | Android 测试机必须能通过 HTTPS 或受控测试网络访问。 |
## Roubao 上游版本基线
@@ -51,15 +51,13 @@
| 自动化依赖 | Shizuku API/Provider 13.1.5 |
| 无障碍开发分支 | `roubao2.0+AccessibilityService`,核实时 commit `5b114c0a9476c359b27cfe994743fc7beb0a3554` |
上述值来自上游 README、`build.gradle.kts`、`app/build.gradle.kts` 和
`gradle/wrapper/gradle-wrapper.properties`。它们是接入前的远端核实结果,不代表
本仓库已经构建通过。`T-001` 接入时必须再次确认远端 commit,并把最终采用的 commit
作为可复现基线。
上述版本已在 2026-07-25 使用 JDK 17.0.13、SDK 34 和 Build Tools 34.0.0 完成
Windows Debug 构建。上游无障碍分支落后于 `main` 的修复和 1.4.2 能力,因此不整体
切换分支;后续只选择性移植无障碍服务。
上游启用了 Google Services 4.4.2、Firebase Crashlytics Gradle Plugin 3.0.2 和
Firebase BOM 33.7.0,但 `google-services.json` 被 `.gitignore` 排除。干净构建必须
提供本项目自己的 Firebase 配置,或者在不需要遥测时移除相关插件和依赖;不得提交
真实 Firebase 配置。
上游 Firebase 配置依赖未提交的 `google-services.json`,且第一层不需要遥测。
接入基线已移除 Google Services、Firebase Analytics/Crashlytics 及云端崩溃上报
设置,保留本地 `CrashHandler`,从而无需伪造或提交 Firebase 凭证。
## 关键决策
@@ -113,7 +111,7 @@ RabbitMQ、NATS 和 gRPC 为主,不符合最小 Gin + SQLite 边界。
## 计划目录
```text
android-buyer/ # Kotlin Android App
android-buyer/ # 已接入的 Roubao Kotlin Android App
backend-api/
cmd/api/ # 进程入口,只负责装配和生命周期
internal/domain/ # 实体、状态机和确定性规则
@@ -132,20 +130,21 @@ docs/
## 构建与运行命令
当前没有源码,以下是计划形状而非可运行证据:
| 用途 | 计划命令 | 当前状态 |
| 用途 | 命令 | 当前状态 |
| --- | --- | --- |
| Android 构建 | `android-buyer\gradlew.bat assembleDebug` | 待 `T-001` |
| Android 单元测试 | `android-buyer\gradlew.bat test` | 待 `T-001` |
| Android 标准验证 | `.\init.ps1` | 已验证 |
| Android 构建 | `android-buyer\gradlew.bat assembleDebug --no-daemon` | 已验证 |
| Android 测试任务 | `android-buyer\gradlew.bat test --no-daemon` | 已验证;无测试源 |
| Android 安装/启动 | `$env:RUN_START_COMMAND="1"; .\init.ps1` | 已在 Android 16 真机验证 |
| 后端依赖 | `go mod download`(在 `backend-api/`) | 待 `T-201` |
| 后端测试 | `go test ./...`(在 `backend-api/`) | 待 `T-201` |
| 后端构建 | `go build -o bin/cmroubao-api.exe ./cmd/api` | 待 `T-201` |
| 后端启动 | `go run ./cmd/api` | 待 `T-201` |
| 数据迁移 | `goose -dir migrations sqlite3 ./var/cmroubao.db up` | 待 `T-201` |
任何命令只有实际执行成功后才能写入 `init.ps1`、`init.sh` 和
`current-state.md` 的“当前可运行内容”。
`gradlew installDebug` 在当前 Android 16 设备上由旧版 AGP/ddmlib 返回 `-99`,
但 SDK Platform Tools 37.0.0 的 `adb install -r -t` 成功。标准脚本因此使用 SDK
内新版 ADB 安装,避免 PATH 中旧版 ADB 1.0.32。
## 依赖纪律