FlutterFlow 的 iOS 发布做得挺完整:在 Settings → App Details 里配好签名信息,点一下 Deploy to App Store,它就会在云端构建 IPA、用你的证书签名,然后直接传到 App Store Connect,整个过程五到十五分钟。你这边不需要 Mac,也不需要装 Xcode。
前提是那两样东西得先有:签名证书和描述文件 。FlutterFlow 只负责用它们签名,不负责替你生成。这一步我在 Windows 上用开心上架(AppUploader)搞定,全程不碰 Mac。
先说结论:哪一步真绕不开 Mac
| 环节 | 我实际怎么做的 |
|---|---|
| 注册 Bundle ID、签发证书、生成描述文件 | Windows 上做完 |
| 编译签名成 IPA | FlutterFlow 云端构建 |
| 提交 App Store | FlutterFlow 直接传,也可以自己传 |
| 装到 iPhone 测试 | 扫码注册 UDID,再扫码装 |
一整列都不需要 Mac。顺带说明,我用的签证书工具本身也不是 Windows 专属,网页版换成 macOS 或 Linux 的浏览器一样能开,桌面客户端有 macOS 版。
第一步:定好 Bundle Identifier
在 FlutterFlow 的 Settings → App Details 里设 Bundle ID,用反向域名,比如 com.yourcompany.appname。
这个值后面注册 Bundle ID、绑定描述文件都要用同一个,三处完全一致才行。
如果你在做多环境(开发 / 预发 / 生产),每个环境要用各自独立的 Bundle ID、证书和描述文件,别混用------混用的话装到同一台手机上会互相覆盖,线上包也可能被测试包顶掉。
第二步:在 Windows 上签出证书和描述文件
注册 Bundle ID :开心上架的「Bundle ID」页面点「新建 Bundle ID」,Identifier 填上一步那个值。创建后改不了。要用推送、Sign in with Apple 这些能力的,在这个 Bundle ID 的「权限」页面勾上再保存------FlutterFlow 里开了对应功能但 Bundle ID 权限没勾的话,描述文件是不匹配的,构建会失败。
签发证书 :「证书」页面点「新建证书」,上架选发布签名证书。绑定上面的 Bundle ID,填名称邮箱,设一个 .p12 保护密码。服务器不保存这个密码,忘了只能吊销证书重签,依赖它的描述文件也全要重建。

建议勾上「使用开心上架服务同步证书」。做多环境或者多个 App 的时候,同一张证书能反复用(证书绑账号,描述文件才是每个 App 独有的),云备份省得到处找文件。
生成描述文件 :「描述文件」页面点「新建描述文件」,上架选 App Store 类型,内测选 Ad Hoc 并把测试设备勾上,关联上面的 Bundle ID 和证书,提交后下载 .mobileprovision。
整个过程在浏览器加 Windows 上完成,和 FlutterFlow 本身的工作方式挺搭的------都不用装本地开发环境。
第三步:在 FlutterFlow 里配签名并发布
回到 Settings → App Details,找到 iOS Deploy 那一块:
- 上传第二步的签名证书和描述文件;
- 确认 Bundle ID 和你注册的那个一致;
- 点 Deploy to App Store。
它会在云端构建 IPA、签名,然后直接上传到 App Store Connect,一般五到十五分钟。传完之后去 App Store Connect 选构建版本、填元数据、提交审核。
构建失败最常见的原因还是证书和描述文件不配对------描述文件里关联的证书必须包含你上传的那张。在开心上架的描述文件详情里能直接看到它关联了哪些证书、绑的是哪个 App ID、什么时候过期,对不上就点「重建」。
第四步:想自己控制上传的话
FlutterFlow 也支持把代码下载下来自己构建,或者你拿到 IPA 之后想自己传。这种情况下我一般先在开心上架的「文件&提交」页面把包打开看一眼签名信息,确认没问题再点「提交 App Store」。
命令行版本,在 Windows 上直接跑:
bash
appuploader-cli upload -f app.ipa -u dev@example.com -p abcd-efgh-ijkl-mnop
-p 是 Apple 账号页面生成的 App 专用密码,格式 xxxx-xxxx-xxxx-xxxx,不是登录密码。也可以用 App Store Connect API 密钥:
bash
appuploader-cli upload -f app.ipa --api-key <KeyID> --api-issuer <IssuerID> --private-key Auth_Key.p8
密钥方式只收 .ipa,且要求 App 已经在 App Store Connect 里建好。
第五步:发内测包
上架前想先给人试用的话,在「设备」页面点「注册设备」,二维码发出去让人扫,UDID 就自动上报了(一年 100 台名额,免费账号只有 3 台)。
回描述文件那边点「重建」,生成一份包含这些设备的 Ad Hoc 描述文件,换进 FlutterFlow 重新构建,再在「文件&提交」页面生成二维码让人扫码装。
写在最后
FlutterFlow 把"构建 + 上传"这一整段都做进产品里了,剩下要你自己准备的就只有签名材料。对完全没有 iOS 背景的人来说,这一段的门槛其实比拖界面高得多------但它跟你用什么工具开发无关,一次配好之后很久都不用再动。我用的是开心上架网页版,打开就能用,和 FlutterFlow 一样不用装东西。