Files
zijunchiang 0ee95c46e0 test(release): 逐文件核对「发布包 == 打标签的树」(T-AND-018)
新增 build/check_tracked_release.py(纯标准库):对包内每个文件按路径决定比较基准 ——
app-release.apk 比工作树构建结果,其余比 git show <tag>:<路径>;内容不一致 / 多余 /
构建产物缺失都会列出并退出 1。已接入 accept-release.sh(第 0 步)与 package-release.sh 提示。

实测(已发布的 v0.2.2 资产重新下载后):
  包内 12 个文件:源码/文档 11(与 tag v0.2.2 比)+ 构建产物 1(APK 比工作树构建)
  ✓ 逐文件一致:0 处不一致 / 0 处多余 / 0 处缺失
同行产品级验收(版本元数据 0.2.2/202、native 体检、契约快照、验签)同时全绿。

踩坑:第一版把 BUILD_OUTPUTS 的键一律当目录前缀,而 APK 是单文件,拼出
app-release.apk/ 导致「工作树缺失」误报;现区分目录前缀与精确文件名。
2026-09-18 03:10:35 +08:00

113 lines
3.8 KiB
YAML
Raw Permalink Blame History

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.
project: opendance-android-app
version: 0.2.2
repository: opendance-android
default_branch: main
platform: Android 10+(minSdk 29 / targetSdk 34)
contracts_version:
rest-api: 0.5.0
websocket-keypoints: 0.2.0
data-models: 0.7.0
skeleton-topology: 0.2.0
model-formats: 0.5.0
database: 0.4.0
# 契约变更流程(文档 7.2):
# 任何跨端契约变更必须先在 opendance-web 修改 contracts/ 并提升版本,
# 再在本项目创建适配任务。本项目内的 contracts/ 只是只读快照。
dependencies:
- name: opendance-windows
kind: websocket-producer
contract: contracts/websocket-keypoints.md
usage: 本端为**发送方**,主动连接 Windows 客户端的 ws://<host>:8765/pose
- name: opendance-web
kind: contract-source
contract: contracts/skeleton-topology.md
usage: 33 点索引顺序与坐标语义(MediaPipe 原生顺序即契约顺序)
tasks:
- id: T-AND-001
file: tasks/001-scaffold.md
scope: Android Studio 项目骨架
status: done
- id: T-AND-002
file: tasks/002-camera-x.md
scope: CameraX 采集
status: done
- id: T-AND-003
file: tasks/003-mediapipe-pose.md
scope: MediaPipe Pose 端侧推理
status: done
- id: T-AND-004
file: tasks/004-keypoint-serializer.md
scope: 33 点 -> 239 字节帧
status: done
- id: T-AND-005
file: tasks/005-websocket-client.md
scope: WebSocket 推流 + 自动重连
status: done
- id: T-AND-006
file: tasks/006-connect-ui.md
scope: 连接页 + 主机发现
status: done
- id: T-AND-007
file: tasks/007-running-ui.md
scope: 运行页 + 状态指示
status: done
- id: T-AND-008
file: tasks/008-about-page.md
scope: 关于页 + 开源声明
status: done
- id: T-AND-009
file: tasks/009-build-apk.md
scope: Android Studio 打包
status: done
- id: T-AND-010
file: tasks/010-about-version.md
scope: 「关于」清单展示当前版本号 + 契约版本单一来源
status: done
- id: T-AND-011
file: tasks/011-reconnect.md
scope: 连接状态机 / 保活 / 去重与 Windows 端对齐
status: done
- id: T-AND-012
file: tasks/012-mediapipe-crash.md
scope: MediaPipe 初始化崩溃修复 + 诊断
status: done
- id: T-AND-013
file: tasks/013-apk-version.md
scope: APK 产物版本元数据(AndroidManifest 的 versionName/versionCode)校验 + 打包脚本 die 未定义修复
status: done
- id: T-AND-014
file: tasks/014-release-acceptance.md
scope: 发布包级端到端验收(读 zip 内 APK:版本元数据 / ABI+MediaPipe native / 模型资源 / R8 / 契约快照)
status: done
- id: T-AND-015
file: tasks/015-native-libs.md
scope: APK native 库体检(ELF 类型 / DT_NEEDED 闭包 / 16 KB 页对齐),纯标准库实现
status: done
- id: T-AND-016
file: tasks/016-reconnect-integration.md
scope: JVM 内以真实 WebSocket(MockWebServer)验证重连链路 + 修「上一次关闭码污染下一次会话」
status: done
- id: T-AND-017
file: tasks/017-backoff-and-pong.md
scope: 可注入计时 + 退避封顶端到端验证 + 修「合规不回 pong 的接收端被周期性误判链路已死」
status: done
- id: T-AND-018
file: tasks/018-tracked-release-check.md
scope: 逐文件核对「发布包 == 打标签的树」(源码比 tag、APK 比工作树构建)
status: done
deliverable:
artifact: opendance-android-v0.2.2.apk
packaging: Gradle 命令行 / Android Studio
includes:
- app-release.apk
- THIRD_PARTY.md
- README.txt
- contracts/ # 契约快照
release_rules:
- release 包只含 arm64-v8a / armeabi-v7a(真机 ABI)
- 版本号单一来源:versionName(= project.yaml 的 version)与 BuildConfig 契约版本