建置和發布 macOS 應用程式
- 準備事項
- 在 App Store Connect 上註冊您的應用程式
- 檢閱 Xcode 專案設定
- 設定應用程式的名稱、Bundle ID 和著作權
- 更新應用程式的版本號碼
- 新增應用程式圖示
- 使用 Xcode 建立建置封存檔
- 使用 Codemagic CLI 工具建立建置封存檔
- 在 TestFlight 上發布您的應用程式
- 發布到已註冊的裝置
- 在 App Store 上發布您的應用程式
- 疑難排解
- 其他資源
本指南提供逐步說明,引導您將 Flutter 應用程式發布到 App Store。
準備事項
#在開始發布應用程式的流程之前,請確保它符合 Apple 的 App 審查指南。
為了將您的應用程式發布到 App Store,您必須先加入 Apple 開發者計畫。您可以在 Apple 的 選擇成員資格指南中閱讀更多關於各種成員資格選項的資訊。
在 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 相關聯,Bundle ID 是在 Apple 註冊的唯一識別碼。若要為您的應用程式註冊 Bundle ID,請按照下列步驟操作
- 開啟您開發人員帳戶的 App IDs 頁面。
- 點擊 + 建立新的 Bundle ID。
- 輸入應用程式名稱,選取 Explicit App ID,並輸入 ID。
- 選取您的應用程式使用的服務,然後點擊 Continue。
- 在下一個頁面上,確認詳細資料,然後點擊 Register 以註冊您的 Bundle ID。
在 App Store Connect 上建立應用程式記錄
#在 App Store Connect 上註冊您的應用程式
- 在您的瀏覽器中開啟 App Store Connect。
- 在 App Store Connect 首頁,點擊 My Apps。
- 點擊「My Apps」頁面左上角的 +,然後選取 New App。
- 在出現的表單中填寫您的應用程式詳細資料。在「Platforms」區段中,請確保已勾選 macOS。由於 Flutter 目前不支援 tvOS,因此請將該核取方塊保持未勾選。點擊 Create。
- 導覽至您應用程式的應用程式詳細資料,然後從側邊欄選取 App Information。
- 在「General Information」區段中,選取您在前一步驟中註冊的 Bundle ID。
如需詳細概述,請參閱 將應用程式新增至您的帳戶。
檢閱 Xcode 專案設定
#此步驟涵蓋檢閱 Xcode 工作區中最重要的設定。如需詳細程序和說明,請參閱 為應用程式發布做準備。
導覽至 Xcode 中您目標的設定
- 在 Xcode 中,開啟您應用程式的
macos
資料夾中的Runner.xcworkspace
。 - 若要檢視您應用程式的設定,請在 Xcode 專案導覽器中選取 Runner 專案。然後,在主視圖側邊欄中,選取 Runner 目標。
- 選取 General 標籤。
驗證最重要的設定。
在 Identity 區段中
App Category
- 您的應用程式將在 Mac App Store 上列出的應用程式類別。這不能為「無」。
Bundle Identifier
- 您在 App Store Connect 上註冊的 App ID。
在 Deployment info 區段中
Deployment Target
- 您的應用程式支援的最低 macOS 版本。Flutter 支援將應用程式部署到 macOS 10.14 (Mojave) 及更高版本。
在 Signing & Capabilities 區段中
Automatically manage signing
- Xcode 是否應自動管理應用程式簽署和佈建。預設值設定為
true
,這應足以滿足大多數應用程式的需求。對於更複雜的情形,請參閱 程式碼簽署指南。 Team
- 選取與您註冊的 Apple 開發者帳戶相關聯的團隊。如果需要,選取 Add Account...,然後更新此設定。
您專案設定的 General 標籤應如下所示
如需應用程式簽署的詳細概述,請參閱 建立、匯出和刪除簽署憑證。
設定應用程式的名稱、Bundle ID 和著作權
#產品識別碼的組態集中在 macos/Runner/Configs/AppInfo.xcconfig
中。對於應用程式名稱,設定 PRODUCT_NAME
,對於著作權,設定 PRODUCT_COPYRIGHT
,最後,對於應用程式的 Bundle ID,設定 PRODUCT_BUNDLE_IDENTIFIER
。
更新應用程式的版本號碼
#應用程式的預設版本號碼為 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
。如需 iOS 版本控制的更多資訊,請參閱 Apple 開發人員網站上的 Core Foundation Keys。
新增應用程式圖示
#當建立新的 Flutter 應用程式時,會建立一個預留位置圖示集。此步驟涵蓋將這些預留位置圖示取代為您應用程式的圖示
- 檢閱 macOS 應用程式圖示指南。
- 在 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 目標。
- 在「Identity」區段中,將 Version 更新為您要發布的使用者可見版本號碼。
- 在「Identity」區段中,將 Build 識別碼更新為用於在 App Store Connect 上追蹤此組建的唯一組建號碼。每次上傳都需要一個唯一的組建號碼。
最後,建立組建封存檔並將其上傳到 App Store Connect
- 建立您應用程式的發行封存檔。從您的應用程式專案的根目錄執行以下命令。
flutter build macos
- 開啟 Xcode 並選取 Product > Archive 以開啟在上一個步驟中建立的封存檔。
- 點擊 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 的操作。若要使後續的命令更加簡潔,請從新金鑰設定以下環境變數:發行者 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 應用程式發行憑證和 Mac 安裝程式發行憑證,才能執行程式碼簽署並封裝建置封存檔。
如果您有現有的憑證,您可以執行以下命令來匯出每個憑證的私密金鑰
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 應用程式發行憑證和 Mac 安裝程式發行憑證。您可以為每個新憑證使用相同的私密金鑰。
從 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 應用程式發行憑證私密金鑰,或是自動產生新憑證的新私密金鑰。如果您沒有 Mac 安裝程式發行憑證,您可以執行以下命令來建立新的憑證
bashapp-store-connect certificates create \ --type MAC_INSTALLER_DISTRIBUTION \ --certificate-key=@file:/path/to/cert_key \ --save
使用您稍早建立的私密金鑰的
cert_key
。擷取 Mac 安裝程式發行憑證
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 準備提交。填寫所有必填欄位。
- 按一下 提交以供審查。
當蘋果的應用程式審查流程完成時,他們會通知您。您的應用程式會根據您在 版本發布 區段中指定的指示發布。
如需更多詳細資訊,請參閱透過 App Store 發布應用程式。
疑難排解
#發布您的應用程式 指南提供了有關將應用程式發布到 App Store 的流程的詳細概述。
其他資源
#若要了解如何以開源方式封裝和發布適用於 macOS 的 Flutter 桌面應用程式,而無需使用付費的 Apple 開發人員帳戶,請查看逐步教學的 macOS 封裝指南。
除非另有說明,否則本網站上的文件反映了 Flutter 的最新穩定版本。此頁面最後更新於 2024-05-14。 檢視原始碼 或 回報問題。