在 uni-app 开发完成后,原生 App 打包是落地上线的关键环节。本文将从环境准备、配置优化、证书生成、云端 / 本地打包、测试发布等核心步骤,详细拆解 Android 和 iOS 平台的打包流程,同时分享避坑技巧,帮助开发者高效完成 App 打包上线。
一、前置准备:环境与配置检查
1. 开发环境要求
核心依赖:安装 Node.js(建议 14 + 版本,兼容更多 uni-app 插件和打包工具,下载地址:Node.js 官网)开发 IDE:HBuilderX(最新稳定版,内置打包工具链,下载地址:HBuilderX 官网)可选工具(本地打包用):Android Studio(Android 本地编译)、Xcode(iOS 本地编译,需 Mac 环境)
2. manifest.json 基础配置(必做)
manifest.json 是 uni-app 的核心配置文件,直接影响打包成功率,需优先完成以下配置:
打开 HBuilderX 项目,双击根目录的文件,切换到「可视化配置」面板基础信息配置:
manifest.json
应用名称:需与上架平台(应用商店)名称一致AppID:使用 DCloud 官网申请的合法 AppID(避免使用测试 ID,否则无法正常打包)版本号 / 版本名称:遵循语义化版本(如 1.0.0),需与后续应用商店提交信息一致 模块权限配置:
切换到「App 模块配置」,勾选项目所需功能(如相机、地理位置、蓝牙、支付、推送等)注意:无需的模块建议取消勾选,减少包体积和权限申请风险
二、关键步骤:生成发行证书
证书是 App 签名和上架的核心凭证,Android 和 iOS 平台流程不同,需单独处理。
1. Android 平台:生成 keystore 证书
(1)前提条件
安装 Java 开发工具(JDK),并配置环境变量(确保命令可在终端执行)。
keytool
(2)生成命令
打开终端(Windows cmd/PowerShell、Mac/Linux 终端),执行以下命令(替换占位符为自定义信息):
bash
运行
keytool -genkey -alias 自定义别名(如myapp) -keyalg RSA -keysize 2048 -validity 36500 -keystore 证书文件名.keystore(如myapp.keystore)
参数说明:
:证书别名(后续打包需填写,建议牢记)
alias:加密算法(固定为 RSA)
keyalg:密钥长度(2048 位及以上,安全性更高)
keysize:证书有效期(36500=100 年,避免频繁更换)
validity:输出证书文件名及路径(默认在当前目录)
keystore
(3)后续操作
执行命令后,按提示输入证书密码、组织名称、国家 / 地区等信息(建议统一记录,避免遗忘)。生成成功后,会在指定目录得到文件,务必妥善保管(丢失后无法找回,影响后续版本更新)。
.keystore

2. iOS 平台:生成.p12 证书与描述文件
(1)前提条件
拥有 Apple 开发者账号(个人 / 企业版,年费 99 美元 / 299 美元,需提前注册)操作环境:Mac OS(生成描述文件和打包需依赖 Mac)
(2)详细流程
步骤 1:创建 App ID
登录 Apple 开发者中心(developer.apple.com)进入「Certificates, Identifiers & Profiles」→「Identifiers」→「+」选择「App IDs」,填写 App 名称、Bundle ID(需与 manifest.json 中一致,格式如,全局唯一)勾选 App 所需服务(如推送、支付等),完成创建
com.company.appname
步骤 2:生成 Distribution 证书
进入「Certificates」→「+」,选择「iOS Distribution (App Store and Ad Hoc)」按提示生成 CSR 文件(Certificate Signing Request):打开 Mac 的「钥匙串访问」→「证书助理」→「从证书颁发机构请求证书」,填写邮箱和保存路径上传 CSR 文件到开发者中心,下载生成的证书双击
.cer证书导入钥匙串,右键导出为「.p12」格式(设置证书密码,后续打包需填写)
.cer
步骤 3:生成 Provisioning Profile(描述文件)
进入「Profiles」→「+」,选择分发类型(App Store/Ad Hoc,根据打包用途选择)关联已创建的 App ID、Distribution 证书,选择需要测试的设备(Ad Hoc 模式需添加设备 UDID)下载描述文件(格式),保存到本地备用
.mobileprovision
(3)注意事项
Bundle ID 必须与 manifest.json、证书、描述文件完全一致,否则打包失败描述文件需与证书对应(Distribution 证书对应分发描述文件,Development 对应开发描述文件)证书和描述文件需妥善保管,避免泄露
.p12
三、打包实操:云端打包(推荐)
uni-app 推荐使用「云端打包」,无需配置复杂的本地编译环境,操作简单且稳定,适合大部分开发者。
1. 通用打包入口
打开 HBuilderX → 选中项目 → 顶部菜单栏「发行」→「原生 App – 云打包」,进入打包配置页面。
2. Android 平台打包
(1)配置项说明
平台选择:勾选「Android」证书配置:
选择「使用本地证书」,上传之前生成的文件填写证书别名、证书密码、密钥密码(与生成证书时一致)若暂未生成证书,可勾选「使用云端证书」(仅用于测试,不可上架应用商店) 打包设置:
.keystore
包名:与 manifest.json 中一致(如)打包模式:测试版(用于内测,无签名限制)/ 正式版(用于上架,需合法证书)输出格式:APK(通用格式,支持大部分 Android 设备)/ AAB(Google Play 推荐格式,包体积更小) 其他配置:按需勾选「混淆代码」「压缩资源」(减少包体积),避免勾选无关权限
com.company.appname
(2)执行打包
点击「打包」,等待云端编译(耗时约 3-10 分钟,取决于项目大小)。打包成功后,会生成下载链接,点击即可获取 APK/AAB 文件。

3. iOS 平台打包
(1)配置项说明
平台选择:勾选「iOS」证书配置:
上传证书文件和对应的
.p12描述文件填写证书密码(导出.p12 时设置的密码) 打包设置:
.mobileprovision
包名:与 App ID、描述文件一致分发渠道:App Store(用于上架)/ Ad Hoc(用于内测,需绑定设备 UDID) 其他配置:勾选「支持 IPv6」(Apple 审核强制要求),按需设置屏幕方向、权限描述
(2)执行打包
点击「打包」,等待云端编译完成后,下载生成的 IPA 文件(用于测试或上架)。

四、可选方案:本地打包(适合复杂场景)
若项目需集成自定义原生插件、修改原生代码,可选择本地打包,需手动配置编译环境。
1. Android 本地打包
在 HBuilderX 中执行「发行」→「原生 App – 本地打包」→「生成本地打包 App 资源」,生成目录下载 Android Studio 并安装,导入 uni-app 提供的 Android 原生模板项目(可从 DCloud 官网下载)将
unpackage目录下的资源复制到原生模板项目的对应目录在 Android Studio 中配置 keystore 证书(Build → Generate Signed Bundle/APK)编译生成 APK/AAB 文件
unpackage
2. iOS 本地打包
同样生成本地打包资源(步骤同上)下载 Xcode 并安装,导入 uni-app 提供的 iOS 原生模板项目配置项目信息:Bundle ID、证书、描述文件(在 Xcode 的「Signing & Capabilities」中设置)将本地打包资源导入项目,通过 Xcode「Archive」归档,导出 IPA 文件
五、测试与发布:从内测到上架
1. 内测阶段
(1)Android 内测
方式 1:通过 adb 命令安装 APK 到手机()方式 2:上传至内测平台(如 Firebase App Distribution、TestFairy、蒲公英),生成分享链接供测试人员下载
adb install 应用包名.apk
(2)iOS 内测
方式 1:TestFlight(Apple 官方内测工具):将 IPA 上传至 App Store Connect,邀请测试人员通过 TestFlight 安装方式 2:Ad Hoc 分发:通过描述文件绑定设备 UDID,直接安装 IPA(最多支持 100 台设备)方式 3:企业证书分发(仅企业账号):生成企业签名的 IPA,通过网页链接下载(无需绑定 UDID)
2. 正式发布
(1)Android 上架
主要渠道:Google Play、华为应用市场、小米应用商店、应用宝等准备材料:应用安装包(APK/AAB)、应用截图、应用描述、隐私政策链接、开发者资质证明注意:Google Play 要求使用 AAB 格式,且需完成应用内容分级、数据安全声明
(2)iOS 上架
上架平台:App Store Connect(appstoreconnect.apple.com)操作步骤:
上传 IPA 文件(通过 Xcode Archive 或 Transporter 工具)填写应用信息(名称、描述、截图、关键词、价格等)提交审核(审核周期约 1-3 个工作日) 注意:需提前准备隐私政策链接(必须可访问),遵循 Apple 审核指南(如无敏感权限、无违规内容、支持 IPv6 等)
六、避坑指南:常见问题与解决方案
打包失败提示「证书不匹配」:
检查包名(Bundle ID)与证书、描述文件一致确认 Android 证书别名、密码正确,iOS 描述文件与证书关联正常
iOS 审核被拒「缺少隐私权限说明」:
在 manifest.json 的「iOS 权限配置」中,为每个申请的权限添加明确的使用说明(如 “需要相机权限用于扫描二维码”)
包体积过大:
取消 manifest.json 中无关的模块权限压缩图片、视频等资源,删除项目中未使用的插件和代码Android 选择 AAB 格式,iOS 开启 Bitcode 优化
云打包次数不足:
免费用户每日有固定打包次数,超出可升级 DCloud 会员或使用本地打包
总结
uni-app 原生 App 打包的核心是「配置正确 + 证书合法 + 流程规范」。云端打包适合快速迭代和大部分场景,本地打包适合自定义原生功能的复杂项目。只要严格遵循上述步骤,注意证书保管、包名一致性和平台审核规则,就能高效完成 App 打包与上架。
如果在打包过程中遇到具体问题,可参考 DCloud 官方文档(uni-app 打包文档)或在社区提问,获取针对性解决方案。
