建構和發布 iOS 應用程式
- 準備工作
- 影片概觀
- 在 App Store Connect 上註冊您的應用程式
- 檢閱 Xcode 專案設定
- 更新應用程式的部署版本
- 新增應用程式圖示
- 新增啟動畫面影像
- 建立建置封存並上傳至 App Store Connect
- 使用 Codemagic CLI 工具建立建置封存
- 在 TestFlight 上發布您的應用程式
- 將您的應用程式發布到 App Store
- 疑難排解
本指南提供將 Flutter 應用程式發布到 App Store 和 TestFlight 的逐步說明。
準備工作
#您需要 Xcode 來建置和發布應用程式。您必須使用執行 macOS 的裝置來遵循本指南。
在開始發布應用程式的流程之前,請確保它符合 Apple 的 App 審查指南。
若要將您的應用程式發布到 App Store,您必須先加入 Apple 開發者計畫。您可以在 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 IDs 頁面。
- 按一下 + 來建立新的 Bundle ID。
- 輸入應用程式名稱,選取 明確 App ID,然後輸入 ID。
- 選取您的應用程式使用的服務,然後按一下 繼續。
- 在下一頁,確認詳細資訊,然後按一下 註冊 以註冊您的 Bundle ID。
在 App Store Connect 上建立應用程式記錄
#在 App Store Connect 上註冊您的應用程式
- 在您的瀏覽器中開啟 App Store Connect。
- 在 App Store Connect 登陸頁面上,按一下 我的 App。
- 在「我的 App」頁面的左上角,按一下 +,然後選取 新增 App。
- 在出現的表單中填寫您的應用程式詳細資訊。在「平台」區段中,請確保已勾選 iOS。由於 Flutter 目前不支援 tvOS,請將該核取方塊保持不勾選。按一下 建立。
- 導覽至您應用程式的應用程式詳細資訊,然後從側邊欄選取 App 資訊。
- 在「一般資訊」區段中,選取您在上一步中註冊的 Bundle ID。
如需詳細概述,請參閱 將應用程式新增至您的帳戶。
檢閱 Xcode 專案設定
#此步驟涵蓋檢閱 Xcode 工作區中最重要的設定。如需詳細的步驟和說明,請參閱 準備應用程式發布。
導覽至 Xcode 中目標的設定
- 從您的 Flutter 專案目錄,在終端機視窗中執行
open ios/Runner.xcworkspace
,以開啟專案中的預設 Xcode 工作區。 - 若要檢視您的應用程式設定,請在 Xcode 導覽器中選取 Runner 目標。
驗證最重要的設定。
在 「一般」 標籤的 「身分」 區段中
顯示名稱
- 您的應用程式的顯示名稱。
Bundle ID
- 您在 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
。按一下 驗證 App 按鈕。如果回報任何問題,請解決這些問題並產生另一個建置。您可以在上傳封存之前重複使用相同的建置 ID。
成功驗證封存後,請按一下 發布 App。
您可以在 App Store Connect 上您應用程式詳細資訊頁面的「活動」索引標籤中追蹤您的建置狀態。您應該會在 30 分鐘內收到一封電子郵件,通知您您的建置已驗證,並且可以在 TestFlight 上發布給測試人員。此時,您可以選擇是否在 TestFlight 上發布,或繼續將您的應用程式發布到 App Store。
如需更多詳細資訊,請參閱 將應用程式上傳至 App Store Connect。
使用 Codemagic CLI 工具建立建置封存
#這個步驟涵蓋使用 Flutter 建置指令和 Codemagic CLI 工具,在 Flutter 專案目錄中的終端機中執行,來建立建置封存檔並將您的建置上傳至 App Store Connect。這樣您就能夠在與您的登入鑰匙圈隔離的臨時鑰匙圈中,完全控制發佈憑證來建立建置封存檔。
安裝 Codemagic CLI 工具
bashpip3 install codemagic-cli-tools
您需要產生一個具有 App 管理員權限的 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。 檢視原始碼 或 回報問題。