怎么用 Egret(白鹭引擎)打包 iOS 应用并上架 App Store?

Egret 用 TypeScript 写 2D 内容,本质产物是一套 H5。要变成能上架 App Store 的 iOS 应用,得先把项目发布成原生工程------Egret 这边是通过 Egret Launcher 的原生打包功能(或对应的命令行发布)生成一个 Xcode 工程,再用 Xcode 编译签名。

所以最后的编译签名要在 macOS 上做 。但发布原生工程这一步在 Windows 上就能完成,签名材料的准备和最后的 IPA 上传也都不用 Mac------我这边用的是开心上架(AppUploader)。

先说结论:哪一步真绕不开 Mac

环节 我实际怎么做的
注册 Bundle ID、签发证书、生成描述文件 Windows 上做完
写代码、发布出原生工程 Windows
用 Xcode 编译签名成 IPA 要 macOS
提交 App Store Windows 上传
装到 iPhone 测试 扫码注册 UDID,再扫码装

说明一下:我用的签证书工具本身在 macOS 上也能用(网页版不挑系统,桌面客户端有 macOS 版)。表里"不需要 Mac"是指这一步不再需要 Xcode、钥匙串访问或 Transporter。

第一步:定好包名

在原生打包的配置里把包名填成反向域名,比如 com.yourcompany.appname。这个值会写进生成工程的 CFBundleIdentifier,要和 Apple 注册的 Bundle ID、描述文件绑定的 App ID 三处完全一致。

具体的配置入口和命令在不同 Egret 版本里叫法不太一样,以你手上那个版本的文档为准。关键是先把这个字符串定死,因为 Apple 那边的 Bundle ID 创建之后改不了

第二步:在 Windows 上签出证书和描述文件

注册 Bundle ID:开心上架的「Bundle ID」页面点「新建 Bundle ID」,Identifier 填上一步那个包名。用到推送、内购这些能力的,在这个 Bundle ID 的「权限」页面勾上再保存------改过权限之后,依赖它的描述文件要「重建」一次才会带上新权限。

签发证书 :「证书」页面点「新建证书」,上架选发布签名证书,真机调试选开发签名证书。绑定上面的 Bundle ID,填名称邮箱,设一个 .p12 保护密码------导入 Mac 钥匙串时要输,服务器不保存它,忘了只能吊销重签,依赖它的描述文件也得跟着重建。

建议勾上「使用开心上架服务同步证书」。做 H5 的团队里常常只有一个人手上有 Mac,云备份能让那台机器直接下载同一张证书,不用互相传 .p12 文件。

生成描述文件 :「描述文件」页面点「新建描述文件」,上架选 App Store 类型,内测选 Ad Hoc 并勾上测试设备,关联上面的 Bundle ID 和证书,提交后下载 .mobileprovision

私钥和 CSR 都在本机生成后封进 .p12,不用在 Mac 上走「钥匙串访问 → 从证书颁发机构请求证书」那一套------对只写 TypeScript、平时不碰 Xcode 的人来说,这一步省下来挺关键的。

第三步:发布出原生工程

在 Egret Launcher 里选这个项目,用原生打包功能发布出 iOS 工程(或者用对应的命令行发布命令)。产物是一个 Xcode 工程目录,拷到 Mac 上就行。

发布之前记得先确认项目本身在浏览器里跑得没问题------原生壳只是把 H5 装进 WebView 或者原生渲染层,H5 那层的报错在壳里更难排查。

第四步:在 macOS 上签名出包

先把签名材料装好:

bash 复制代码
security import dist.p12 -k ~/Library/Keychains/login.keychain-db -P "你的p12密码" -T /usr/bin/codesign

mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp AppStore.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/

然后用 Xcode 打开发布出来的工程:

  1. 选中主 target → Signing & Capabilities;
  2. 关掉 Automatically manage signing;
  3. Provisioning Profile 选刚拷进去的那份,证书选对应的;
  4. 确认 General 里的 Bundle Identifier 和描述文件绑定的 App ID 一致;
  5. Product → Archive → Distribute App。

关掉自动签名值得强调一下:开着的话 Xcode 会跑去 Apple 那边替你申请新证书,而同类型证书一共就 3 个名额,几轮下来会占满。

另外重新发布原生工程会覆盖你在 Xcode 里改过的设置 ,所以别指望在界面上配一次就一劳永逸。稳妥做法是把签名配置写进 xcconfig,或者直接用 xcodebuild archive 加一份手动签名的 ExportOptions.plist 走命令行。

第五步:把 IPA 传上去

拿到 IPA 就跟 Mac 无关了。我一般先在开心上架的「文件&提交」页面把包打开看一眼签名信息------Bundle ID、描述文件类型、证书有效期,确认了再点「提交 App Store」,日志实时滚。

命令行版本,在 Windows 上直接跑:

bash 复制代码
appuploader-cli upload -f MyApp.ipa -u dev@example.com -p abcd-efgh-ijkl-mnop

-p 是 Apple 生成的 App 专用密码(xxxx-xxxx-xxxx-xxxx),不是 Apple ID 登录密码。团队用 API 密钥更合适:

bash 复制代码
appuploader-cli upload -f MyApp.ipa --api-key <KeyID> --api-issuer <IssuerID> --private-key Auth_Key.p8

密钥方式只收 .ipa,且 App 要先在 App Store Connect 里建好。

第六步:发内测包

「设备」页面点「注册设备」,二维码发群里让人扫上报 UDID(一年 100 台,免费账号 3 台)。回描述文件那边点「重建」,生成一份包含这些设备的 Ad Hoc 描述文件,拷到 Mac 上替换掉旧的。

在 Xcode 里换成这份描述文件,Archive 时导出方式选 Ad Hoc,然后在「文件&提交」页面生成二维码让人扫码装。

写在最后

H5 引擎出 iOS 包的流程都差不多:发布成原生工程 → Xcode 签名归档 → 上传。真正需要 Mac 的只有中间那一步,而且它不需要你懂 Xcode,照着关掉自动签名、选证书、点 Archive 走就行。然后证书、描述文件和上传我用的是开心上架网页版,直接打开使用,懒得下载软件也可以。

相关推荐
mmsx1 小时前
MapLibre 实战 09|Bug 单写着"地图被风刮走了":一个瓦片源工厂,是三个线上事故换来的
android·前端·开源
风雨_1 小时前
show-me + grill-me 结合使用总结
ios
一技安身2 小时前
【信创】统信UOS 银河麒麟离线部署Python3.11完整方案
android·java·python3.11
墨狂之逸才2 小时前
Android WebView 初始缩放:什么时候该设置 100%,什么时候不要设置
android
淡淡的香烟2 小时前
AndroidKMP之导航和WebView
android
xujuzheng2 小时前
2026深圳小程序/App/AI智能体开发公司选型指南(附本地服务商盘点)
数据库·科技·微信小程序·小程序·uni-app
郑州光合科技余经理4 小时前
本地生活系统:多业务订单字段怎么分账本导出
java·开发语言·前端·数据库·uni-app·php·ai编程
盟道科技13 小时前
消息队列消费端幂等性实战:订单场景下重复消息不重复扣款的完整方案
小程序
天空之城--14 小时前
Android逆向安全合规接单指南
android·安全