openGym Android独立App构建教程免服务器、免账号3步打包健身记录APK【免费下载链接】openGymhttps://github.com/DuarteSantos8/openGym项目地址: https://gitcode.com/gh_mirrors/ope/openGymopenGym 是一款自托管的健身房与体重追踪工具计划每周训练、跟练引导式训练、记录每一组次数与体重变化。它的同一套代码还能打包成Android 独立 AppAPK不需要服务器、不需要注册账号所有训练数据只存在你自己的手机上。本教程面向新手手把手带你从零构建并签名出可安装的 APK全程不到 10 分钟。为什么选择独立 App 版本openGym 有「两种形态」来自同一份代码区别一目了然维度自托管版默认独立 App 版VITE_MOBILE1运行位置浏览器 你的服务器原生跑在 Android 上Capacitor 壳账号通行密钥Passkey登录无账号——手机即账号数据同步到你的服务器只留在本机App 私有存储里的 JSON 文件训练提醒服务器 Web Push系统本地通知无需服务器动作演示媒体服务器提供从内置 CDN 加载 核心理念独立 App 从不与任何后端通信——没有登录页、没有同步、没有遥测。数据写在本机文件opengym-state.json每次改动都会自动落地一次是真正「装完即用」的口味。对比详情可参考 README.md 与 docs/MOBILE.md。构建前准备环境清单在开始之前请确认你的电脑已具备Node 20用于前端构建Android Studio自带 Android SDKJava 21Gradle 需要这三样是官方列出的最小依赖安装完成后即可开工。完整环境说明见 docs/MOBILE.md。三步构建从源码到可运行 App第 1 步获取源码并安装依赖git clone https://gitcode.com/gh_mirrors/ope/openGym cd openGym/frontend npm install第 2 步执行移动端构建npm run build:mobile这一条命令会注入VITE_MOBILE1环境变量把 CDN 媒体地址烘焙进包体并把 Web 构建产物同步cap sync到android/与ios/两个原生工程。脚本定义在 frontend/package.json请留意每次改动 Web 代码后都要重跑它再原生编译。第 3 步打开 Android Studio 并运行npx cap open android打开后点击运行按钮即可在模拟器或真机上看到 App。App 的应用标识applicationId为ch.duartesantos.opengym在 frontend/capacitor.config.json 中定义版本号维护在 frontend/android/app/build.gradle。进阶打包 Release 版并签名要分发给别人需要构建并签名一个Release APKcd frontend npm run build:mobile cd android ./gradlew assembleRelease # 产物app/build/outputs/apk/release/app-release-unsigned.apk然后做一次性的密钥库创建务必妥善保存后续更新必须用同一把签名密钥否则 Android 会拒绝覆盖安装keytool -genkeypair -keystore my.keystore -alias opengym -keyalg RSA -validity 10950 zipalign -f -p 4 app-release-unsigned.apk aligned.apk apksigner sign --ks my.keystore --ks-key-alias opengym --out openGym.apk aligned.apk最终得到openGym.apk把它传到手机安装即可首次会提示允许来自该来源的安装属正常行为。签名流程参考 docs/MOBILE.md。数据如何保存在本地这是独立 App 最让人安心的部分。每次保存应用都会把当前状态镜像写到 App 私有目录下的opengym-state.json启动时再从该文件恢复。这套逻辑位于 frontend/src/lib/mobile.js为什么不只依赖本地存储因为部分移动平台在存储吃紧时会清空 Web 视图的本地缓存而这份 JSON 文件才是真正的持久副本。备份怎么做打开「设置」中的Export backup (JSON)会通过系统分享面板文件、邮件等导出opengym-backup-日期.json无需浏览器下载。备份与导入逻辑见 frontend/src/views/Settings.jsx。数据持久化在主状态文件 frontend/src/store/useStore.js 中触发——每次persist()都会同时写入文件。原生训练日提醒独立 App 的提醒是系统级本地通知完全不需要服务器按你每周计划里「有排练的那一天」逐日调度一条重复通知精确到分钟。在「设置 → Workout day reminder」里开关即可首次开启时会请求通知权限。调度实现同样在 frontend/src/lib/mobile.js。常见问题速查build:mobile之后能直接部署 Web 版吗不能。此时frontend/dist是移动包部署到服务器前需再跑一次普通npm run build。能上架应用商店吗作者刻意不上架走侧载sideload路线绕开商店规则与费用。想改 App 图标 / 启动图源图是 1024×1024 的frontend/resources/icon.svg用官方资产生成命令一键产出各尺寸见 docs/MOBILE.md。小结openGym 独立 App 证明了不建服务器、不注册账号也能拥有一个完整的健身记录工具。核心就是三条命令——npm install→npm run build:mobile→npx cap open android。数据只属于你装在 App 的私有存储里随时可通过分享面板导出备份。快去动手打包一个属于自己的 APK 吧更多背景可查阅 README.md、docs/MOBILE.md 与 CONTRIBUTING.md。【免费下载链接】openGymhttps://github.com/DuarteSantos8/openGym项目地址: https://gitcode.com/gh_mirrors/ope/openGym创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考