构建并发布 iOS 应用
如何向 App Store 发布 Flutter 应用。
本指南提供了将 Flutter 应用发布至 App Store 和 TestFlight 的分步说明。
准备工作
#构建和发布应用需要 Xcode。您必须使用运行 macOS 的设备来遵循本指南。
在开始应用发布流程之前,请确保您的应用符合苹果的 App 审核准则。
要将应用发布到 App Store,您必须首先注册 Apple Developer Program。您可以阅读苹果的选择会员资格指南,以了解更多关于不同会员选项的信息。
视频概览
#对于更喜欢看视频而不是阅读文本的用户,以下视频涵盖了与本指南相同的内容。
在 App Store Connect 上注册您的应用
#在 App Store Connect(前身为 iTunes Connect)上管理您的应用生命周期。您可以在此定义应用名称和描述、添加截图、设置价格,并管理在 App Store 和 TestFlight 上的发布。
注册应用包含两个步骤:注册唯一的套装 ID (Bundle ID),以及在 App Store Connect 上创建应用记录。
有关 App Store Connect 的详细概述,请参阅 App Store Connect 指南。
注册套装 ID (Bundle ID)
#每个 iOS 应用都关联一个套装 ID (Bundle ID),这是一个在苹果注册的唯一标识符。要为您的应用注册套装 ID,请按照以下步骤操作
- 打开开发者账户的 App ID 页面。
- 点击 + 号以创建新的套装 ID。
- 输入应用名称,选择 Explicit App ID,并输入一个 ID。
- 选择您的应用所使用的服务,然后点击 Continue。
- 在下一页上,确认详细信息并点击 Register 以注册您的套装 ID。
在 App Store Connect 上创建应用记录
#在 App Store Connect 上注册您的应用
- 在浏览器中打开 App Store Connect。
- 在 App Store Connect 着陆页上,点击 Apps。
- 点击左上角的 + 号,然后选择 New App。
- 在弹出的表单中填写您的应用详细信息。在“平台 (Platforms)”部分,确保勾选了 iOS。由于 Flutter 目前不支持 tvOS,请勿勾选该选项。点击 Create。
- 导航到您应用的应用详情页面,并从侧边栏选择 App Information。
- 在“常规信息 (General Information)”部分,选择您在上一步中注册的套装 ID。
如需详细概述,请参阅向您的账户添加应用。
检查 Xcode 项目设置
#本步骤涵盖了检查 Xcode 工作区中最关键的设置。有关详细流程和说明,请参阅准备应用分发。
在 Xcode 中导航到您的目标 (Target) 设置
- 通过在 Flutter 项目目录的终端窗口中运行
open ios/Runner.xcworkspace,打开项目中的默认 Xcode 工作区。 - 要查看应用的设置,请在 Xcode 导航器中选择 Runner 目标。
验证最重要的设置。
在 General 标签页的 Identity 部分
显示名称 (Display Name)您应用的显示名称。
套装标识符 (Bundle Identifier)您在 App Store Connect 上注册的 App ID。
在 Signing & Capabilities 标签页
自动管理签名 (Automatically manage signing)-
Xcode 是否应自动管理应用签名和配置文件。默认设置为
true,这对大多数应用来说已足够。对于更复杂的场景,请参阅代码签名指南。 团队 (Team)-
选择与您注册的 Apple Developer 账户关联的团队。如果需要,请选择 Add Account...,然后更新此设置。
在 Build Settings 标签页的 Deployment 部分
iOS 部署目标 (iOS Deployment Target)-
您的应用支持的最低 iOS 版本。Flutter 支持 iOS 13 及更高版本。如果您的应用或插件包含使用 iOS 13 以上版本 API 的 Objective-C 或 Swift 代码,请将此设置更新为所需的最高版本。
项目设置的 General 标签页应与下图类似
有关应用签名的详细概述,请参阅创建、导出和删除签名证书。
添加应用图标
#当创建新的 Flutter 应用时,会生成占位图标集。本步骤涵盖如何用您自己的应用图标替换这些占位图标。
- 请查阅 iOS 应用图标准则,特别是关于创建浅色、深色和着色图标的建议。
- 在 Xcode 项目导航器中,选择
Runner文件夹中的Assets.xcassets。用您自己的应用图标更新占位图标。 - 通过运行
flutter run启动应用,验证图标是否已替换。
添加启动图
#与应用图标类似,您也可以替换占位启动图。
- 在 Xcode 项目导航器中,选择
Runner文件夹中的Assets.xcassets。用您自己的启动图更新占位启动图。 - 通过热重启 (Hot Restart) 您的应用来验证新的启动图。(请勿使用
hot reload。)
创建构建归档并上传至 App Store Connect
#在开发过程中,您一直使用 debug 构建进行构建、调试和测试。当您准备将应用分发给 App Store 或 TestFlight 上的用户时,需要准备一个 release 构建。
更新应用的构建版本号和版本号
#应用的默认版本号是 1.0.0。要更新它,请导航到 pubspec.yaml 文件并更新以下行:
version: 1.0.0+1
版本号是三个由点分隔的数字(如上例中的 1.0.0),后跟一个可选的构建编号(如上例中的 1),并以 + 号分隔。
版本号和构建编号都可以在 flutter build ipa 命令中通过分别指定 --build-name 和 --build-number 来覆盖。
在 iOS 中,build-name 使用 CFBundleShortVersionString,而 build-number 使用 CFBundleVersion。在 Apple 开发者网站的核心基础键 (Core Foundation Keys)部分阅读更多关于 iOS 版本控制的信息。
您也可以在 Xcode 中覆盖 pubspec.yaml 中的构建名称和编号。
- 打开应用
ios文件夹下的Runner.xcworkspace。 - 在 Xcode 项目导航器中选择 Runner,然后在设置视图侧边栏中选择 Runner 目标。
- 在 Identity 部分,将 Version 更新为您希望发布的用户可见版本号。
- 在 Identity 部分,将 Build 标识符更新为一个唯一的构建编号,用于在 App Store Connect 上跟踪此版本。每次上传都需要一个唯一的构建编号。
创建应用套装 (App Bundle)
#运行 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 Transporter 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。点击 Validate App 按钮。如果报告了任何问题,请解决它们并重新构建。在您上传归档文件之前,您可以重复使用相同的构建 ID。
归档验证成功后,点击 Distribute App。
您可以在 App Store Connect 上应用详情页面的“活动 (Activities)”标签页中跟踪构建状态。您应该会在 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 Manager 权限的 App Store Connect API 密钥,以自动化 App Store Connect 的操作。为了使后续命令更简洁,请使用新密钥设置以下环境变量:issuer id、key 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 标签页。
- 在侧边栏中选择 Internal Testing。
- 选择要发布给测试人员的构建版本,然后点击 Save。
- 添加内部测试人员的电子邮件地址。您可以在 App Store Connect 的 Users and Roles 页面中添加额外的内部用户,该页面可从页面顶部的下拉菜单中访问。
更多详细信息,请参阅使用 TestFlight 分发应用。
在 App Store 上发布您的应用
#当您准备向全球发布应用时,请按照以下步骤提交应用进行审核并发布到 App Store
- 在 App Store Connect 上应用详情页面的侧边栏中选择 Pricing and Availability,并填写所需信息。
- 从侧边栏选择状态。如果这是该应用的首次发布,其状态为 1.0 Prepare for Submission。填写所有必填字段。
- 点击 Submit for Review。
当苹果的 App 审核流程完成后,他们会通知您。您的应用将按照您在 Version Release 部分中指定的说明进行发布。
更多详细信息,请参阅通过 App Store 分发应用。
故障排除
#分发您的应用指南提供了向 App Store 发布应用过程的详细概述。