# yixin-app **Repository Path**: gabr/yixin-app ## Basic Information - **Project Name**: yixin-app - **Description**: 一心APP端,音视频学习用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-11 - **Last Updated**: 2026-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一心 App 面向学佛团体内部学习的一心 App。前端为**经典 uni-app(Vue 3,webview 渲染)**,后端为 git submodule(`yixin-backend`,与本项目同一仓库,可正常开发、持续修改)。 - 接口 Base:`http://47.83.185.216/api/v1` - 统一响应:`{ code: 0, data, message }`(Header:`Authorization: Bearer `) ## 目录结构 ``` App.vue / main.js / pages.json / manifest.json / uni.scss 应用入口与配置 pages/ 页面(home 首页、study 修学、record 学习记录、mine 我的、 login/register/pending、player/{video,audio,article}、 favorite、search、playlist/{playlist,detail}) components/ 组件(yx-icon 线性图标、continue-bar 续学条、input-dialog、rich-content) utils/ 工具(request、auth、tracker 学习计时、player、playlist、favorite、format) static/ 图标、Tab、启动图、App 图标 docs/ 设计与技术文档 build-android-apk.ps1 App + 网页版一键打包发布脚本 prototype/ 设计原型 ``` ## 开发运行 用 HBuilderX 打开本项目,运行到浏览器 / App 基座即可。页面样式与业务逻辑分离,接口封装在 `utils/request.js`。 ## 打包发布 App 与网页版(一键脚本) 项目根目录执行(默认同时构建 Android APK 和 H5 网页版): ```powershell powershell -ExecutionPolicy Bypass -File .\build-android-apk.ps1 ``` 常用参数: ```powershell # 只发布网页正式版(不递增 App 版本号) powershell -ExecutionPolicy Bypass -File .\build-android-apk.ps1 -SkipApp # 只发布网页测试版到 /appt-<当前版本>/ powershell -ExecutionPolicy Bypass -File .\build-android-apk.ps1 -SkipApp -WebTest # 只发布 Android APK powershell -ExecutionPolicy Bypass -File .\build-android-apk.ps1 -SkipWeb # 同时同步服务器 Nginx 配置(首次部署或配置变更时使用) powershell -ExecutionPolicy Bypass -File .\build-android-apk.ps1 -SyncNginx # 指定 AppKey / 网页 SSH 私钥 powershell -ExecutionPolicy Bypass -File .\build-android-apk.ps1 -AppKey "你的AppKey" -WebSshKey "C:\path\yixin-ecs.pem" ``` 默认(App + 网页)打包时,H5 **测试版**发布到 `https://amtf.site/appt-<版本>/`,服务器目录为 `/opt/yixin/yixin-backend/admin/dist/appt-<版本>`,不会覆盖正式版 `/app/`。 到 `/debug/` 页面把该 App 版本「全量发布」时,对应测试版网页会同时覆盖到 **https://amtf.site/app/**。 `-SkipApp`(只发网页)仍直接发布正式版到 `/app/`。 SSH 私钥会依次查找:项目根 `yixin-ecs.pem`、`keys\yixin-ecs.pem`、`~\.ssh\yixin_ecs.pem`、临时目录 `uni-agent\yixin-ecs.pem`。 > 脚本是**幂等且自愈**的:每次运行都会把「离线原生工程」校正到位,缺什么补什么,不依赖任何手工步骤。 每次自动完成: 1. 生成 App 本地打包资源(HBuilderX CLI `publish app-android`)。 2. 复制 `www` 到离线工程、写入 `dcloud_control.xml` 的 appid。 3. **校正原生工程**:包名、版本、应用名、appid(单一数据源 `manifest.json`);签名(从 `yixin.keystore.info.txt` 读取);`strings.xml`、`local.properties`、`dcloud_control.xml`。 4. 写入 **DCloud 离线 AppKey**(`-AppKey` 或项目根 `yixin.appkey.txt`)。 5. 补齐 **video/audio 模块库**:`media-release.aar`、`weex_videoplayer-release.aar`。 6. 复制**启动图 / 图标 / push.png**(push.png 用重建方式规避损坏数据流)。 7. `gradlew clean assembleRelease` → 归档 → 校验(打印包名、版本、AppKey)。 8. 构建 H5 网页版(HBuilderX CLI `publish web`)→ 打包上传服务器 → 发布到 `/appt-<版本>/`(测试版)→ 校验访问。 9. `/debug/` 全量发布 App 版本时,把对应 `/appt-<版本>/` 改写基准路径后覆盖到 `/app/`。 产物: - APK:`unpackage\release\apk\yixin-<版本>-offline-<时间戳>.apk` - 网页测试版:`https://amtf.site/appt-<版本>/` - 网页正式版:`https://amtf.site/app/`(由 `/debug/` 全量发布时更新) ### 固定路径(换机器只改脚本顶部这一块) | 项 | 值 | | --- | --- | | HBuilderX CLI | `C:\Users\amaiqi\Documents\HBuilderX\cli.exe` | | JDK 17 | `D:\Test\Android\jdk-17` | | Android SDK | `D:\Test\Android\Sdk` | | 离线 SDK 工程 | `D:\Test\Android-SDK@5.26.82680_20260914\...\HBuilder-Integrate-AS` | | 应用包名 | `com.guangyuan.yixin` | | appid | `__UNI__1B1AA75` | ### 首次 / 换机器需要一次性准备 1. 安装 JDK 17 与 Android SDK(platform-35 / build-tools 35.0.0);Gradle 由 wrapper 自动下载。详见 `docs/android-apk-build.md` 第一节。 2. 申请并配置 **DCloud 离线 AppKey**(与 appid + 包名 + 签名 SHA1 绑定)。项目固定信息: | 项 | 值 | | --- | --- | | appid | `__UNI__1B1AA75` | | 包名 | `com.guangyuan.yixin` | | SHA1 | `4E:35:90:1E:53:5E:41:C1:1C:B1:C2:3B:F8:6E:3A:92:3D:28:59:4B` | 申请入口:https://dev.dcloud.net.cn → 应用管理 → 各平台信息 → Android 离线 AppKey。配置方式见 `docs/android-apk-build.md` 第七节。 ### 常见问题 - **启动提示「未配置 AppKey 或配置错误」**:未配置离线 AppKey,或 appid / 包名 / SHA1 与申请时不一致。用 `-AppKey` 或 `yixin.appkey.txt` 配置,并核对上表三者。 - **进入视频/音频提示「未打包 videoPlayer 模块」**:离线工程 `libs` 缺 `media-release.aar`(脚本已自动补齐)。 - **启动图像被拉伸**:离线 SDK 会拉伸 `res/drawable/splash.png` 铺满全屏;使用与手机竖屏比例接近的启动图(脚本使用 `static/app/splash-android-1080x2400.png`)。 - **www 已更新但界面还是旧的**:Gradle 增量缓存;脚本已强制 `clean`。 ## 相关文档 - `docs/android-apk-build.md` —— Android 离线打包完整说明(环境准备、手动步骤、AppKey、常见坑) - `docs/design.md` —— UI / 交互设计说明 - `docs/player-solution.md` —— 音视频播放器技术方案 - `docs/editor-solution.md` —— 文章编辑器与正文方案 ## 安全提醒 `yixin.keystore`、`yixin.keystore.info.txt`、`yixin.appkey.txt`、`serverinfo.txt` 含敏感信息,已在 `.gitignore` 中,**请勿提交或外传**。更新同一 App 必须使用同一签名证书,否则无法覆盖安装。