# 各平台客户端构建并放入下载目录 下载页提供的文件名由服务端配置 `CLIENT_VERSION` 决定(默认 `0.1.0`),格式为: - `FunMC-<版本>-windows-x64.exe` - `FunMC-<版本>-macos-arm64.dmg` / `FunMC-<版本>-macos-x64.dmg` - `FunMC-<版本>-linux-x64.AppImage` - `FunMC-<版本>-android.apk` 构建产物需**复制到服务器的下载目录**并**按上述文件名命名**,下载页才会显示「下载」按钮。 服务器下载目录:`/opt/funmc/downloads`(或环境变量 `DOWNLOADS_DIR`)。 --- ## 1. 版本号一致 构建前请确认与服务器一致: - 查看服务器:`grep CLIENT_VERSION /etc/funmc/server.env`(例如 `0.1.0`) - 下文中的 `VERSION` 请替换为该版本号。 --- ## 2. Linux(可在服务器本机执行) **在服务器或任意 Linux 机器上:** ```bash cd /opt/funmc/src/client # 或你的项目 client 目录 npm install --registry https://registry.npmjs.org/ npm run dist:linux ``` 产物在 `client/release/` 下,例如: - `FunConnect-1.1.0-Linux-x64.AppImage` 复制并重命名为下载页期望的文件名后放入下载目录: ```bash VERSION=0.1.0 # 与 CLIENT_VERSION 一致 cp release/FunConnect-*-Linux-x64.AppImage /opt/funmc/downloads/FunMC-${VERSION}-linux-x64.AppImage ``` --- ## 3. Windows **在 Windows 本机:** ```cmd cd client npm install npm run dist:win ``` 产物在 `client\release\`,例如: - `FunConnect-1.1.0-Win-x64.exe`(或带 nsis 的安装包) 上传到服务器后重命名并放入下载目录(在服务器上执行,或本机重命名后上传): ```bash # 在服务器上(假设已上传为 FunConnect-1.1.0-Win-x64.exe) VERSION=0.1.0 mv /path/to/FunConnect-1.1.0-Win-x64.exe /opt/funmc/downloads/FunMC-${VERSION}-windows-x64.exe ``` 或用 SCP 从本机直接放到服务器并命名(PowerShell 示例): ```powershell scp client\release\FunConnect-1.1.0-Win-x64.exe root@你的服务器IP:/opt/funmc/downloads/FunMC-0.1.0-windows-x64.exe ``` --- ## 4. macOS **在 Mac 本机:** ```bash cd client npm install npm run dist:mac ``` 产物在 `client/release/`,例如: - Apple Silicon: `FunConnect-1.1.0-Mac-arm64.dmg` - Intel: `FunConnect-1.1.0-Mac-x64.dmg` 上传到服务器并重命名(在服务器上): ```bash VERSION=0.1.0 mv /path/to/FunConnect-1.1.0-Mac-arm64.dmg /opt/funmc/downloads/FunMC-${VERSION}-macos-arm64.dmg mv /path/to/FunConnect-1.1.0-Mac-x64.dmg /opt/funmc/downloads/FunMC-${VERSION}-macos-x64.dmg ``` --- ## 5. Android(mobile/,Expo + React Native) Android 客户端在 **`mobile/`** 目录,使用 **Expo** 构建。任选其一即可。 ### 前置要求 - Node.js 18+ - **方式一(EAS 云端)**:Expo 账号([expo.dev](https://expo.dev) 注册) - **方式二(本地)**:Android Studio + Android SDK,并配置好 `ANDROID_HOME` ### 方式一:EAS Build(推荐,无需本机 Android 环境) 在项目根或 `mobile/` 下执行: ```bash cd mobile npm install # 安装 EAS CLI 并登录 npm install -g eas-cli eas login # 构建 APK(预览/内部分发,直接得到 .apk) eas build --platform android --profile preview ``` 构建完成后在 Expo 网页或邮件中下载 **APK**,上传到服务器后重命名并放入下载目录: ```bash VERSION=0.1.0 cp /path/to/下载的.apk /opt/funmc/downloads/FunMC-${VERSION}-android.apk ``` ### 方式二:本地构建(需 Android Studio + SDK) ```bash cd mobile npm install # 生成原生 android/ 目录 npx expo prebuild # 构建 Release APK cd android && ./gradlew assembleRelease ``` APK 输出路径: - `mobile/android/app/build/outputs/apk/release/app-release.apk` 复制到服务器下载目录并重命名: ```bash VERSION=0.1.0 cp mobile/android/app/build/outputs/apk/release/app-release.apk /opt/funmc/downloads/FunMC-${VERSION}-android.apk # 若在服务器上,可先 scp 上传再执行 cp/mv ``` --- ## 6. 一键复制脚本示例(在服务器上使用) 在服务器上,若已把各平台构建产物上传到某目录(或本机刚构建好 Linux 版),可统一复制并重命名: ```bash # 请先确认版本号与 /etc/funmc/server.env 中 CLIENT_VERSION 一致 VERSION=0.1.0 DOWNLOADS=/opt/funmc/downloads # Linux(本机刚构建时) cp -v /opt/funmc/src/client/release/FunConnect-*-Linux-x64.AppImage "$DOWNLOADS/FunMC-${VERSION}-linux-x64.AppImage" 2>/dev/null || true # 若 Windows/macOS 已上传到 /opt/funmc/uploads/ 等目录,可类似: # cp -v /opt/funmc/uploads/FunConnect-*-Win-x64.exe "$DOWNLOADS/FunMC-${VERSION}-windows-x64.exe" 2>/dev/null || true # cp -v /opt/funmc/uploads/FunConnect-*-Mac-arm64.dmg "$DOWNLOADS/FunMC-${VERSION}-macos-arm64.dmg" 2>/dev/null || true # cp -v /opt/funmc/uploads/FunConnect-*-Mac-x64.dmg "$DOWNLOADS/FunMC-${VERSION}-macos-x64.dmg" 2>/dev/null || true ``` --- ## 7. 验证 - 在服务器上:`ls -la /opt/funmc/downloads` - 浏览器打开:`http://你的服务器:3000/download`,有文件的平台会显示「下载」按钮,没有的显示「暂无」。