# 发行 - App 云打包

通过 CLI 对 uni-app x 项目进行 Android/iOS 云打包。云打包由 DCloud 云端完成,无需本地原生开发环境。

适用平台:app-android / app-ios。平台对照见 CLI 概述。 云打包需要联网并登录 DCloud 账号;免费额度与收费规则以 DCloud 官方说明为准。

# pack

cli pack --help
参数 说明
--help 查看打包命令帮助
--project 必填,项目绝对路径
--platform 打包平台,默认 android,可选 android、ios;多个平台用英文逗号分隔
--config 配置文件的绝对路径,字段与命令行参数一致,详见 配置文件格式
--iscustom 是否使用自定义基座,仅值为 true 时启用
--sourceMap 是否生成 SourceMap,默认 false
--splashads 是否启用开屏广告,仅值为 true 时启用
--unimpads 是否启用激励视频广告,仅值为 true 时启用
--ad.domestic 集成国内广告 SDK,多个 SDK 用英文逗号分隔
--ad.international 集成海外广告 SDK,多个 SDK 用英文逗号分隔
--ad.content 集成三方内容场景变现 SDK,多个 SDK 用英文逗号分隔
--ignoreWarnings 打包遇到 warning 时仅输出提示、不中断流程
--async 异步打包(提交后立即返回),配合 pack status 查询
--precheck / --skipPrecheck 打包前预校验 / 跳过预校验
--json 以 JSON 输出结果,便于脚本解析

# Android 参数

参数 说明
--android.packagename Android 包名,打包 Android 时必填
--android.androidpacktype 证书类型,0 使用自有证书,1 使用公共证书
--android.channels 渠道包,可选 google、yyb、360、huawei、xiaomi、oppo、vivo,多个用英文逗号分隔
--android.aabchannels AAB 渠道包
--android.certalias / --android.certfile / --android.certpassword / --android.storepassword 使用自有证书时的别名、证书文件、证书密码与证书库密码

# iOS 参数

参数 说明
--ios.bundle iOS App ID(Bundle ID),打包 iOS 时必填
--ios.supporteddevice 支持的设备类型,默认 iPhone,可选 iPhone、iPad,多个用英文逗号分隔
--ios.channels iOS 渠道包,可选 phone、simulator(仅 macOS 生效)
--ios.profile / --ios.certfile / --ios.certpassword 自定义证书打包使用的 profile、p12 文件与证书密码

# 使用示例

demo-app 可为项目目录名,也可换为项目绝对路径。

# 使用公共证书打包 Android
cli pack --project demo-app --platform android --android.packagename com.example.app --android.androidpacktype 1

# 使用自有证书打包 Android
cli pack --project demo-app --platform android --android.packagename com.example.app --android.androidpacktype 0 \
  --android.certalias myalias --android.certfile /path/to/cert.keystore --android.certpassword 123456 --android.storepassword 123456

# 多渠道包
cli pack --project demo-app --platform android --android.packagename com.example.app --android.androidpacktype 1 \
  --android.channels google,huawei,xiaomi,oppo,vivo

# 打包 iOS(自定义证书)
cli pack --project demo-app --platform ios --ios.bundle com.example.app --ios.supporteddevice iPhone,iPad \
  --ios.profile /path/to/profile.mobileprovision --ios.certfile /path/to/cert.p12 --ios.certpassword 123456

# pack status

查询 App 云打包状态。

cli pack status --project demo-app
参数 说明
--help 查看命令帮助
--project 项目绝对路径

--project 支持目录名或绝对路径,查询前请先执行 cli open。

# pack cancel

取消 App 云打包任务。

cli pack cancel --project demo-app --platform app-android
参数 说明
--help 查看命令帮助
--project 项目绝对路径
--platform 要取消打包的平台,可选 app-ios、app-android,一次仅支持一个平台

# 打包日志

查看 App 云打包的控制台输出日志,通常与 pack、pack status 配合使用。

cli logcat pack

查看前请先执行 cli open。

# 打包配置文件格式

配置文件格式为 JSON,编码为 UTF-8,字段说明见上文参数。使用 --config 时,所有参数写在 JSON 中,不要与 --project、--platform 等命令行参数混用。

{
  "project": "test-pack",
  "platform": "ios,android",
  "iscustom": false,
  "sourceMap": false,
  "splashads": false,
  "unimpads": false,
  "ad": {
    "domestic": "",
    "international": "",
    "content": ""
  },
  "ignoreWarnings": false,
  "android": {
    "packagename": "com.test.android",
    "androidpacktype": "1",
    "certalias": "",
    "certfile": "",
    "certpassword": "",
    "storePassword": "",
    "channels": ""
  },
  "ios": {
    "bundle": "com.test.ios",
    "supporteddevice": "iPhone,iPad",
    "channels": "",
    "profile": "",
    "certfile": "",
    "certpassword": ""
  }
}
cli pack --config ./configure.json

# 常见问题

  • 云打包失败:先查看 打包日志;常见原因是证书、包名配置错误或账号登录状态失效。
  • iOS 证书报错:检查 Bundle ID 与证书是否匹配、证书是否过期、profile 文件是否有效。