本文档说明如何使用自动部署功能将构建好的 Android APK 文件上传到远程服务器。
android-releases 目录v{版本号}-{时间戳})latest.apk 符号链接指向最新版本versions.json 供客户端查询服务器端目录结构:
/var/www/html/
├── releases/ # H5 部署目录
│ ├── v1.0.0-20250130-120000/
│ └── latest -> v1.0.0-20250130-120000
│
└── android-releases/ # Android APK 部署目录
├── v1.0.0-20250130-120000/
│ └── dros-v1.0.0.apk
├── v1.0.1-20250131-150000/
│ └── dros-v1.0.1.apk
├── latest.apk -> v1.0.1-20250131-150000/dros-v1.0.1.apk
└── versions.json
需要设置以下环境变量(与 H5 部署共用):
DEPLOY_KEY=<SSH 私钥内容>
DEPLOY_HOST=<服务器地址>
DEPLOY_USER=<SSH 用户名>
DEPLOY_PATH=<H5 部署路径,如 /var/www/html/releases>
新增:启用 Android 自动部署
DEPLOY_ANDROID=true
在构建 Android APK 时启用自动部署:
# Windows PowerShell
$env:DEPLOY_ANDROID="true"
npm run build:android
# Linux/macOS
DEPLOY_ANDROID=true npm run build:android
npm run build:android
构建完成后会提示:
💡 提示: 设置 DEPLOY_ANDROID=true 可自动部署到服务器
如果已经有构建好的 APK,可以单独运行部署脚本:
# 方式 A:通过命令行参数
node .build/deploy-android-to-server.js path/to/your-app.apk
# 方式 B:通过环境变量
APK_PATH=path/to/your-app.apk APP_VERSION=1.0.0 node .build/deploy-android-to-server.js
在部署前可以先测试 SSH 连接是否正常:
node .build/deploy-android-to-server.js --test
部署后会在服务器生成 versions.json 文件,格式如下:
{
"latest": "v1.0.1-20250131-150000",
"versions": [
{
"version": "v1.0.1-20250131-150000",
"appVersion": "1.0.1",
"timestamp": "2025-01-31T15:00:00.000Z",
"filename": "dros-v1.0.1.apk",
"size": 15728640,
"downloadUrl": "/android-releases/v1.0.1-20250131-150000/dros-v1.0.1.apk"
},
{
"version": "v1.0.0-20250130-120000",
"appVersion": "1.0.0",
"timestamp": "2025-01-30T12:00:00.000Z",
"filename": "dros-v1.0.0.apk",
"size": 15200000,
"downloadUrl": "/android-releases/v1.0.0-20250130-120000/dros-v1.0.0.apk"
}
]
}
客户端可以通过以下 URL 访问:
https://your-domain.com/android-releases/latest.apkhttps://your-domain.com/android-releases/versions.jsonhttps://your-domain.com/android-releases/v1.0.0-20250130-120000/dros-v1.0.0.apk构建 APK
npm run build:android
dros-v{版本号}.apk位置:.build/dros/platforms/android/app/build/outputs/apk/debug/
安装到设备(如果连接了 Android 设备)
adb install ...
部署到服务器(如果 DEPLOY_ANDROID=true)
latest.apk 符号链接versions.json 版本清单npm run build:android
# 1. 设置环境变量(仅首次需要)
export DEPLOY_KEY="$(cat ~/.ssh/id_rsa)"
export DEPLOY_HOST="your-server.com"
export DEPLOY_USER="deploy"
export DEPLOY_PATH="/var/www/html/releases"
# 2. 构建并部署
DEPLOY_ANDROID=true npm run build:android
在 GitHub Actions 或其他 CI/CD 工具中:
- name: Build and Deploy Android APK
env:
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
DEPLOY_PATH: ${{ secrets.DEPLOY_PATH }}
DEPLOY_ANDROID: true
run: |
npm run build:android
❌ 部署失败: All configured authentication methods failed
→ 认证失败,请检查 SSH 私钥是否正确
解决方法:
DEPLOY_KEY 环境变量是否包含完整的私钥内容-----BEGIN ... KEY----- 头尾)❌ 部署失败: Timed out while waiting for handshake
→ 连接超时,请检查网络和服务器地址
解决方法:
DEPLOY_HOST 是否正确如果 DEPLOY_PATH 不是以 /releases 结尾,路径转换可能失败。
当前路径转换逻辑:
/var/www/html/releases -> /var/www/html/android-releases
解决方法:
确保 DEPLOY_PATH 以 /releases 结尾。
package.json 的 version 字段,确保每次发布前更新版本号android-releases 目录.build/deploy-android-to-server.js - Android 部署脚本.build/build-android.js - Android 构建脚本.build/deploy-to-server.js - H5 部署脚本(参考)