你在 macOS 电脑上,有一个已经上架过的 Flutter iOS 应用,现在要发布新版本。
一、先记住最核心流程
如果你只想最快完成更新,核心流程是:
bash
flutter clean
flutter pub get
flutter build ios --release
open ios/Runner.xcworkspace
然后在 Xcode 里:
text
1. 修改 Version 和 Build
2. 配置 Signing & Capabilities
3. Product -> Archive
4. Organizer -> Distribute App -> App Store Connect -> Upload
最后到 App Store Connect:
text
创建新版本
选择刚上传的 Build
填写更新说明
提交审核
二、更新前你需要确认的信息
因为你以前上架过,但没记笔记,所以先找回这些信息。
1. 找到你的 App
打开:
https://appstoreconnect.apple.com/
登录后进入:
text
我的 App / My Apps
找到你之前上架过的 iOS 应用。
进去后你要重点看:
text
Bundle ID
当前版本号
当前 Build 号
App Store Connect 所属团队
2. 找到 Bundle ID
在 App Store Connect 中:
text
你的 App -> App 信息 / App Information
里面有:
text
Bundle ID
例如:
text
com.example.myapp
这个非常重要,后面 Xcode 里必须一致。
3. 查看当前线上版本号
在 App Store Connect 的 App 页面,找到当前版本,例如:
text
1.3.0
你要发布的新版本可以是:
text
1.3.1
或者:
text
1.4.0
4. 查看上一次构建号
在 App Store Connect 的当前版本页面里,会有一个构建版本,例如:
text
1.3.0 (25)
这里的:
text
25
就是 Build 号。
你这次上传的新构建必须比它大,例如:
text
26
或者:
text
27
三、版本号规则
iOS 更新有两个号:
| 名称 | 字段 | 示例 | 是否必须增加 |
|---|---|---|---|
| Version | CFBundleShortVersionString |
1.3.1 |
建议增加 |
| Build | CFBundleVersion |
26 |
必须增加 |
举例:
上一次是:
text
1.3.0 (25)
这次可以是:
text
1.3.1 (26)
也可以是:
text
1.4.0 (26)
但 Build 号不能小于或等于之前的。
四、修改 Flutter 项目版本号
方法一:修改 pubspec.yaml
打开项目根目录的:
text
pubspec.yaml
找到:
yaml
version: 1.3.0+25
改成:
yaml
version: 1.3.1+26
解释:
yaml
version: 版本号+构建号
例如:
yaml
version: 1.3.1+26
表示:
text
Version = 1.3.1
Build = 26
方法二:在 Xcode 里修改
打开 iOS 工程:
bash
open ios/Runner.xcworkspace
注意:一定要打开 .xcworkspace,不要打开 .xcodeproj。
在 Xcode 中:
text
左侧 Runner -> Runner target -> General
找到:
text
Identity
修改:
text
Version: 1.3.1
Build: 26
五、清理并更新 Flutter 项目
在项目根目录执行:
bash
flutter clean
flutter pub get
如果你使用了 CocoaPods,也可以顺便执行:
bash
cd ios
pod install --repo-update
cd ..
六、本地检查项目能否构建
执行:
bash
flutter build ios --release
如果成功,会看到类似:
text
Building com.example.myapp...
Built build/ios/iphoneos/Runner.app
如果失败,先解决报错,再继续。
七、打开 Xcode 配置签名
执行:
bash
open ios/Runner.xcworkspace
在 Xcode 中:
text
Runner -> Runner target -> Signing & Capabilities
1. 选择 Team
找到:
text
Team
选择你的 Apple Developer 账号或公司团队。
例如:
text
Your Name (Personal Team)
或者:
text
Your Company LLC
如果没有,点击:
text
Add an Account...
登录你的 Apple ID。
2. 勾选自动签名
建议勾选:
text
Automatically manage signing
这样 Xcode 会自动处理证书和描述文件。
如果你是第一次在这台电脑上更新,推荐先用自动签名。
3. 确认 Bundle ID
在 General 页面找到:
text
Bundle Identifier
确保它和 App Store Connect 里的应用一致。
例如:
text
com.example.myapp
如果不一致,上传后可能找不到构建,或者无法提交审核。
4. 选择发布签名证书
在 Signing & Capabilities 里,通常会有两块:
text
Debug
Release
重点检查:
text
Release
如果使用自动签名,一般会自动选择:
text
Apple Distribution
或者:
text
iPhone Distribution
如果提示没有证书,可以点击:
text
Try Again
或者去:
text
Xcode -> Settings -> Accounts -> Manage Certificates
添加:
text
Apple Distribution
八、如果你换了电脑,或者证书丢了
这是很多人忘记流程时最容易卡住的地方。
情况一:你还记得开发者账号,并且有管理员权限
最简单:
text
使用 Xcode Automatically manage signing
Xcode 通常可以自动创建或选择发布证书。
情况二:旧电脑上的证书私钥找不到了
可以重新创建发布证书。
在 Xcode 中:
text
Xcode -> Settings -> Accounts
选择你的 Apple ID:
text
Manage Certificates
点击左下角 +:
text
Apple Distribution
然后重新配置签名。
注意:
如果你之前手动管理签名,可能需要重新生成 Provisioning Profile。
情况三:你只有 App Store Connect 权限,没有开发证书权限
你需要找到有团队管理员权限的人,让他给你权限,或者帮你生成证书。
至少需要能访问:
text
Apple Developer -> Certificates, IDs & Profiles
以及:
text
App Store Connect
九、检查 iOS 权限和隐私说明
如果你的应用用了相机、相册、定位、麦克风等,需要在:
text
ios/Runner/Info.plist
里有对应的说明。
例如:
xml
<key>NSCameraUsageDescription</key>
<string>需要使用相机拍摄照片</string>
xml
<key>NSPhotoLibraryUsageDescription</key>
<string>需要访问相册选择照片</string>
xml
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要获取位置信息</string>
xml
<key>NSMicrophoneUsageDescription</key>
<string>需要使用麦克风录制语音</string>
如果以前能上架,通常这些已经配置过了。
但如果你升级了某些插件,可能需要补充。
十、检查第三方库和隐私清单
现在 iOS 审核对隐私要求比较严格。
如果你用了这些类型的 SDK,要特别注意:
- 广告 SDK
- 统计 SDK
- 崩溃收集
- 推送
- 登录
- 分享
- 支付
- 地图
- 网络库
- WebView 相关库
建议更新前执行:
bash
flutter pub upgrade
cd ios
pod update
cd ..
如果你用了需要隐私清单的 SDK,确保它们已经更新到支持隐私清单的版本。
否则审核可能会提示类似:
text
Privacy manifest
NSPrivacyAccessedAPITypes
Required reason API
十一、Archive 打包
在 Xcode 顶部选择设备:
text
Any iOS Device (arm64)
或者:
text
Any iOS Device
不要选择模拟器。
然后执行:
text
Product -> Archive
等待打包完成。
成功后会打开:
text
Organizer
如果没有打开,可以手动打开:
text
Window -> Organizer
十二、上传到 App Store Connect
在 Organizer 中:
text
选择刚刚生成的 Archive
然后点击:
text
Distribute App
选择:
text
App Store Connect
然后选择:
text
Upload
一路继续。
一般选择:
text
Automatically manage signing
最后点击:
text
Upload
上传成功后会看到:
text
App Uploaded
或者:
text
Upload Successful
十三、如果 Xcode 上传失败,可以用 Transporter
如果 Xcode Organizer 上传一直失败,可以用 Transporter。
Transporter 下载地址:
https://apps.apple.com/cn/app/transporter/id1450874784
用法:
- 打开 Transporter
- 登录你的 Apple ID
- 选择你的应用
- 选择
.ipa文件 - 上传
但是 Flutter iOS 项目一般直接用 Xcode Organizer 更方便。
十四、等待 App Store Connect 处理构建
上传完成后,不会立刻可选。
App Store Connect 会显示:
text
Processing
通常需要等待:
text
5 分钟到 30 分钟
有时会更久。
如果处理失败,Apple 一般会发邮件到你的开发者账号邮箱。
十五、在 App Store Connect 创建新版本
打开:
https://appstoreconnect.apple.com/
进入:
text
我的 App -> 你的 App
左侧找到:
text
App Store
然后选择:
text
iOS App
如果当前版本是 1.3.0,你要发 1.3.1,可以:
text
点击版本号旁边 +
或者:
text
创建新版本
填写新版本号:
text
1.3.1
十六、选择新上传的 Build
在版本页面找到:
text
构建版本 / Build
点击:
text
+ 选择构建版本
选择你刚上传的构建,例如:
text
1.3.1 (26)
如果还没出现,等它处理完成。
十七、填写更新说明
找到:
text
版本说明 / What's New in This Version
例如:
text
1. 修复部分页面偶发闪退问题
2. 优化启动速度
3. 更新隐私说明
4. 修复已知问题
这个内容会展示给用户。
十八、检查应用截图和元数据
通常更新小版本时,以下内容可以沿用旧的:
text
应用截图
应用描述
关键词
技术支持网址
隐私政策网址
年龄分级
但如果有以下变化,需要更新:
- 界面大改
- 应用名称变化
- 功能变化
- 隐私政策变化
- 截图过期
- 支持设备变化
十九、填写出口合规信息
上传时或提交审核时,可能会问加密问题。
如果你的应用只使用标准 HTTPS,没有特殊自研加密,一般可以选择符合豁免。
也可以在:
text
ios/Runner/Info.plist
里加:
xml
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
这样每次上传通常不会再问。
如果你不确定,就要根据实际加密用途回答。
二十、提交审核
所有必填项完成后,点击右上角:
text
提交至 App Review / Submit for Review
然后选择发布方式:
text
审核通过后自动发布
或者:
text
审核通过后手动发布
建议如果你不确定,选:
text
手动发布
这样审核通过后,你可以自己决定什么时候上线。
二十一、审核状态说明
提交后常见状态:
| 状态 | 含义 |
|---|---|
| Waiting for Review | 等待审核 |
| In Review | 审核中 |
| Pending Developer Release | 审核通过,等你发布 |
| Ready for Sale | 已上架 |
| Metadata Rejected | 元数据有问题 |
| Binary Rejected | 安装包有问题 |
| Rejected | 被拒 |
如果是 Metadata Rejected,通常改文案、截图、隐私信息即可。
如果是 Binary Rejected,需要修代码或配置后重新上传 Build。
二十二、以后每次更新的标准流程
你可以把下面这段保存成笔记。
更新 iOS 应用标准流程
bash
flutter clean
flutter pub get
flutter build ios --release
open ios/Runner.xcworkspace
在 Xcode 中:
text
1. 修改 Version
2. 修改 Build,必须递增
3. 检查 Team
4. 检查 Bundle ID
5. Product -> Archive
6. Organizer -> Distribute App -> App Store Connect -> Upload
在 App Store Connect 中:
text
1. 创建新版本
2. 选择新上传的 Build
3. 填写更新说明
4. 提交审核
二十三、最小记忆版
以后你只需要记住这几句话:
text
版本号加 1
Build 号加 1
flutter build ios --release
Xcode Archive
上传 App Store Connect
App Store Connect 提交审核
二十四、常见问题排查
1. 上传后 App Store Connect 看不到 Build
常见原因:
- 还在处理中
- Build 号重复
- Bundle ID 不一致
- 签名错误
- 权限说明缺失
- 第三方库隐私清单问题
解决方法:
- 等 10-30 分钟
- 检查邮箱,Apple 通常会发错误邮件
- 确认 Build 号比旧版本大
- 确认 Bundle ID 一致
- 重新 Archive 上传
2. 提示 Build 号已经存在
比如旧版本是:
text
1.3.0 (25)
你这次不能再用:
text
1.3.1 (25)
必须改成:
text
1.3.1 (26)
或者:
text
1.3.1 (27)
3. Xcode 提示 No Account for Team
去:
text
Xcode -> Settings -> Accounts
登录你的 Apple ID。
然后回到:
text
Signing & Capabilities
重新选择 Team。
4. Xcode 提示 No profiles for bundle id
原因通常是:
- Bundle ID 没注册
- 描述文件不存在
- 签名配置错误
建议先勾选:
text
Automatically manage signing
然后选择正确 Team。
如果还不行,去:
https://developer.apple.com/account/resources/identifiers/list
检查 Bundle ID 是否存在。
5. 提示证书过期
去:
text
Xcode -> Settings -> Accounts -> Manage Certificates
添加:
text
Apple Distribution
如果不行,去:
https://developer.apple.com/account/resources/certificates/list
检查证书状态。
如果旧证书过期或丢失,可以重新创建。
6. 提示缺少权限说明
例如:
text
NSCameraUsageDescription
NSPhotoLibraryUsageDescription
NSLocationWhenInUseUsageDescription
需要在:
text
ios/Runner/Info.plist
中补充。
7. 提示隐私清单或 Required Reason API
需要检查第三方库和系统 API 使用。
常见涉及:
text
UserDefaults
FileManager
磁盘空间
系统启动时间
设备标识
需要按照 Apple 要求填写隐私清单,或者更新第三方库。
8. 打包时 CocoaPods 报错
可以尝试:
bash
cd ios
rm -rf Pods
rm -rf Podfile.lock
pod install --repo-update
cd ..
然后:
bash
flutter clean
flutter pub get
flutter build ios --release
9. Flutter 版本太旧导致无法上传
如果 Xcode 版本比较新,而 Flutter 太旧,可能会有兼容问题。
可以先升级 Flutter:
bash
flutter upgrade
flutter clean
flutter pub get
然后重新构建。
但如果你现在只想紧急上架,不建议大改依赖。先保持能打包为主。
二十五、如果你完全不知道之前是怎么签名的
可以用这个策略:
优先使用自动签名
在 Xcode 中:
text
Runner -> Runner target -> Signing & Capabilities
勾选:
text
Automatically manage signing
选择:
text
Team
确保:
text
Bundle Identifier
和 App Store Connect 一致。
然后:
text
Product -> Clean Build Folder
Product -> Archive
上传时 Organizer 里也选择:
text
Automatically manage signing
这是最适合"忘了之前怎么配置"的方式。
二十六、如果你换了电脑,如何恢复?
你需要准备:
text
1. Apple Developer 账号
2. App Store Connect 权限
3. Bundle ID
4. Flutter 项目代码
5. 新版本号和新 Build 号
如果旧电脑证书私钥丢失,不一定必须找回旧证书。
只要你有开发者账号权限,可以重新创建发布证书和描述文件。
步骤:
text
1. Xcode 登录 Apple ID
2. 添加 Apple Distribution 证书
3. 勾选 Automatically manage signing
4. 选择正确 Team 和 Bundle ID
5. Archive 上传
二十七、建议你现在按这个顺序操作
你可以直接照下面做:
bash
flutter clean
flutter pub get
flutter build ios --release
open ios/Runner.xcworkspace
然后在 Xcode 里:
text
1. Runner -> Runner target -> General
2. Version 改成新版本,例如 1.3.1
3. Build 改成新的,例如 26
4. Signing & Capabilities 选择你的 Team
5. 勾选 Automatically manage signing
6. Bundle ID 保持和线上一致
7. Product -> Archive
Archive 完成后:
text
Organizer -> Distribute App -> App Store Connect -> Upload
最后到 App Store Connect:
text
创建新版本 -> 选择新 Build -> 填写更新说明 -> 提交审核
二十八、给你一个可以保存的笔记模板
你可以复制保存:
text
Flutter iOS App Store 更新流程
1. 修改版本号
pubspec.yaml:
version: 1.3.1+26
2. 清理项目
flutter clean
flutter pub get
3. 构建 iOS
flutter build ios --release
4. 打开 Xcode
open ios/Runner.xcworkspace
5. Xcode 配置
Runner -> Runner target -> General
Version: 1.3.1
Build: 26
Runner -> Runner target -> Signing & Capabilities
Team: 你的开发者账号
Automatically manage signing: 勾选
Bundle Identifier: 和 App Store Connect 一致
6. 打包
Product -> Archive
7. 上传
Organizer -> Distribute App -> App Store Connect -> Upload
8. App Store Connect
创建新版本
选择新 Build
填写版本说明
提交审核