怎么用 APICloud 云编译打包 iOS 应用并上架 App Store?
APICloud 走的是和 uni-app 类似的路子:你写 HTML/JS/CSS,编译在云端完成,本地不需要 Xcode 也不需要 Mac。控制台里点云编译,选 iOS,等一会儿就能下载 IPA。
卡人的地方在云编译表单上——它要你上传 iOS 私钥证书 .p12 和 描述文件 .mobileprovision,而这两样按 Apple 的官方路径是要在 Mac 上用「钥匙串访问」生成 CSR 再去兑换的。绕了一圈又回到需要 Mac,这跟"云编译不用 Mac"的初衷是矛盾的。
我的做法是用开心上架(AppUploader)在 Windows 上把这两个文件直接签出来,这样整条链路才真的一台 Windows 走到底。
先说结论:哪一步真绕不开 Mac
| 环节 | 我实际怎么做的 |
|---|---|
| 注册 Bundle ID、签发证书、生成描述文件 | Windows 上做完 |
| 编译签名成 IPA | 云编译,服务端完成 |
| 提交 App Store | Windows 上传 |
| 装到 iPhone 测试 | 扫码注册 UDID,再扫码装 |
一整列都不需要 Mac。顺带说明,我用的签证书工具本身也不是 Windows 专属,网页版换成 macOS 或 Linux 的浏览器一样能开,桌面客户端有 macOS 版。
第一步:把三处标识对齐
这是最容易翻车的地方。有三个位置的标识必须完全一致,大小写也算:
- 控制台里这个应用配置的 Bundle ID;
- Apple 那边注册的 Bundle ID;
- 描述文件绑定的 App ID。
对不上的话,轻则云编译直接失败,重则编出来了但装机报「描述文件不匹配」。
注册的地方在开心上架的「Bundle ID」页面,点「新建 Bundle ID」,Identifier 用反向域名,比如 com.yourcompany.appname,只能包含字母、数字、连字符和英文句点。创建后 Identifier 改不了,所以先把应用配置里的值定下来再去注册,别来回改。
如果 App 要用推送、iCloud 这些能力,顺手在这个 Bundle ID 的「权限」页面勾上再保存,不然对应模块在真机上会静默失效。
第二步:签发证书,拿到 .p12 和它的密码
云编译表单里那个「私钥证书」就是含私钥的 .p12 文件,旁边还要填它的密码。
在「证书」页面点「新建证书」。要上架就选发布签名证书;只是想先装到自己手机上看效果,选开发签名证书也行。绑定标识选第一步注册的 Bundle ID,填个名称和邮箱,然后设置 .p12 保护密码。
这个密码就是云编译表单里要填的那个私钥密码,一定记牢。服务器不保存它,也没有找回入口,忘了只能吊销证书重签一张,然后依赖它的描述文件全都要重建。我现在的习惯是直接丢密码管理器。
建议把「使用开心上架服务同步证书」勾上。换电脑或者交接给同事的时候,直接从云端下载同一张证书就行,不用满世界找 .p12 在谁那儿。另外 Apple 对同类型证书一般只给 3 个名额,团队里别几个人各签各的,很快就满。
提交之后 Apple 立刻签发,在列表里下载 .p12。私钥是在你本机生成后直接封进去的,不需要额外用 OpenSSL 转格式。
第三步:生成描述文件
「描述文件」页面点「新建描述文件」。上架选 App Store 类型;要发给同事内测就选 Ad Hoc,并且把测试设备勾上;自己真机调试用开发类型。Bundle ID 选第一步那个,证书选第二步那张。
提交后下载 .mobileprovision。到这儿云编译要的三样就齐了:.p12、它的密码、.mobileprovision。
第四步:云编译
在控制台里选中这个应用,进云编译页面:
- 平台选 iOS;
- 证书部分把上面三样填进去——私钥文件、私钥密码、描述文件;
- 编译类型按你的描述文件来选:用 App Store 描述文件就选上架对应的类型,用 Ad Hoc 就选测试对应的类型;
- 模块和配置按项目需要勾,提交编译。
编译完成后下载 IPA。
这里最常见的失败是证书和描述文件不配对——描述文件里关联的证书,必须包含你上传的那张 .p12。在开心上架的描述文件详情里能直接看到它关联了哪些证书,对不上就点「重建」重新生成一份。
第五步:把 IPA 提交到 App Store
IPA 下载下来之后,我一般先在开心上架的「文件&提交」页面把它打开看一眼签名信息——Bundle ID 对不对、是不是 App Store 类型的描述文件、证书还有多久过期。确认没问题再点「提交 App Store」,上传日志实时输出。
想写进脚本的话用命令行:
appuploader-cli upload -f MyApp.ipa -u dev@example.com -p abcd-efgh-ijkl-mnop
-p 是 Apple 账号页面生成的 App 专用密码,格式 xxxx-xxxx-xxxx-xxxx,不是登录密码。团队场景更推荐 App Store Connect API 密钥,它属于团队、能单独吊销:
appuploader-cli upload -f MyApp.ipa --api-key <KeyID> --api-issuer <IssuerID> --private-key Auth_Key.p8
密钥方式只收 .ipa,且要求 App 已经在 App Store Connect 里建好。
第六步:先发内测包
上架前一般先出个 Ad Hoc 包。在「设备」页面点「注册设备」,把二维码丢群里让测试的人扫一下,UDID 就自动上报了(一年 100 台名额,免费账号只有 3 台)。
设备齐了之后回描述文件那边点「重建」,它会自动用当前有效的证书和设备重新生成一份,不用从头新建。拿新的描述文件重新云编译一次,再在「文件&提交」页面生成二维码,测试的人扫码就装上了,不用连电脑。
这类云编译方案的价值就在于不用自己维护 Xcode 环境,但它把签名材料的准备甩给了你。这一环用 Windows 上能签证书的工具补上,整条链路才算真正闭环,我用开心上架来实现了这些,网页版打开就能用。如果你正卡在云编译表单那个「上传私钥证书」上,可以照着上面的顺序走一遍。