Windows 上本地打包 uni-app iOS App
一条命令导出成 Xcode 工程,在 Windows 上本地打包 iOS,不走云打包。
HBuilderX 的 uni-app 工程在 Windows 上可以本地打包 iOS 并真机调试,不经过云打包,不排队。uni-app 工程先导出成 Xcode 工程,之后按普通 iOS 工程编译、安装和调试。
步骤
开发 uni-app 项目
在 HBuilderX 中照常新建和开发 uni-app 项目。再从 DCloud 的 iOS 离线 SDK 下载页下载与 HBuilderX 同版本的 SDK 并解压,下一步导出时要用。Vue 2 项目的 HBuilderX 不能装在带括号的目录(例如 Program Files (x86)),否则页面编译失败。
导出 Xcode 工程
把 uni-app 工程和 DCloud 离线 iOS SDK 导出成一个独立、可构建的 Xcode 工程,manifest.json 里勾选的模块会用 CocoaPods 装好。需要准备三个目录:uni-app 工程目录(包含 manifest.json)、离线 SDK 根目录和一个输出目录。完成后在 VS Code 中打开输出目录,之后和普通 Xcode 工程一样开发、按 F5 调试。
以下两种做法任选其一
-
VS Code 插件
命令面板运行 KXBuild: 导入 uni-app 项目,依次选择 uni-app 工程目录、SDK 根目录和输出目录,再填写 Bundle ID 和 DCloud App Key,留空则使用 uni-app 工程 nativeResources/ios/Info.plist 中的配置。导出在 VS Code 的终端中执行。
-
命令行
参数说明见 uniapp2xcode 命令参考。
> uniapp2xcode --project D:\work\myuniapp --sdk D:\sdk\HBuilder-iOS-SDK --output D:\work\myuniapp-ios --bundle-id com.example.myapp --dcloud-appkey 你的AppKey --clean
体检
检查并修好编译需要的环境。
以下两种做法任选其一
-
VS Code 插件
KXBuild 视图标题栏「···」中运行「体检并修复开发环境」。
-
命令行
> kxbuild doctor .\myuniapp-ios\HBuilder-Hello\HBuilder-Hello.xcworkspace
编码
页面代码照常在 HBuilderX 中编写,改完要重新导出才会进入 iOS 工程。应用名称、版本、图标、权限描述在 HBuilderX 的 manifest.json 里设置,额外的 Info.plist 项写进 uni-app 工程的 nativeResources/ios/Info.plist,每次导出都会应用。
调试
USB 连接 iPhone,在 KXBuild 视图中选中设备,按 F5。原生层断点在 VS Code 中调试,页面 JS 用 HBuilderX 自带的调试工具,两边互不影响。
发布
用 Release 配置构建,输出目录的 HBuilder-Hello\build 下生成以应用名称命名的 .ipa。上传到 App Store Connect 见发布与上架。
以下两种做法任选其一
-
VS Code 插件
在 KXBuild 视图的「构建配置」节点切到 Release,命令面板运行 KXBuild: 构建。
-
命令行
> kxbuild build .\myuniapp-ios\HBuilder-Hello\HBuilder-Hello.xcworkspace -s HBuilder -c Release
常见问题
| 现象 | 处理 |
|---|---|
| 导出时提示未登录、AppID 不存在,或 App 一打开就报 AppKey 错误 | AppID、AppKey、Bundle ID 是绑定的一套。HBuilderX 登录 DCloud 账号,在 manifest.json 的「基础配置」里获取 AppID,再到 dev.dcloud.net.cn 这个应用的 iOS 平台按 Bundle ID 申请离线打包 AppKey。导出时填的 Bundle ID 要和申请 AppKey 时一致,也要和 Apple 开发者后台的 App ID 一致 |
| 页面编译失败,提示 HBuilderX 安装目录不能包括 ( 等特殊字符 | Vue 2 项目的限制。把 HBuilderX 整个文件夹挪到 D:\HBuilderX 这样的目录,或者在 manifest.json 里改用 Vue 3 |
| App 启动后提示版本不匹配或白屏 | 离线 SDK 和 HBuilderX 版本不一致,下载同版本的 SDK 重新导出 |
| 导出结束时提示有模块被跳过 | 当前 SDK 里没有这个模块,或者它的库链接不了,例如 5.26 版 SDK 的实人认证。其他模块照常打包,被跳过的要等 DCloud 发布修复后的 SDK |
接下来
构建与配置
Debug 和 Release 的区别,scheme / target / 配置怎么选,怎么覆盖构建设置,产物在哪,.ipa 什么时候出,Swift Package 依赖何时解析。
发布与上架
用 Distribution 证书构建 Release 直接得到 .ipa,用 Appuploader 或 Transporter 传到 App Store Connect,走 TestFlight 和提审;Ad Hoc / 企业分发同一条路。
没找到你的工程类型?
kxbuild是通用编译工具,只要最终能产出 Xcode 工程,KXBuild 就能编。列出来的技术支持只是一些技术领域的应用,遇到问题随时联系我们