# 004应用部署说明篇
# 应用部署的前提是什么?
是构建成功后的产物。
# 应用语言与构建工具
平台/类型 | 开发语言 | 主要构建工具 | 构建产物示例 | 典型命令 |
---|---|---|---|---|
Android 原生 | Kotlin/Java | Gradle | APK /AAB | ./gradlew assembleRelease |
iOS 原生 | Swift/Objective-C | Xcode + CocoaPods/SwiftPM | IPA /XCArchive | Xcode → Archive → 导出 IPA |
Flutter | Dart | flutter build | APK /IPA /Web JS | flutter build apk --release |
React Native | JavaScript/TypeScript | Metro + Gradle/Xcode | APK /IPA (含 JS Bundle) | npx react-native run-android --variant=release |
Web 前端 | HTML/CSS/JS/TS | Webpack/Vite/Rollup | index.html + bundle.js + *.css | npm run build |
Node.js 后端 | JavaScript/TypeScript | npm/yarn + tsc | dist/*.js | tsc && npm run start |
Java 后端 | Java (Spring Boot) | Maven/Gradle | JAR /WAR | mvn package |
Python 后端 | Python | setuptools/pip | .whl 或直接运行 .py | python setup.py bdist_wheel |
Go 后端 | Go | go build | 单文件二进制 (如 server.exe ) | GOOS=linux GOARCH=amd64 go build -o app |
Electron 桌面 | JavaScript/HTML/CSS | electron-builder | EXE (Win)/DMG (Mac)/DEB (Linux) | electron-builder --win --x64 |
Tauri 桌面 | Rust + Web 前端 | Cargo + npm | 轻量级二进制 | npm run tauri build |
# 应用部署的方式
构建产物类型 | 典型文件格式 | 常见部署方式 | 适用场景 |
---|---|---|---|
Android APK/AAB | .apk /.aab | - 上传至 Google Play Store - 第三方应用市场(如华为应用市场) - 直接分发(企业内网/FTP) | 移动端 Android 应用 |
iOS IPA | .ipa | - 上传至 Apple App Store - TestFlight(测试分发) - 企业证书签名(内部部署) | 移动端 iOS 应用 |
Web 静态资源 | index.html + *.js/css | - 托管到 CDN(如 Cloudflare/AWS S3) - Nginx/Apache 服务器部署 - GitHub Pages/Vercel | 纯前端网页/SPA |
Java JAR/WAR | .jar /.war | - 服务器运行 java -jar - 部署到 Tomcat/Jetty 容器 - Docker 容器化 | Spring Boot 等 Java 后端 |
Node.js 应用 | dist/*.js | - PM2 进程管理 - Docker 容器化 - Serverless 平台(如 AWS Lambda) | Node.js 后端/SSR 应用 |
Python 包 | .whl /.py | - pip install 安装到虚拟环境- Docker 容器化 - Serverless(如 AWS Lambda) | Django/Flask 等 Python 后端 |
Go 二进制 | 无扩展名(如 app ) | - 直接运行于服务器 - Docker 容器化 - 嵌入 CI/CD 管道(如 Jenkins) | 高性能后端/CLI 工具 |
Electron 应用 | EXE /DMG /DEB | - 官网下载分发 - 应用商店(如 Mac App Store) - 自动更新(electron-updater) | 跨平台桌面应用 |
Flutter 应用 | APK /IPA /Web JS | - 同 Android/iOS 部署方式 - Web 版部署到服务器/CDN | 跨平台移动端/Web 应用 |
.NET Web 应用 | .dll /发布文件夹 | - IIS 托管(Windows Server) - Docker 容器化(跨平台) - Azure App Service 部署 | ASP.NET Core MVC/Web API |
Docker 镜像 | .tar /OCI 镜像 | - 推送至 Docker Hub/私有仓库 - Kubernetes 集群部署 - docker run 本地运行 | 容器化所有类型应用 |
Serverless 包 | 依赖平台(如 .zip ) | - 上传至 AWS Lambda/阿里云函数计算 - 配置触发器(HTTP/定时任务) | 无服务器架构应用 |
# 应用构建产物存放
压缩后存放在OSS(这个是我个人的看法)
无论是主机部署,还是容器部署,都可以从OSS中直接获取构建产物,所以很方便