uni-app 云打包还是本地打包?iOS 打包方式与 Windows 本地打包
uni-app 打 iOS 包可选 HBuilderX 云打包或离线 SDK 本地打包:起步阶段、打包少、要用插件市场付费原生插件选云打包;常调试原生功能、集成自有 SDK 或不想排队选本地打包,本文附 Windows 本地打包流程。
uni-app 云打包和本地打包怎么选,结论是:项目刚起步、打包不频繁、要用插件市场的付费原生插件,选云打包;进入频繁调试原生功能的阶段、要集成自己的原生 SDK、或者不想排队和受次数限制,选用离线 SDK 的本地打包。两种方式可以并存,很多团队开发期本地打包,正式发版再用云打包。云打包的规则以 DCloud 官方文档为准,截至 2026 年 10 月。
uni-app 云打包和本地打包有什么区别?
| 对比项 | DCloud 云打包 | 本地打包(离线 SDK) |
|---|---|---|
| 构建在哪里 | DCloud 的云端打包机 | 你自己的电脑 |
| 构建环境 | DCloud 维护,不用自己装 | 自己准备。官方流程是 Mac 上的 Xcode,在 Windows、Linux 上可以用 KXBuild |
| 排队 | 高峰期可能排队;旧版本 HBuilderX 对应的免费打包机逐步减少,排队更久 | 不排队 |
| 次数与费用 | 有免费额度,按天、按月限制次数(具体规则不公开);超出后可充值付费,项目体积较大时按体积收费 | 不限次数,不向 DCloud 付打包费 |
| 证书 | 打包时提交 .p12、密码和 .mobileprovision | 证书和描述文件留在本机 |
| 原生插件 | 支持插件市场的原生插件,包括付费插件 | 可以直接集成任意原生 SDK 和自己写的原生代码;插件市场的付费原生插件按 DCloud 文档不能离线打包使用 |
| 原生混淆 | 支持 | 按 DCloud 文档不能使用 |
| 调试 | 标准基座、自定义基座加 HBuilderX 调试 | 在 HBuilderX 里直接运行到 iPhone,改完页面几秒推送到手机;原生层可以断点调试,页面 JS 仍用 HBuilderX 的调试工具 |
| 配置改动 | 改 manifest.json 的原生配置后要重新打自定义基座或正式包 | 重新运行到 iPhone 即可 |
| 准备工作 | 登录 DCloud 账号即可 | 安装 KXBuild 和它的 HBuilderX 插件,下载与 HBuilderX 同版本的离线 SDK,申请离线打包 AppKey |
两种方式都需要 Apple 开发者账号、证书和描述文件。在 Windows 上申请证书、导出 .p12 的方法见在 Windows 上申请 iOS 开发证书。
云打包有哪些次数和收费规则?
下面这些来自 DCloud 官方的云打包说明和 2026 年 2 月 5 日的计费规则调整公告。规则会调整,打包前以官方页面为准。
- 打包模式。 传统打包会把代码和证书上传到 DCloud 服务器,官方承诺打包完成后自动清理。安心打包不上传代码和证书,速度更快,但按安心打包说明,iOS 的安心打包只支持在 macOS 上使用,Windows 上的 iOS 云打包走传统打包。
- 次数。 每个账号有免费额度,系统按天、按月限制次数,风控规则不公开。次数不够时可以在开发者中心充值,付费打包每次 2 元。任务成功提交到服务器就扣次数,不管最后打包成功还是失败。
- 体积。 项目原始体积(编译后、压缩前,含前端代码、图片和本地原生插件)超过 60MB 要按体积付费,Android 和 iOS 分别计费。勾选生成 iOS 符号表也会额外收费。
- 排队。 高峰期可能排队。官方给了两个加速方案,按次计费的独享打包机,和按年付费的企业打包机。
省次数的做法。 开发调试阶段用标准基座或自定义基座,减少正式包的打包次数;HBuilderX 保持更新,排队更短。
什么时候选 uni-app 云打包?
- 项目刚开始,一周打几次包,免费额度够用。
- 用了插件市场的付费原生插件,或者需要原生混淆保护 JS 代码。
- 团队里没有人想维护本地的 iOS 构建环境。
- 需要同时出 Android 和 iOS 包,都交给云端统一处理。
什么时候选本地打包?
- 正在调推送、支付、地图这类原生模块,一天要打很多次包。
- 要集成插件市场没有的原生 SDK,或者要改原生层代码。
- 原生层崩溃需要断点调试、看调用栈。
- 发版时间紧,不能等排队。
- 公司要求代码和证书不出内网。
Windows 上怎么本地打包 uni-app iOS 包?
DCloud 官方的离线打包要求在 Mac 上用 Xcode 完成。在 Windows 上可以用 KXBuild 完成同样的步骤,流程概要如下,每一步的具体操作见 uni-app 离线打包 iOS 保姆级教程。
| 步骤 | 做什么 |
|---|---|
| 1 | 下载与 HBuilderX 同版本的 iOS 离线 SDK zip,不用解压 |
| 2 | 在 DCloud 开发者中心按 Bundle ID 申请离线打包 AppKey,在 Apple 开发者后台注册同名 App ID |
| 3 | 在 HBuilderX 里配好 manifest.json 的名称、版本、图标、权限描述和模块 |
| 4 | 安装 KXBuild 和 HBuilderX 插件 |
| 5 | 连上 iPhone,在 HBuilderX 里点「运行 → 运行到 iPhone 真机 (KXBuild)」,第一次按提示填 Bundle ID、AppKey 并选择 SDK zip |
| 6 | 点「发行 → 生成 iOS App Store ipa (KXBuild)」出 ipa,上传 App Store Connect |
之后只改了页面,用「运行 → 推送页面到 iPhone (KXBuild)」,几秒生效,App 数据保留;改了 manifest.json 的原生配置就重新运行到 iPhone,不需要重新打自定义基座。要在脚本里打包,可以用 uniapp2xcode 命令导出 Xcode 工程再构建。
打包报错怎么对照排查?
| 现象 | 原因 | 改法 |
|---|---|---|
| 本地包一打开就提示 AppKey 错误 | 没填 AppKey,或申请 AppKey 时的 Bundle ID 和工程里的不一致 | 在开发者中心核对 iOS 平台的包名,在插件里改好 Bundle ID 与 AppKey 后重新运行 |
| 本地包启动后提示版本不匹配或白屏 | 离线 SDK 和 HBuilderX 版本不一致 | 下载与当前 HBuilderX 同版本的 SDK,导入后重新运行 |
| 升级 HBuilderX 后本地包出问题 | SDK 没跟着升级 | 每次升级 HBuilderX 都换同版本的 SDK |
| 云打包提示证书和描述文件不匹配 | .p12 和 .mobileprovision 不是同一套,或 Bundle ID 对不上 | 用同一个证书重新生成描述文件,Bundle ID 和 manifest.json 一致 |
| 云打包装到手机失败 | 用了 Development 描述文件但手机 UDID 不在里面,或证书类型不对 | 把 UDID 加进描述文件重新下载;上架用 Distribution 证书和 App Store 描述文件 |
| 本地导出时提示有模块被跳过 | 当前离线 SDK 没有这个模块,或模块的库链接不了 | 其他模块照常打包,等 DCloud 发布修复后的 SDK |
| 本地包调用相机闪退 | Info.plist 缺少隐私描述 | 在 manifest.json「App 权限配置」里补上,重新运行 |
AppKey、Bundle ID、Apple 开发者后台的 App ID 是一套,三处要完全一致。uni-app 云打包和本地打包可以用同一个 Bundle ID,切换方式时不用改。
常见问题
uni-app 云打包每天能打几次?
DCloud 官方说明每个账号有免费额度,按天、按月限制次数,但具体风控规则不公开。次数不够时可以在开发者中心充值,付费打包每次 2 元,提交成功即扣次数,打包失败也算。
uni-app iOS 本地打包能在 Windows 上做吗?
能。DCloud 官方的离线打包流程是在 Mac 上用 Xcode 完成,在 Windows 上可以装 KXBuild 的 HBuilderX 插件,在 HBuilderX 里直接运行到 iPhone、推送页面和出 ipa,步骤见 uni-app 离线打包 iOS 教程。
离线 SDK 版本一定要和 HBuilderX 一致吗?
要一致。两边版本不同,App 启动后会提示版本不匹配或白屏。每次升级 HBuilderX,都下载同版本的离线 SDK 导入一次。
离线打包的 AppKey 在哪里申请?
登录 DCloud 开发者中心 dev.dcloud.net.cn,在「我的应用」里打开这个应用,进入各平台信息新增 iOS 平台并填写 Bundle ID,保存后就能看到离线打包 Key。Bundle ID 要和 Apple 开发者后台的 App ID 一致。
插件市场的付费原生插件能离线打包吗?
按 DCloud 安心打包文档的说明,插件市场的付费原生插件因为版权原因不能用于离线打包,原生混淆同样不能用。用了这类插件的项目,正式包继续用云打包。