怎么用 FlutterFlow 把应用发布到 App Store?

91 阅读4分钟

FlutterFlow 的 iOS 发布做得挺完整:在 Settings → App Details 里配好签名信息,点一下 Deploy to App Store,它就会在云端构建 IPA、用你的证书签名,然后直接传到 App Store Connect,整个过程五到十五分钟。你这边不需要 Mac,也不需要装 Xcode。

前提是那两样东西得先有:签名证书和描述文件。FlutterFlow 只负责用它们签名,不负责替你生成。这一步我在 Windows 上用开心上架(AppUploader)搞定,全程不碰 Mac。

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

环节我实际怎么做的
注册 Bundle ID、签发证书、生成描述文件Windows 上做完
编译签名成 IPAFlutterFlow 云端构建
提交 App StoreFlutterFlow 直接传,也可以自己传
装到 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 那一块:

  1. 上传第二步的签名证书和描述文件;
  2. 确认 Bundle ID 和你注册的那个一致;
  3. 点 Deploy to App Store。

它会在云端构建 IPA、签名,然后直接上传到 App Store Connect,一般五到十五分钟。传完之后去 App Store Connect 选构建版本、填元数据、提交审核。

构建失败最常见的原因还是证书和描述文件不配对——描述文件里关联的证书必须包含你上传的那张。在开心上架的描述文件详情里能直接看到它关联了哪些证书、绑的是哪个 App ID、什么时候过期,对不上就点「重建」。

第四步:想自己控制上传的话

FlutterFlow 也支持把代码下载下来自己构建,或者你拿到 IPA 之后想自己传。这种情况下我一般先在开心上架的「文件&提交」页面把包打开看一眼签名信息,确认没问题再点「提交 App Store」。

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

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 密钥:

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 一样不用装东西。