纯本地的体重 / 体脂趋势记录 App。没有账号、没有网络权限、没有广告 —— 数据只在本机处理。
下载:最新版 APK(1.2) · 1.73 MB · 要求 Android 8.0(minSdk 26)及以上(体脂秤同步需 Android 9+)
- 概览 —— 「当前 / 目标体重 + BMI 水平」卡片,附最近一次体脂
- 折线图 —— 自绘 Canvas,无第三方图表库。日 / 周 / 月 / 年 / 总五种区间,整数刻度、等宽数字、monotone cubic 平滑
- BMI 预警 —— 超重 / 肥胖的分级阈值直接画进体重图。只在它落进当前坐标范围时出现 —— 体重贴近临界值时那条线自然浮现,离得远就不画,也绝不为了画它把折线压平
- 记录管理 —— 首页历史区、全部记录、点击编辑、左滑露出删除按钮(左滑本身不删除,必须再点一下)
- BMI 标准 —— 中国 / WHO 两套阈值可切换
- 体脂秤同步(实验功能) —— 通过系统的「健康数据共享」读体重与体脂率。走设备内 IPC,
仍然不需要网络权限;只读最近 30 天,重复的称重会自动去重。要求 Android 9(API 28)及以上
- 默认关闭,要在「设置 → 实验功能」里自己打开。打开后可分别选手动同步(首页顶栏多一个按钮, 点一下才同步)与自动同步(每次启动应用拉一次),两者可同时开
- 前提:体脂秤应用必须自己把称重写进「健康数据共享」。 部分品牌未提供该能力 (小米官方应用即不支持);数据源没有写入时,这个功能不会有任何数据。 所以它被单列为「实验功能」,而不是当作本应用自带的能力
- 记录来源标记 —— 同步来的记录带「体脂秤」标记,家庭共用一台秤时用于分辨
- 数据自主 —— CSV 导出与导入、一键清空;全程不联网
- 注意:Android 的系统自动备份若已开启,是系统可能把本应用数据备份到你的云账户 —— App 自身没有网络权限,做不了这件事。介意请在系统设置里关闭本应用的备份
- 轻 —— release 包 1.71 MB
| 语言 / UI | Kotlin 2.3.20 · Jetpack Compose · Material 3 |
| 存储 | Room(记录)· DataStore(档案) |
| 架构 | 单向数据流(ViewModel + StateFlow)· 手写依赖容器 |
| 图表 | 自绘 Canvas |
| 版本 | minSdk 26(Android 8.0)· targetSdk 36 |
./gradlew assembleDebug # 构建
./gradlew testDebugUnitTest # 单测(184 个)
./gradlew connectedDebugAndroidTest # 设备上的 Room 迁移测试(要模拟器/真机)
./gradlew distRelease # 出正式签名包 → dist/WeightDiary-<版本>.apk「没有网络权限」这条约束是脚本验证的,不是靠自觉:tools/verify-no-internet.ps1
解析合并后的清单并断言没有 INTERNET(依赖的清单会合并进来,那是唯一的破口)。
本机执行策略若禁止运行未签名脚本,用 -ExecutionPolicy Bypass 跑。
需要 JDK 17+ 与 Android SDK(compileSdk 36)。local.properties 里的 sdk.dir 指向你的
SDK 位置,该文件不在版本库里,各人自己配。
| 文档 | 内容 |
|---|---|
| 开发手册 | 项目结构、里程碑、关键约定、出包流程 —— 想动手改代码先看这份 |
| 01 需求文档 | 产品定位、功能清单、非目标、验收标准 |
| 02 设计规范 | 设计 token、逐区块界面规格、状态、动效 |
| 03 技术设计 | 架构分层、数据模型、核心算法、风险清单 |
| 04 决策记录 | 全部决策与被否原因 —— 想改设定之前先翻这里 |
| 05 交付计划 | 里程碑划分与出口标准 |
| 06 体脂秤接入调研 | 为什么是 Health Connect(选型与被推翻的说法) |
| 07 真机测试清单 | 发版前必须在真机(尤其 MIUI)上复核的项 |
| 08 Health Connect 同步设计 | 怎么接:数据模型、去重、过滤、已知限制 |
| 09 真机实测记录 | 实测验过什么、发现了什么(含两个 bug 的根因与证据链) |
设计稿是脚本渲染的高保真图,不是手绘:改完设计 token 重跑 docs/assets/render/ 下的脚本即可同步,
设计稿不会与文档脱节。
MIT © 2026 collinszheng