构建和发布 iOS 应用
- 准备工作
- 视频概述
- 在 App Store Connect 上注册您的应用
- 检查 Xcode 项目设置
- 更新应用的部署版本
- 添加应用图标
- 添加启动画面
- 创建构建归档并上传到 App Store Connect
- 使用 Codemagic CLI 工具创建构建归档
- 在 TestFlight 上发布您的应用
- 在 App Store 上发布您的应用
- 疑难解答
本指南提供了将 Flutter 应用发布到 App Store 和 TestFlight 的分步演练。
准备工作
#构建和发布应用需要 Xcode。您必须使用运行 macOS 的设备才能遵循本指南。
在开始发布应用流程之前,请确保您的应用符合 Apple 的 应用审核指南。
要将您的应用发布到 App Store,您必须先注册 Apple Developer Program。您可以在 Apple 的 选择会员资格 指南中详细了解各种会员选项。
视频概述
#对于那些更喜欢视频而非文本的用户,以下视频涵盖了本指南中相同的内容。
在 7 个步骤中发布使用 Flutter 构建的 iOS 应用
在 App Store Connect 上注册您的应用
#在 App Store Connect(以前称为 iTunes Connect)上管理您的应用生命周期。您可以定义应用名称和说明、添加屏幕截图、设置价格以及管理发布到 App Store 和 TestFlight。
注册您的应用涉及两个步骤:注册唯一的 Bundle ID 和在 App Store Connect 上创建应用记录。
有关 App Store Connect 的详细概述,请参阅 App Store Connect 指南。
注册 Bundle ID
#每个 iOS 应用都与一个 Bundle ID 相关联,这是一个在 Apple 注册的唯一标识符。要为您的应用注册 Bundle ID,请按照以下步骤操作
- 打开开发者帐户的 App ID 页面。
- 点击+ 创建新的 Bundle ID。
- 输入应用名称,选择显式 App ID,然后输入 ID。
- 选择您的应用使用的服务,然后点击继续。
- 在下一页上,确认详细信息并点击注册 以注册您的 Bundle ID。
在 App Store Connect 上创建应用记录
#在 App Store Connect 上注册您的应用
- 在浏览器中打开 App Store Connect。
- 在 App Store Connect 着陆页上,点击我的应用。
- 点击“我的应用”页面左上角的+,然后选择新应用。
- 在出现的表单中填写您的应用详细信息。在“平台”部分,确保选中 iOS。由于 Flutter 目前不支持 tvOS,因此请取消选中该复选框。点击创建。
- 导航到您的应用的应用详细信息,然后从侧边栏中选择应用信息。
- 在“常规信息”部分,选择您在上一步中注册的 Bundle ID。
有关详细概述,请参阅 将应用添加到您的帐户。
检查 Xcode 项目设置
#此步骤涵盖了检查 Xcode 工作区中最重要的设置。有关详细步骤和说明,请参阅 准备应用分发。
导航到 Xcode 中的目标设置
- 通过在 Flutter 项目目录的终端窗口中运行
open ios/Runner.xcworkspace
来打开项目中的默认 Xcode 工作区。 - 要查看应用的设置,请在 Xcode 导航器中选择Runner目标。
验证最重要的设置。
在常规选项卡的标识部分
显示名称
- 应用的显示名称。
Bundle 标识符
- 您在 App Store Connect 上注册的 App ID。
在签名与功能选项卡中
自动管理签名
- Xcode 是否应自动管理应用签名和配置文件。默认情况下设置为
true
,这对于大多数应用来说应该足够了。对于更复杂的场景,请参阅 代码签名指南。 团队
- 选择与您注册的 Apple 开发者帐户关联的团队。如果需要,请选择添加帐户...,然后更新此设置。
在构建设置选项卡的部署部分
iOS 部署目标
- 您的应用支持的最低 iOS 版本。Flutter 支持 iOS 12 及更高版本。如果您的应用或插件包含使用比 iOS 12 更新的 API 的 Objective-C 或 Swift 代码,请将此设置更新为所需的最高版本。
项目设置的常规选项卡应类似于以下内容
有关应用签名的详细概述,请参阅 创建、导出和删除签名证书。
更新应用的部署版本
#如果您在 Xcode 项目中更改了Deployment Target
,请在 Flutter 应用中打开ios/Flutter/AppframeworkInfo.plist
并将MinimumOSVersion
值更新为匹配。
添加应用图标
#创建新的 Flutter 应用时,会创建一个占位符图标集。此步骤涵盖了用应用的图标替换这些占位符图标
- 查看 iOS 应用图标 指南,尤其是有关 为您的应用创建浅色、深色和着色 图标的建议。
- 在 Xcode 项目导航器中,选择
Runner
文件夹中的Assets.xcassets
。用您自己的应用图标更新占位符图标。 - 通过使用
flutter run
运行您的应用来验证图标是否已替换。
添加启动画面
#与应用图标类似,您也可以替换占位符启动画面
- 在 Xcode 项目导航器中,选择
Runner
文件夹中的Assets.xcassets
。用您自己的启动画面更新占位符启动画面。 - 通过热重启您的应用来验证新的启动画面。(不要使用
热重载
。)
创建构建归档并上传到 App Store Connect
#在开发过程中,您一直在使用调试构建进行构建、调试和测试。当您准备好将应用发布到 App Store 或 TestFlight 上的用户时,您需要准备一个发布构建。
更新应用的构建版本号和版本号
#应用的默认版本号为1.0.0
。要更新它,请导航到pubspec.yaml
文件并更新以下行
version: 1.0.0+1
版本号由点分隔的三个数字组成,例如上面示例中的1.0.0
,后面可以跟一个可选的构建号,例如上面示例中的1
,用+
分隔。
可以通过分别指定--build-name
和--build-number
在flutter build ipa
中覆盖版本和构建号。
在 iOS 中,build-name
使用CFBundleShortVersionString
,而build-number
使用CFBundleVersion
。在 Apple 开发者网站上的 Core Foundation Keys 中详细了解 iOS 版本控制。
您也可以在 Xcode 中覆盖pubspec.yaml
构建名称和编号
- 在应用的
ios
文件夹中打开Runner.xcworkspace
。 - 在 Xcode 项目导航器中选择Runner,然后在设置视图侧边栏中选择Runner目标。
- 在“标识”部分,将版本更新为您希望发布的用户界面版本号。
- 在“标识”部分,将构建标识符更新为用于在 App Store Connect 上跟踪此构建的唯一构建号。每次上传都需要一个唯一的构建号。
创建应用包
#运行flutter build ipa
以在项目的build/ios/archive/
目录中生成 Xcode 构建归档(.xcarchive
文件)以及在build/ios/ipa
中生成 App Store 应用包(.ipa
文件)。
考虑添加--obfuscate
和--split-debug-info
标志来 混淆您的 Dart 代码,以使其更难以反向工程。
如果您未分发到 App Store,则可以选择不同的 导出方法,方法是添加选项--export-method ad-hoc
、--export-method development
或--export-method enterprise
。
将应用包上传到 App Store Connect
#创建应用包后,可以通过以下任一方式将其上传到 App Store Connect:
安装并打开 Apple Transport macOS 应用。将
build/ios/ipa/*.ipa
应用包拖放到应用中。或者通过运行以下命令从命令行上传应用包:
bashxcrun altool --upload-app --type ios -f build/ios/ipa/*.ipa --apiKey your_api_key --apiIssuer your_issuer_id
运行
man altool
以详细了解如何使用 App Store Connect API 密钥进行身份验证。或在 Xcode 中打开
build/ios/archive/MyApp.xcarchive
。点击验证应用按钮。如果报告了任何问题,请解决这些问题并生成另一个构建。您可以重复使用相同的构建 ID,直到您上传归档文件。
归档文件成功验证后,点击分发应用。
您可以在 App Store Connect 上应用详情页的“活动”选项卡中跟踪构建状态。您应该会在 30 分钟内收到一封电子邮件,通知您您的构建已通过验证,并且可以发布到 TestFlight 上的测试人员。此时,您可以选择是否在 TestFlight 上发布,或直接将您的应用发布到 App Store。
有关更多详细信息,请参阅 将应用上传到 App Store Connect。
使用 Codemagic CLI 工具创建构建归档
#此步骤介绍如何使用 Flutter 构建命令和在 Flutter 项目目录的终端中执行的 Codemagic CLI 工具 创建构建归档并将其上传到 App Store Connect。这使您可以完全控制分发证书,并在与您的登录密钥链隔离的临时密钥链中创建构建归档。
安装 Codemagic CLI 工具
bashpip3 install codemagic-cli-tools
您需要使用“应用管理器”访问权限生成一个 App Store Connect API 密钥,以便自动执行 App Store Connect 操作。为了使后续命令更简洁,请从新密钥设置以下环境变量:发行者 ID、密钥 ID 和 API 密钥文件。
bashexport APP_STORE_CONNECT_ISSUER_ID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee export APP_STORE_CONNECT_KEY_IDENTIFIER=ABC1234567 export APP_STORE_CONNECT_PRIVATE_KEY=`cat /path/to/api/key/AuthKey_XXXYYYZZZ.p8`
您需要导出或创建一个 iOS 分发证书来对构建归档进行代码签名和打包。
如果您有现有的 证书,您可以通过为每个证书执行以下命令来导出私钥
bashopenssl pkcs12 -in <certificate_name>.p12 -nodes -nocerts | openssl rsa -out cert_key
或者,您可以通过执行以下命令创建一个新的私钥
bashssh-keygen -t rsa -b 2048 -m PEM -f cert_key -q -N ""
稍后,您可以让 CLI 工具自动从私钥创建新的 iOS 分发证书。
设置一个新的临时密钥链,用于代码签名
bashkeychain initialize
从 App Store Connect 获取代码签名文件
bashapp-store-connect fetch-signing-files $(xcode-project detect-bundle-id) \ --platform IOS \ --type IOS_APP_STORE \ --certificate-key=@file:/path/to/cert_key \ --create
其中
cert_key
是您导出的 iOS 分发证书私钥或一个新私钥,该私钥会自动生成一个新证书。如果 App Store Connect 中不存在证书,则会根据私钥创建证书。现在将获取的证书添加到您的密钥链中
bashkeychain add-certificates
更新 Xcode 项目设置以使用获取的代码签名配置文件
bashxcode-project use-profiles
安装 Flutter 依赖项
bashflutter packages pub get
安装 CocoaPods 依赖项
bashfind . -name "Podfile" -execdir pod install \;
构建 Flutter iOS 项目
bashflutter build ipa --release \ --export-options-plist=$HOME/export_options.plist
请注意,
export_options.plist
是xcode-project use-profiles
命令的输出。将应用发布到 App Store Connect
bashapp-store-connect publish \ --path $(find $(pwd) -name "*.ipa")
如前所述,请不要忘记将您的登录密钥链设置为默认密钥链,以避免机器上的应用出现身份验证问题。
bashkeychain use-login
您应该会在 30 分钟内收到一封电子邮件,通知您您的构建已通过验证,并且可以发布到 TestFlight 上的测试人员。此时,您可以选择是否在 TestFlight 上发布,或直接将您的应用发布到 App Store。
在 TestFlight 上发布您的应用
#TestFlight 允许开发者将其应用推送到内部和外部测试人员。此可选步骤介绍如何在 TestFlight 上发布您的构建。
- 导航到 App Store Connect 上应用应用详情页的“TestFlight”选项卡。
- 在侧边栏中选择“内部测试”。
- 选择要发布给测试人员的构建,然后点击“保存”。
- 添加任何内部测试人员的电子邮件地址。您可以在 App Store Connect 的“用户和角色”页面添加其他内部用户,该页面可从页面顶部的下拉菜单访问。
有关更多详细信息,请参阅 使用 TestFlight 分发应用。
在 App Store 上发布您的应用
#当您准备好将您的应用发布到全世界时,请按照以下步骤提交您的应用以供审核并发布到 App Store
- 在 App Store Connect 上应用应用详情页的侧边栏中选择“定价和可用性”,并填写所需信息。
- 从侧边栏中选择状态。如果这是此应用的首次发布,则其状态为“1.0 准备提交”。填写所有必填字段。
- 点击“提交以供审核”。
Apple 会在他们的应用审核流程完成后通知您。您的应用将根据您在“版本发布”部分指定的说明发布。
有关更多详细信息,请参阅 通过 App Store 分发应用。
疑难解答
#分发您的应用 指南提供了将应用发布到 App Store 过程的详细概述。
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面上次更新于 2024-11-05。 查看源代码 或 报告问题。