openGym Android独立App构建教程:免服务器、免账号,3步打包健身记录APK
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),仅供参考

相关新闻

Apache Beam Go SDK 完全指南:从直接运行到 Dataflow 云执行与源码开发

Apache Beam Go SDK 完全指南:从直接运行到 Dataflow 云执行与源码开发

【免费下载链接】beam Apache Beam is a unified programming model for Batch and Streaming data processing. 项目地址: https://gitcode.com/gh_mirrors/beam18/beam 点击查看 免费下载 本文以 Apache Beam 仓库中的 Go SDK 说明文档 为核心骨架,结…

2026/10/10 11:32:47 阅读更多 →
高德地图Android开发指南:定位、标注与路线规划避坑实践

高德地图Android开发指南:定位、标注与路线规划避坑实践

简介:这是一份关于高德地图开发的学习资源包,面向需要使用高德地图API实现地图标注与路线规划功能的中初级开发者,可用于导航、物流或位置服务类应用的快速起步。压缩包共包含100个文件,大小约3.34MB,覆盖Android工程相…

2026/10/10 11:32:47 阅读更多 →
Pulse v6.4.0-rc.10 变更解析:滚动窗口指标、容量预测与告警投递控制体系

Pulse v6.4.0-rc.10 变更解析:滚动窗口指标、容量预测与告警投递控制体系

可观测性运维后端 【免费下载链接】Pulse Real-time monitoring dashboard for Proxmox VE, PBS, Docker, Kubernetes, TrueNAS and vSphere. Self-hosted, with smart alerts and AI patrols that catch silent failures. 项目地址: https://gitcode.com/gh_mirror…

2026/10/10 11:32:47 阅读更多 →

最新新闻

Java八种基本类型全解析:从内存布局到线上避坑实战

Java八种基本类型全解析:从内存布局到线上避坑实战

Java的八种基本类型,这个话题放在互联网上一搜一大把,但相信我,很多人在第一年学完就忘得干干净净。我自己带过几个人,面试时问int占几个字节,有人能回答上来,再问int的上限是多少、为什么负数下限比正数上…

2026/10/10 20:55:38 阅读更多 →
给AI对话助手外挂长期记忆:claude-mem架构与实战

给AI对话助手外挂长期记忆:claude-mem架构与实战

claude-mem 这名字起得相当直白——mem 就是 memory,把这个小工具和主流通用对话助手(下文就统一叫“模型助手”吧)放在一起,它的定位立刻清晰:给没有长期记忆的对话系统补上一块“外挂记忆”。我自己长期重度使用这类…

2026/10/10 20:55:38 阅读更多 →
微信点餐小程序毕设:SSM+MySQL全栈实战指南

微信点餐小程序毕设:SSM+MySQL全栈实战指南

简介:这是一套面向计算机专业本科生的微信点餐小程序毕业设计全栈开发资源,适用于课程设计、毕设选题与Java小程序技术栈综合实践。项目采用微信小程序前端(WXML/WXSS/JS) SSM(SpringSpringMVCMyBatis)后端…

2026/10/10 20:55:38 阅读更多 →
AnyPS5技术解析:PS5硬件约束下的跨运行时抽象实践

AnyPS5技术解析:PS5硬件约束下的跨运行时抽象实践

项目标题:“AnyPS5”这个名称本身带有强烈的指向性与模糊性并存的特征——它既像一个技术代号,又像一句口号;既暗示兼容性、泛用性(“Any”),又锚定在特定硬件生态(“PS5”)。但必须…

2026/10/10 20:55:38 阅读更多 →
Java Web动漫之家系统实战:从设计到部署避坑指南

Java Web动漫之家系统实战:从设计到部署避坑指南

简介:Java动漫之家系统设计与实现是一套面向动漫爱好者在线互动平台的完整开发设计方案,适用于JavaWeb课程设计、毕业设计或快速搭建动漫资源社区的项目预研。该方案以SSM框架为核心,结合MySQL数据存储与HTML5前端交互,从系统背景…

2026/10/10 20:55:38 阅读更多 →
免费开源 vs 截图 API 月入 2000 美金:独立开发的两条变现路线

免费开源 vs 截图 API 月入 2000 美金:独立开发的两条变现路线

免费开源 vs 截图 API 月入 2000 美金:独立开发的两条变现路线 【免费下载链接】tendedero Screenshots, hung out to dry. A tiny native macOS app that hangs every screenshot on a line at the top of your screen. 项目地址: https://gitcode.com/gh_mirror…

2026/10/10 20:54:37 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →