移动应用 · 已发布
Choyeon 健身
React Native / Expo 健身应用
关于
使用 Expo 构建的移动端健身应用,提供训练计划与动作指导。
Choyeon Exercises 是 React Native / Expo 健身应用,包含训练计划与动作演示。Android 安装包已构建,App Store 上架待定。
功能
- 训练计划
- 动作指导
- 移动端优先
更新日志
# Choyeon Exercises v1.0.0 > 本版本为仓库「重新出发」的基准版本:在原有功能之上完成了一轮**性能 / 代码质量 / 可维护性 / 健壮性**的深度优化,并补齐了若干页面与本地化。 ## 性能优化 - **训练执行页**:修复休息计时器每秒触发整屏重渲染的问题。将 `ExerciseBlock / SetRow / SummaryPill / NumInput / MiniTag` 全部 `memo` 化,回调引用通过 `useCallback` 稳定,样式 `useMemo` 化,PR 自动判定提取为纯函数。现在每秒只重渲染计时器相关子树。 - **首页**:原 `SectionHeader` 在 render 体内定义,每次渲染整段 remount;90+ 条 `StyleSheet` 以 `activeWorkout` 对象为依赖,训练过程中被反复重建。已改为模块级 `HomeSectionHeader` + `createHomeStyles` 样式工厂,并收窄 Zustand 订阅粒度到标量。 - **列表卡片**(`ExerciseCard` / `GifPlayer`):逐实例创建 `StyleSheet` 改为按主题 `WeakMap` 模块级缓存,FlashList 滚动时不再持续分配 / GC。 ## 算法与正确性 - `analytics` 的 `endWorkout` PR 扫描由 O(n²) 改为单次线性扫描,并统一「更强」判定口径(`isStrongerSet`),消除三处判定可能不一致。 - 修复 `pr.date.slice(5)` 在旧备份数据缺日期时崩溃的隐患:新增 `dateShort()` 兜底,覆盖 `profile / 详情 / stats` 共 7 处,并给 `weight / reps` 补 `?? 0`。 - 修复模板新建时英文名称误用中文键(`newNameZh`)的本地化 bug(已为 7 种语言补 `newNameEn` 键并修正调用)。 - 统一肌群取色入口(`theme.muscleColor()`),消除同肌群不同页面颜色不一致。 - 倒计时 `mm:ss` 格式统一(`warmup` 原 `0:5` 不补零 → `formatMmss`)。 ## 新功能与本地化 - 新增页面 / 组件:身体部位统计(body)、训练统计(stats)、训练模板(templates)、热身(warmup)、杠铃片计算器(PlateCalculator)、备份与错误边界(BackupSheet / ErrorBoundary)等。 - 新增 `es / fr / ja / ko / ru` 翻译,并补充 `check-i18n` / `check-icons` / `check-dynamic-keys` 校验脚本。 ## 工程与仓库 - 清理无用缓存、临时文件、调试截图与一份 17.5 MB 废弃数据快照。 - 完善 `.gitignore`(忽略 `.workbuddy/`、构建日志、各类截图 / 调试 xml),保证仓库无垃圾文件。 - 纳入 Android 原生工程(含离线媒体资产)与项目配置。 ## 安装包(APK / AAB) - **已发布 APK**:[`app-release-arm64-v8a.apk`](https://github.com/Choyeon/choyeon-exercises/releases/download/v1.0.0/app-release-arm64-v8a.apk)(约 173 MB,release 签名,包名 `com.choyeon.exercises`)。 - 架构:`arm64-v8a`(覆盖绝大多数现代 Android 真机)。如需兼容老设备(armeabi-v7a)或模拟器(x86/x86_64),请在本机重新构建全架构包(见下)。 - 其他构建方式: - 云端:`eas build -p android --profile preview`(APK)或 `--profile production`(AAB,需 EAS 账号与签名配置) - 本地:`cd android && ./gradlew assembleRelease`(需要本地 Android SDK 与签名密钥) - 本机一键脚本:`D:/AndroidToolchain/build-release.bat`(已配置单架构 + 单线程 NDK 编译,规避 Windows 下并行 PCH 挂起) > 校验门禁:`npm run verify`(TypeScript 类型检查 + 60 个单元测试 + i18n / 动态键 / 图标一致性检查)全部通过。