文章目录
- 前言
-
- 三、详细打包流程全解析
-
- [1. 打包前准备工作](#1. 打包前准备工作)
-
- [(1) 开发者账号配置](#(1) 开发者账号配置)
- [(2) Flutter项目配置](#(2) Flutter项目配置)
- [(3) Xcode关键设置](#(3) Xcode关键设置)
- [2. App Store上架全流程](#2. App Store上架全流程)
-
- [(1) 生成发布包](#(1) 生成发布包)
- [(2) 导出IPA文件](#(2) 导出IPA文件)
- [(3) App Store Connect配置](#(3) App Store Connect配置)
- [(4) 提交审核注意事项](#(4) 提交审核注意事项)
- [3. TestFlight测试全流程](#3. TestFlight测试全流程)
-
- [(1) 构建上传](#(1) 构建上传)
- [(2) 测试人员管理](#(2) 测试人员管理)
- [(3) 测试反馈收集](#(3) 测试反馈收集)
- [4. Ad Hoc分发专业方案](#4. Ad Hoc分发专业方案)
-
- [(1) 生成分发包](#(1) 生成分发包)
- [(2) 高效分发方案](#(2) 高效分发方案)
- [(3) UDID收集技巧](#(3) UDID收集技巧)
- [5. 企业签名分发](#5. 企业签名分发)
-
- [(1) 特殊要求](#(1) 特殊要求)
- [(2) 分发流程](#(2) 分发流程)
- 四、疑难问题解决方案
- 五、最佳实践总结
前言
iOS打包流程的详细补充,涵盖App Store上架、TestFlight测试和Ad Hoc分发全流程,包含具体操作步骤和注意事项:
三、详细打包流程全解析
1. 打包前准备工作
(1) 开发者账号配置
付费开发者账号 Certificates Identifiers Devices Profiles Apple Distribution证书 App Store描述文件 Ad Hoc描述文件
(2) Flutter项目配置
- 更新
pubspec.yaml
版本号:version: 1.0.0+1
- 执行清理命令:
dash
flutter clean
flutter pub get
(3) Xcode关键设置
- Bundle Identifier :
com.yourcompany.appname
(唯一标识) - Signing & Capabilities :
- 取消勾选
Automatically manage signing
- 手动选择Distribution证书
- 取消勾选
- Info.plist :
- 添加
ITSAppUsesNonExemptEncryption = NO
- 完善权限描述(相机/位置等)
- 添加
2. App Store上架全流程
(1) 生成发布包
bash
flutter build ipa --release --export-options-plist=ExportOptions.plist
(2) 导出IPA文件
- 在Xcode Organizer中选择
Distribute App
- 选择
App Store Connect
- 勾选
Upload your app's symbols...
(崩溃分析)
(3) App Store Connect配置
步骤 | 位置 | 关键操作 |
---|---|---|
1 | 我的App → +新建App | 填SKU(如com.company.app) |
2 | 价格与销售范围 | 设置价格区间 |
3 | 准备提交 → 构建版本 | 点击'+'添加IPA |
4 | App审核信息 | 填写测试账号 |
5 | 版本发布 | 选手动/自动发布 |
(4) 提交审核注意事项
- 提供测试视频(审核加速)
- 元数据需包含真实截图
- 遵守《App Store审核指南》3.2.1条
3. TestFlight测试全流程
(1) 构建上传
sequenceDiagram
Xcode->>App Store Connect: 上传IPA
App Store Connect->>TestFlight: 自动同步
TestFlight->>测试组: 分配构建版本
(2) 测试人员管理
- 内部测试 (200人上限)
- 开发者账号成员自动加入
- 即时生效无需审核
- 外部测试 (10000人上限)
- 需填写测试信息
- 首次版本需Apple审核(约24小时)
(3) 测试反馈收集
- 在App Store Connect查看崩溃日志
- 使用
feedbackassistant.apple.com
收集反馈
4. Ad Hoc分发专业方案
(1) 生成分发包
bash
flutter build ipa --export-method ad-hoc
生成的IPA路径:build/ios/ipa/APPNAME.ipa
(2) 高效分发方案
方式 | 工具 | 特点 |
---|---|---|
OTA分发 | Diawi.com | 扫码安装 |
MDM分发 | Jamf/Mosyle | 企业级管理 |
自建分发 | nginx+plist | 私有化部署 |
(3) UDID收集技巧
- 使用测试邀请工具(如:https://betafamily.com)
- 设备安装描述文件自动获取UDID
- 批量导出:
Apple Configurator 2
5. 企业签名分发
(1) 特殊要求
- $299/年企业账号
- 需提供DUNS编号
- 禁止公开下载
(2) 分发流程
-
导出
.ipa
选择Enterprise
-
配置manifest.plist:
xml<plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>https://yourdomain.com/app.ipa</string> </dict> </array> </dict> </array> </dict> </plist>
-
安装链接格式:
itms-services://?action=download-manifest&url=https://yourdomain.com/manifest.plist
四、疑难问题解决方案
常见错误处理表
错误代码 | 原因 | 解决方案 |
---|---|---|
ITMS-90023 | 缺少图标 | 添加1024x1024 App Store图标 |
ITMS-90683 | 无效Bundle | 检查CFBundleExecutable |
ITMS-90704 | 废弃UIWebView | 替换为WKWebView |
90186 | 签名冲突 | 吊销旧证书重建 |
提效技巧
- 自动打包脚本:
bash
#!/bin/zsh
flutter build ipa --export-method app-store
xcrun altool --upload-app -f build/ios/ipa/MyApp.ipa --username "your@email.com" --password "app-specific-password"
- 快速审核申请 :
- 登录:https://developer.apple.com/contact/app-store/?topic=expedite
- 选择"Request Expedited Review"
五、最佳实践总结
-
证书管理黄金法则:
- 开发证书:仅用于调试
- 分发证书:专人保管
- 每年更新:提前30天操作
-
发布检查清单:
- 移除所有调试代码
- 关闭开发者模式(
WidgetsApp.debugShowCheckedModeBanner = false
) - 测试离线场景
- 验证64位支持
-
版本策略建议:
title 版本分布建议
"生产环境" : 40
"TestFlight" : 30
"开发版本" : 30
通过以上完整流程,可实现从开发到分发的全链路管理,满足不同场景的iOS应用发布需求。实际部署时推荐使用CI/CD工具(如Codemagic/Fastlane)自动化流程。