当前位置: 首页 > news >正文

uniapp-cloud-build:自动化 uni-app 云打包,解放你的双手

前言

作为一名 uni-app 开发者,你是否经历过这些痛苦?

  • 每次打 APK 包都要打开 HBuilderX,切到发行菜单,点半天按钮
  • 团队协作时,每个人的 Android 签名、SDK 配置各不一样,打包环境一团乱
  • CI/CD 流水线想集成自动打包,却发现官方云打包有限制,离线打包又要在每台机器上装 Android Studio
  • 换了台电脑,又要重装 JDK、Android SDK、Gradle 一大堆工具链

如果你有以上任一痛点,那这个项目就是为你准备的。

uniapp-cloud-build是一个开源的 uni-app APK 云打包平台——只需上传源码或 IR 包,在 Web 界面上点几下鼠标,APK 就自动打好了。全程无需 Android Studio,工具链自包含,不污染系统环境。

GitHub 地址:https://github.com/zimoyin/uniapp-cloud-build(开源免费,欢迎 Star)


项目定位:一句话说清楚

uni-app APK 离线云打包的 Web 管理平台——把你的打包环境搬上浏览器,让团队所有人都能用同一套环境、同一套配置来打包,彻底告别"我这能打你那不行"的玄学问题。


核心功能

1. 云端打包,告别本地环境

支持两种输入方式:

  • 源码模式:直接上传 uni-app 项目的src/目录
  • IR 包模式:上传 HBuilderX 发行菜单生成的"本地打包 App 资源"包(__UNI__xxxxx目录打个 zip)

平台会自动完成 8 阶段构建流水线:

上传源码/IR → 校验 Manifest → 环境检测 → 创建工作空间 → 部署资源 → 同步插件 → 写入工程配置 → Gradle 编译 → 收集 APK

2. 自包含工具链,零环境依赖

这是本项目最大的亮点。跑这个服务,你只需要一个 JDK 17+,其余的全部自动搞定:

工具自动管理方式
JDK 17/21自动下载到./cache/jdk/,构建时按需选用
Android SDK自动下载 API 21~36 任意版本到./cache/android-sdk/
Gradle自动下载 6.3~8.12 任意版本到./cache/gradle/
UniApp SDKWeb 界面手动上传离线包到./cache/sdk/,支持版本管理

换一台机器部署?直接把整个项目目录拷过去,一行java -jar就起来了,不用装任何东西。

3. Web 管理界面,开箱即用

浏览器打开http://localhost:8080,注册即用。你可以:

  • 管理多个应用——每个应用独立的工作空间和构建历史
  • 配置签名——上传 keystore,自动写入 signingConfig
  • 管理 SDK 模块——勾选地图、推送、支付等 20+ UniApp SDK 模块,自动注入 Android 权限和硬件特性声明
  • 上传插件——按应用上传.aar/.jar/.zip原生插件
  • 触发构建——选择 JDK 版本、Gradle 版本、Android API 版本,一键开始
  • 下载 APK——构建完成后浏览器直接下载

4. 多用户系统,团队协作利器

内置完整的用户体系:

  • 注册/登录——每个人有自己的独立工作空间
  • 三级角色——普通用户、管理员、超级管理员,权限分明
  • 构建历史——每个人的构建记录、日志、产物可追溯

团队里只要部署一台服务器,所有人都能用浏览器打包,再也不用各自折腾环境。

5. CI/CD 友好,一行脚本接入流水线

平台提供"云端脚本"功能——在 Web 界面生成嵌入 Token 的 Shell/Batch 脚本,直接放进你的 CI/CD 流水线里:

# 登录获取 Tokencurl-XPOST http://your-server:8080/api/auth/login\-H'Content-Type: application/json'\-d'{"username":"ci-bot","password":"xxx","fingerprint":"ci"}'# 触发构建curl-XPOST http://your-server:8080/api/v1/build/team/app1/build\-H'Authorization: Bearer <token>'\-F'file=@project.zip'\-F'config={"compileSdk":35,"gradleVersion":"8.11.1"}'# 下载 APKcurl-Ohttp://your-server:8080/api/v1/download/<taskId>\-H'Authorization: Bearer <token>'

支持 WebSocket 实时推送构建日志,你可以看到每一行 Gradle 输出,就像在本地打包一样。

6. 20+ SDK 模块,自动权限映射

内置 UniApp SDK 模块识别引擎,根据manifest.json中的模块名自动注入 Android 权限:

模块自动配置
地图 (Maps)ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION
相机 (Camera)CAMERA
推送 (Push)各厂商推送权限 + Receiver
支付 (Payment)微信/支付宝相关权限
蓝牙 (Bluetooth)BLUETOOTH,BLUETOOTH_ADMIN
共 20+ 模块自动配置

不需要再手写 AndroidManifest.xml 里的权限声明了。


技术架构

┌──────────────────────────────────────────────┐ │ Browser │ │ (Web UI + Swagger API Docs) │ └──────────────────┬───────────────────────────┘ │ HTTP / WebSocket ┌──────────────────▼───────────────────────────┐ │ Spring Boot 3.4.5 │ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │ Auth │ │ Build │ │ Toolchain │ │ │ │ Controller│ │ Controller│ │ Controllers │ │ │ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │ │ │ │ │ │ │ ┌────▼─────────────▼───────────────▼───────┐ │ │ │ BuildPipeline │ │ │ │ (8-phase: Validate → Collect APK) │ │ │ └────────────────┬────────────────────────┘ │ │ │ │ │ ┌────────────────▼────────────────────────┐ │ │ │ Toolchain Manager │ │ │ │ JDK | Android SDK | Gradle | UniApp SDK │ │ │ └─────────────────────────────────────────┘ │ └──────────────────┬───────────────────────────┘ │ ┌──────────────────▼───────────────────────────┐ │ File System │ │ cache/jdk/ cache/android-sdk/ │ │ cache/gradle/ cache/sdk/ cache/plugins/ │ │ cache/pkg/{user}/{app}/ │ └──────────────────────────────────────────────┘

技术选型

层面技术说明
语言Kotlin 2.3.21简洁、安全、与 Java 完美互操作
框架Spring Boot 3.4.5企业级后端框架
安全Spring Security无状态 Bearer Token 认证
实时通信Spring WebSocket构建日志实时推送
并发Kotlin 协程 + 虚拟线程高并发构建任务
API 文档springdoc-openapiSwagger UI 自动生成
构建工具Gradle Kotlin DSL项目自身构建(含 Wrapper)
JVM 目标JDK 17兼容 JDK 25 源码编译

62 个 Kotlin 源文件,架构清晰:

  • controller/— 10 个 REST 控制器(认证、构建、JDK、Gradle、Android SDK、UniApp SDK、插件、下载、管理、系统)
  • service/— 13 个服务类,核心业务逻辑
  • pkg/phase/— 8 个构建阶段,管道模式设计
  • model/— 数据传输对象和领域模型
  • config/— Spring 安全、异步、WebSocket、定时清理等配置

快速开始

环境要求

只需要 JDK 17+,其余全部自动下载。

三步跑起来

# 1. 克隆项目gitclone https://github.com/zimoyin/uniapp-cloud-build.gitcduniapp-cloud-build# 2. 启动服务(Linux/macOS)chmod+x gradlew ./gradlew bootRun# Windowsgradlew.bat bootRun

浏览器打开http://localhost:8080,注册账号,上传 UniApp SDK 离线包,然后就可以开始打包了。

JAR 部署

# 打包./gradlew bootJar# 前台运行java-Xms512m-Xmx512m-jarbuild/libs/uniapp-apk-builder-1.0.0.jar# 后台运行(Linux)shapp.sh start-d

环境变量(按需配置)

变量默认值说明
APP_PORT8080服务端口
WORKSPACE_ROOT./cache缓存与工作空间根目录
GRADLE_MIRRORmirrors.cloud.tencent.com/gradleGradle 下载镜像(国内加速)
AES_KEY随机生成配置加密密钥
LOG_DIR./cache/logs日志目录

使用流程详解

Step 1:上传 UniApp SDK

首先需要上传一个 UniApp 离线 SDK 包。去 DCloud 官方下载 Android 离线 SDK,在 Web 界面的"UniApp SDK 管理"页面上传并命名版本。

Step 2:创建应用

在 Web 界面创建一个应用,填写包名、应用名等基本信息。

Step 3:配置签名

上传你的 keystore 文件,填写别名和密码。平台会自动在构建时配置签名。

Step 4:上传代码

将你的 uni-app 项目源码(src/目录)打包成 zip,或使用 HBuilderX 发行菜单生成 IR 包后打包成 zip,上传到应用中。

Step 5:选择 SDK 模块

勾选你的应用用到的 UniApp 模块(地图、推送、支付等),平台会自动处理 Android 权限和依赖。

Step 6:开始构建

选择构建参数(JDK 版本、Gradle 版本、Android API 版本),点击"开始构建"。构建日志通过 WebSocket 实时显示。

Step 7:下载 APK

构建完成后,在构建历史中直接下载 APK。


为什么要用这个项目?

对比官方云打包

维度DCloud 官方云打包uniapp-cloud-build
打包次数有限制(免费套餐每日限量)无限制
构建速度排队等待本地/内网,即点即打
离线环境不支持支持(局域网部署)
数据安全代码上传到第三方服务器数据完全在自己手里
SDK 版本跟随官方更新自由选择/管理版本

对比手动离线打包

维度手动离线打包uniapp-cloud-build
环境搭建装 JDK + Android Studio + SDK + Gradle一键部署
团队协作每人自己搭环境,配置不一致统一环境,Web 操作
CI/CD需要在每台 CI 机器上装全套工具一行 curl 搞定
新人上手半天起步打开浏览器就行

适用场景

  1. 个人开发者——再也不用打开 HBuilderX 点半天按钮了,浏览器即打包
  2. 小团队——部署在内网服务器上,所有人共用一套打包环境
  3. CI/CD 集成——结合 Jenkins / GitHub Actions / GitLab CI,代码提交自动出包
  4. 企业内网——代码不出内网,安全合规
  5. 多项目多版本管理——不同项目可以绑定不同版本的 UniApp SDK,互不干扰

未来规划

  • 支持 uni-app cli 源码打包
  • 支持 uni-app x (Kotlin 原生) 打包
  • 支持 iOS IPA 打包(需 macOS 构建机)
  • Docker 一键部署镜像
  • 构建队列与优先级调度
  • Webhook 通知
  • 前端界面重构

结语

这个项目的初心很简单:让 uni-app 打包这件事变得像呼吸一样自然

作为 uni-app 开发者,我们不应该把时间花在折腾打包环境上。写代码才是我们的核心价值。把打包交给平台,把精力还给开发。

如果你觉得这个项目有用,欢迎 Star、Fork、提 Issue、提 PR。也欢迎在评论区交流你的打包故事和需求。

GitHub: https://github.com/zimoyin/uniapp-cloud-build

http://www.jsqmd.com/news/1293812/

相关文章:

  • Dev-C++新手入门指南:轻量IDE安装配置与C语言编程实践
  • 都江堰管道疏通服务2026商家选择指南!万通管道疏通:设备全/响应快,下水道疏通、化粪池清理、市政管道清淤一站式解决方案! - 资讯速览
  • 2026年8月海北非急救救护车转运指南:高原转运如何安排 - 小校长
  • Redis 配合 PHP 实战:缓存设计、缓存穿透/雪崩解决方案
  • 常州本地家电维修师傅电话推荐|本地维修家电|欧米到家统一报修
  • 深入 std::thread:从编译错误到引用传递的完美解决方案
  • Window Resizer:Windows窗口强制调整的终极解决方案
  • GRAM模型原生安全实战:预训练阶段管控AI能力边界完整教程
  • 2026知名三维测力台厂家推荐 4大核心维度对比选购 - 资讯速览
  • 2026门套无纺布,五大口碑厂家深度解析,选定再拍不花冤枉钱 - 工业品网
  • 隐含参数 _b_tree_bitmap_plans 导致 SQL 执行计划劣化
  • # [特殊字符]️ 嵌入式调试从入门到进阶 —— ARM 架构(二)
  • 使用.NET实现Word文档自动化生成与排版
  • Win11Debloat:Windows系统优化的模块化架构实践
  • iOS应用HTTPS安全策略配置指南:从ATS到证书锁定的实战解析
  • 做视频内容总结选什么AI工具?听脑AI vs 通义听悟真实对比 - AI办公提效专家
  • ESP32 Arduino下载速度慢?三招提速方案让烧录飞起来
  • 制造运营管理(MOM)与MES的区别与联系
  • TabPFN:基于Transformer架构的表格数据基础模型,实现1秒内的小型表格分类与回归推理
  • ErrorMiddleware在gin中间件放前还是后
  • Perlin Noise柏林噪声:从梯度噪声原理到程序化生成实践
  • 广州欧亚康体:商用泳池水处理一站式方案 - 城刊速递
  • 5分钟上手:Java APK解析器的完整使用指南
  • 人防工程防水堵漏工程十大综合口碑榜单,备选新人精选攻略不踩坑 - 工业品网
  • 2026主流三维测力台厂家推荐 适配不同场景需求 - 资讯速览
  • Flutter、Tauri与Electron跨平台开发框架对比
  • 焊接符号讲解
  • Python在芯片健康评估中的实战应用
  • 终极风扇控制指南:用Fan Control打造完美静音电脑
  • 垂直AI vs通用AI:生物医药该怎么选?