构建和发布 macOS 应用
- 准备工作
- 在 App Store Connect 上注册您的应用
- 检查 Xcode 项目设置
- 配置应用名称、Bundle ID 和版权信息
- 更新应用版本号
- 添加应用图标
- 使用 Xcode 创建构建归档文件
- 使用 Codemagic CLI 工具创建构建归档文件
- 在 TestFlight 上发布您的应用
- 分发到已注册的设备
- 将您的应用发布到 App Store
- 疑难解答
- 其他资源
本指南提供了一个分步指南,介绍如何将 Flutter 应用发布到 App Store。
准备工作
#在开始发布应用流程之前,请确保您的应用符合 Apple 的 App Review Guidelines。
为了将您的应用发布到 App Store,您必须首先加入 Apple Developer Program。您可以在 Apple 的 Choosing a Membership 指南中了解更多关于各种会员选项的信息。
在 App Store Connect 上注册您的应用
#在 App Store Connect(以前称为 iTunes Connect)上管理您的应用生命周期。您可以定义您的应用名称和描述,添加屏幕截图,设置定价,并管理发布到 App Store 和 TestFlight。
注册您的应用涉及两个步骤:注册唯一的 Bundle ID 和在 App Store Connect 上创建应用记录。
有关 App Store Connect 的详细概述,请参阅 App Store Connect 指南。
注册 Bundle ID
#每个 macOS 应用程序都与一个 Bundle ID 关联,这是一个在 Apple 中注册的唯一标识符。要为您的应用注册 Bundle ID,请按照以下步骤操作
- 打开开发者帐户的 App IDs 页面。
- 点击+ 创建新的 Bundle ID。
- 输入应用名称,选择显式 App ID,然后输入 ID。
- 选择您的应用使用的服务,然后点击继续。
- 在下一页上,确认详细信息,然后点击注册 以注册您的 Bundle ID。
在 App Store Connect 上创建应用记录
#在 App Store Connect 上注册您的应用
- 在浏览器中打开 App Store Connect。
- 在 App Store Connect 登录页面上,点击我的应用。
- 点击“我的应用”页面左上角的+,然后选择新应用。
- 在出现的表单中填写您的应用详细信息。在“平台”部分,确保选中 macOS。由于 Flutter 目前不支持 tvOS,请勿选中该复选框。点击创建。
- 导航到您的应用的应用详细信息,并从侧边栏中选择应用信息。
- 在“常规信息”部分,选择您在上一步中注册的 Bundle ID。
有关详细概述,请参阅 将应用添加到您的帐户。
检查 Xcode 项目设置
#此步骤介绍了检查 Xcode 工作区中最重要的设置。有关详细步骤和说明,请参阅 准备应用分发。
导航到您目标的设置在 Xcode 中
- 在 Xcode 中,打开应用的
macos
文件夹中的Runner.xcworkspace
。 - 要查看您的应用设置,请在 Xcode 项目导航器中选择Runner 项目。然后,在主视图侧边栏中,选择Runner 目标。
- 选择常规选项卡。
验证最重要的设置。
在标识部分
应用类别
- 您的应用将在 Mac App Store 上列出的应用类别。这不能为“无”。
Bundle ID
- 您在 App Store Connect 上注册的 App ID。
在部署信息部分
部署目标
- 您的应用支持的最低 macOS 版本。Flutter 支持将应用部署到 macOS 10.14(Mojave)及更高版本。
在签名与功能部分
自动管理签名
- Xcode 是否应自动管理应用签名和配置文件。默认情况下,此设置为
true
,这对于大多数应用来说应该足够了。对于更复杂的场景,请参阅 代码签名指南。 团队
- 选择与您已注册的 Apple Developer 帐户关联的团队。如果需要,选择添加帐户...,然后更新此设置。
您的项目设置的常规选项卡应类似于以下内容
有关应用签名的详细概述,请参阅 创建、导出和删除签名证书。
配置应用名称、Bundle ID 和版权信息
#产品标识符的配置集中在 macos/Runner/Configs/AppInfo.xcconfig
中。对于应用名称,设置 PRODUCT_NAME
,对于版权信息,设置 PRODUCT_COPYRIGHT
,最后设置 PRODUCT_BUNDLE_IDENTIFIER
作为应用的 Bundle ID。
更新应用版本号
#应用的默认版本号为 1.0.0
。要更新它,请导航到 pubspec.yaml
文件并更新以下行
version: 1.0.0+1
版本号由三个用点分隔的数字组成,例如上面示例中的 1.0.0
,后跟一个可选的构建编号,例如上面示例中的 1
,用 +
分隔。
版本和构建编号都可以在 Flutter 的构建中通过分别指定 --build-name
和 --build-number
来覆盖。
在 macOS 中,build-name
使用 CFBundleShortVersionString
,而 build-number
使用 CFBundleVersion
。在 Apple 开发者网站上的 Core Foundation Keys 中阅读有关 iOS 版本控制的更多信息。
添加应用图标
#创建新的 Flutter 应用时,会创建一个占位符图标集。此步骤介绍了如何将这些占位符图标替换为您的应用图标
- 查看 macOS App Icon 指南。
- 在 Xcode 项目导航器中,选择
Runner
文件夹中的Assets.xcassets
。使用您自己的应用图标更新占位符图标。 - 通过使用
flutter run -d macos
运行您的应用来验证图标是否已替换。
使用 Xcode 创建构建归档文件
#此步骤介绍了如何使用 Xcode 创建构建归档文件并将构建上传到 App Store Connect。
在开发过程中,您一直在使用调试构建进行构建、调试和测试。当您准备好将应用发布到 App Store 或 TestFlight 上的用户时,您需要准备一个发布构建。此时,您可能会考虑 混淆您的 Dart 代码 以使其更难以进行反向工程。混淆代码涉及向构建命令添加几个标志。
在 Xcode 中,配置应用版本和构建
- 打开应用的
macos
文件夹中的Runner.xcworkspace
。要从命令行执行此操作,请从您的应用程序项目的基目录运行以下命令。open macos/Runner.xcworkspace
- 在 Xcode 项目导航器中选择Runner,然后在设置视图侧边栏中选择Runner 目标。
- 在“标识”部分,将版本更新为您要发布的用户界面版本号。
- 在“标识”部分,将构建标识符更新为用于在 App Store Connect 上跟踪此构建的唯一构建编号。每次上传都需要一个唯一的构建编号。
最后,创建一个构建归档文件并将其上传到 App Store Connect
- 创建应用程序的发布归档文件。从应用程序项目的基目录运行以下命令。
flutter build macos
- 打开 Xcode 并选择产品 > 归档以打开上一步中创建的归档文件。
- 点击验证应用按钮。如果报告了任何问题,请解决这些问题并生成另一个构建。您可以重复使用相同的构建 ID,直到您上传归档文件。
- 归档文件成功验证后,点击分发应用。您可以在 App Store Connect 上的应用详细信息页面的“活动”选项卡中跟踪构建的状态。
您应该会在 30 分钟内收到一封电子邮件,通知您您的构建已验证,并且可以发布到 TestFlight 上的测试人员。此时,您可以选择是在 TestFlight 上发布,还是继续将您的应用发布到 App Store。
有关更多详细信息,请参阅 将应用上传到 App Store Connect。
使用 Codemagic CLI 工具创建构建归档文件
#此步骤介绍了如何使用 Flutter 构建命令和 Codemagic CLI Tools 在 Flutter 项目目录的终端中执行,创建构建归档文件并将构建上传到 App Store Connect。
安装 Codemagic CLI 工具
bashpip3 install codemagic-cli-tools
您需要使用 App Manager 访问权限生成一个 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`
您需要导出或创建一个 Mac App Distribution 和 Mac Installer Distribution 证书来执行代码签名和打包构建归档文件。
如果您有现有的 证书,您可以通过对每个证书执行以下命令来导出私钥
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 工具自动创建一个新的 Mac App Distribution 和 Mac Installer Distribution 证书。您可以对每个新证书使用相同的私钥。
从 App Store Connect 获取代码签名文件
bashapp-store-connect fetch-signing-files YOUR.APP.BUNDLE_ID \ --platform MAC_OS \ --type MAC_APP_STORE \ --certificate-key=@file:/path/to/cert_key \ --create
其中
cert_key
是您导出的 Mac App Distribution 证书私钥或自动生成新证书的新私钥。如果您没有 Mac Installer Distribution 证书,您可以通过执行以下操作创建一个新证书
bashapp-store-connect certificates create \ --type MAC_INSTALLER_DISTRIBUTION \ --certificate-key=@file:/path/to/cert_key \ --save
使用您之前创建的私钥的
cert_key
。获取 Mac Installer Distribution 证书
bashapp-store-connect certificates list \ --type MAC_INSTALLER_DISTRIBUTION \ --certificate-key=@file:/path/to/cert_key \ --save
设置一个新的临时密钥链,用于代码签名
bashkeychain initialize
现在将获取的证书添加到您的密钥链中
bashkeychain add-certificates
更新 Xcode 项目设置以使用获取的代码签名配置文件
bashxcode-project use-profiles
安装 Flutter 依赖项
bashflutter packages pub get
安装 CocoaPods 依赖项
bashfind . -name "Podfile" -execdir pod install \;
构建 Flutter macOS 项目
bashflutter build macos --release
打包应用程序
bashAPP_NAME=$(find $(pwd) -name "*.app") PACKAGE_NAME=$(basename "$APP_NAME" .app).pkg xcrun productbuild --component "$APP_NAME" /Applications/ unsigned.pkg INSTALLER_CERT_NAME=$(keychain list-certificates \ | jq '[.[] | select(.common_name | contains("Mac Developer Installer")) | .common_name][0]' \ | xargs) xcrun productsign --sign "$INSTALLER_CERT_NAME" unsigned.pkg "$PACKAGE_NAME" rm -f unsigned.pkg
将打包的应用程序发布到 App Store Connect
bashapp-store-connect publish \ --path "$PACKAGE_NAME"
如前所述,请勿忘记将您的登录密钥链设置为默认密钥链,以避免机器上应用程序可能出现的身份验证问题
bashkeychain use-login
在 TestFlight 上发布您的应用
#TestFlight 允许开发者将其应用程序推送到内部和外部测试人员。此可选步骤涵盖在 TestFlight 上发布您的构建。
- 导航到 App Store Connect 上您应用的应用程序详细信息页面中的 TestFlight 选项卡。
- 在侧边栏中选择**内部测试**。
- 选择要发布给测试人员的构建,然后点击**保存**。
- 添加任何内部测试人员的电子邮件地址。您可以在 App Store Connect 的**用户和角色**页面中添加其他内部用户,该页面可从页面顶部的下拉菜单中访问。
分发到已注册的设备
#请参阅 分发指南,以准备用于分发到指定 Mac 计算机的归档文件。
将您的应用发布到 App Store
#当您准备好将您的应用发布到全球时,请按照以下步骤提交您的应用以供审核并发布到 App Store
- 在 App Store Connect 上您应用的应用程序详细信息页面侧边栏中选择**定价和可用性**,并填写所需信息。
- 选择侧边栏中的状态。如果这是此应用的首次发布,则其状态为**1.0 准备提交**。填写所有必填字段。
- 点击**提交以供审核**。
Apple 会在他们的应用程序审核流程完成后通知您。您的应用将根据您在**版本发布**部分中指定的说明发布。
有关更多详细信息,请参阅 通过 App Store 分发应用。
疑难解答
#分发您的应用 指南提供了将应用发布到 App Store 的过程的详细概述。
其他资源
#要了解如何以开源方式打包和分发您的 Flutter 桌面应用以供 macOS 使用,而无需使用付费的 Apple 开发者帐户,请查看分步的 macOS 打包指南。
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面上次更新于 2024-05-14。 查看源代码 或 报告问题。