uniapp app使用命令行HBuilderX cli快捷打包iOS和Android

一、环境背景

安装HBuilderX和配置cli环境变量

1.通过 CLI 进行 Android/iOS 云打包,仅适用于 HBuilderX 3.1.5+ 版本。提前安装HBuilderX 3.1.5+ 版本,为了避免版本 兼容性 问题,可以使用版本4.44,该文档基于4.44操作执行

HBuilderX 安装步骤请参考App打包流程

2.确保安装好的HBuilderX目录自带了 cli

操作步骤如下

打开HBuilderX文件所在位置,找到cli.exe

3.更改 环境变量 进入系统设置-找到高级系统设置--环境变量-更改PATH变量,把你cli.exe所在位置的路径,添加进去

4.确保cli.exe生效

win+r键唤起cmd,输入cli --help,一般可以正常运行

如果不可以,则排除对应问题 以下是关于应用程序错误的解决方案,第四步成功可以直接跳过。

例如我远程电脑X安装 在一顿排查之后发现cli只能在windows系统运行,其他任何系统都会有问题,试图尝试安装Microsoft Visual C++ Redistributable

cli.exe 运行需要特定的 Windows 运行库。如果弹出错误代码为 0xc000007b 或提示缺少 msvcp140.dll,请安装:

微软 Visual C++ 可再发行程序包 (Microsoft Visual C++ Redistributable):建议下载并安装 X64 和 X86 两个版本。

如果还是有弹窗 0xc000007b 问题,可以尝试

检查 HBuilderX 目录下的缺失文件

HBuilderX 官方曾提到,某些 Windows 环境下需要手动移动 DLL 文件:

进入 HBuilderX 的解压/安装目录,找到 bin 文件夹。

寻找 msvcr120.dllmsvcp140.dll(或其他类似名称的 .dll 文件)。

将这两个文件复制到 HBuilderX 根目录下(即 cli.exe 所在的同级目录)。

远程电脑10.218.20.53 系统不支持,需要进一步排查

Windows Server 2019 环境下,手动安装了运行库依然弹出 0xc000007b,且直接双击 cli.exe 就报错,这通常是因为系统的 DLL 搜索路径被"流氓"文件劫持,或者 系统关键核心 DLL 架构损坏。

除了之前提到的方案,请务必尝试以下进阶操作:

清理 System32SysWOW64 中的手动残留(关键)

很多用户之前为了修复错误,会从网上下载 DLL 直接扔进系统文件夹,这正是 0xc000007b 的头号原因。

前往 C:\Windows\System32 (存放64位文件) 和 C:\Windows\SysWOW64 (存放32位文件)。

检查是否存在 msvcr120.dllmsvcp140.dllvcruntime140.dll

尝试将它们暂时重命名(如改成 .bak)。如果系统提示"正在使用无法修改",说明它是系统正常的;如果能轻易改名,说明它是后来手动放进去的干扰项。

原理: 错误的 DLL 位数会导致 cli.exe 加载失败。

使用"全能运行库修复"模式

普通安装包可能无法覆盖已被锁定的受损文件。

下载 DirectX 修复工具 (DirectX Repair) 增强版(建议找 4.x 以上版本)。

打开后点击右上角"菜单 -> 选项 -> 扩展",点击"开始扩展"。

在"检测并修复"里,勾选"强制检测 C++"。

这个工具会对比每一个系统 DLL 的 MD5 校验码,如果发现 System32 里的文件其实是 32 位的,它会强行替换回正版 64 位文件。

二、操作步骤

cli命令官网: https://hx.dcloud.net.cn/cli/pack?id=config

参数名称 描述
--help 打包命令帮助
--config 配置文件绝对路径,配置文件配置,参考配置文件
--project HBuilder X 里导入的项目名或绝对路径
--platform 配打包平台,默认值 android,取值有"android","ios"如果要打多个逗号隔开
--iscustom 是否使用自定义基座 默认值 false, true 自定义基座 false 自定义证书
--safemode 打包方式是否为安心打包,默认值 false,true 安心打包,false 传统打包
--isconfusion 是否对配置的 js/nvue 文件进行原生混淆,true 打开 false 关闭
--splashads 开屏广告,默认值 false, true 打开 false 关闭
--rpads 悬浮红包广告,默认值 false, true 打开 false 关闭
--pushads push 广告,默认值 false, true 打开 false 关闭
--exchange 加入换量联盟,默认值 false, true 加入 false 不加入
--android.packagename 安卓包名,打安卓包填写
--android.androidpacktype 安卓打包类型 默认值 0,0 使用自有证书 1 使用公共证书 2 使用 DCloud 老版证书
--android.certalias 安卓打包证书别名,自有证书打包填写的参数
--android.certfile 安卓打包证书文件路径,自有证书打包填写的参数
--android.certpassword 安卓打包证书密码,自有证书打包填写的参数
--android.storepassword 安卓打包证书库密码(HBuilderx4.41 支持),自有证书打包填写的参数
--android.channels 安卓平台要打的渠道包,取值有"google","yyb","360","huawei","xiaomi","oppo","vivo",如果要打多个逗号隔开
--ios.bundle iOS appid 打 ios 包填写
--ios.supporteddevice iOS 打包支持的设备类型,默认值 iPhone 值有"iPhone","iPad" 如果要打多个逗号隔开打包平台
--ios.isprisonbreak iOS 打包是否打越狱包,true 打越狱包,false 正式包。HBuilderX 3.2.3+版本起,不再支持构建越狱包。
--ios.profile iOS 使用自定义证书打包的 profile 文件路径
--ios.certfile iOS 使用自定义证书打包的 p12 文件路径
--ios.certpassword iOS 使用自定义证书打包的证书密码

命令实例:

复制代码
# 通过配置文件打包
cli pack --config 配置文件

# Android打包:项目名称(apps)、传统打包、包名(io.test)、打包证书(自有证书、别名:testalias、密码123456)
cli pack --project apps --platform android --safemode false --android.packagename io.test --android.androidpacktype 0 --android.certalias testalias --android.certfile /Users/hx/Desktop/cert/jdk13/test.key --android.certpassword 123456 --android.storepassword 123456

# iOS打包
cli pack --project 项目名称 --platform ios --safemode false --iscustom true --ios.bundle 包名 --ios.supporteddevice iPhone,iPad --ios.isprisonbreak false --ios.profile profile文件路径 --ios.certfile p12文件路径 --ios.certpassword 证书密码

首先打包之前需要注意,该项目执行过手动并且打包可以成功 ,没有问题,项目已经在HBuilderX打开但是没有运行,命令打包请到项目的路径 cmd 输入命令

Android打包:项目名称(apps)、传统打包、包名(io.test)、打包证书(自有证书、别名:testalias、密码123456)

cli pack --project apps --platform android --safemode false --android.packagename io.test --android.androidpacktype 0 --android.certalias testalias --android.certfile /Users/hx/Desktop/cert/jdk13/test.key --android.certpassword 123456 --android.storepassword 123456

iOS打包

cli pack --project 项目名称 --platform ios --safemode false --iscustom true --ios.bundle 包名 --ios.supporteddevice iPhone,iPad --ios.isprisonbreak false --ios.profile profile文件路径 --ios.certfile p12文件路径 --ios.certpassword 证书密码

安卓:

Android

packagename 包名 certalias 别名,certpassword 证书秘钥storepassword证书库秘钥

iOS

bundle 包名(appid), profile profile文件,certfile p12文件路径,

Android

账号密码码掉了

iOS

注意: cli 的配置只需要在第一次的时候需要,后续直接通过操作步骤中的命令直接打包即可,如果证书有更换,请注意及时变更命令中对应的证书路径,发版的时候记得更改环境信息和版本信息。

相关推荐
2501_9160074720 小时前
跨平台 App 安全,Flutter、RN、Unity、H5 混合应用加固
android·ios·小程序·https·uni-app·iphone·webview
咕咕咕_biubiubiu21 小时前
uniapp插件——原生插件开发和使用
uni-app
芋头莎莎21 小时前
UNIAPP连接MQTT记录要点
uni-app
新 一.21 小时前
uniapp在ios上真机测试运行
ios·uni-app
2501_916007471 天前
不越狱如何查看iOS 应用的详细信息及其文件目录结构
android·macos·ios·小程序·uni-app·cocoa·iphone
李慕婉学姐1 天前
【开题答辩过程】以《基于uniapp的养宠互助服务程序设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
android·mysql·uni-app
李慕婉学姐1 天前
【开题答辩过程】以《基于uni-app的手账记录小程序的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·小程序·uni-app
2501_916008891 天前
无需钥匙串快速创建 iOS 开发 / 发布证书 P12 CSR
android·ios·小程序·https·uni-app·iphone·webview
&活在当下&1 天前
uniapp 选择城市区号索引列表实现
前端·uni-app