Files
FunConnect/docs/BUILD-CLIENT.md
2026-02-26 22:28:43 +08:00

186 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 各平台客户端构建并放入下载目录
下载页提供的文件名由服务端配置 `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. Androidmobile/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`,有文件的平台会显示「下载」按钮,没有的显示「暂无」。