構建併發布 iOS 應用
如何將 Flutter 應用釋出到 App Store。
本指南提供了一個逐步的教程,介紹瞭如何將 Flutter 應用釋出到 App Store 和 TestFlight。
準備工作
#構建和釋出您的應用需要 Xcode。您必須使用執行 macOS 的裝置才能遵循本指南。
在開始釋出應用的過程之前,請確保它符合 Apple 的 App Review Guidelines(應用稽核指南)。
要將您的應用釋出到 App Store,您首先必須註冊 Apple Developer Program(Apple 開發者計劃)。您可以在 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
#每個 iOS 應用程式都與一個 Bundle ID 相關聯,該 Bundle ID 是在 Apple 註冊的唯一識別符號。要為您的應用註冊 Bundle ID,請按照以下步驟操作
- 開啟您的開發者帳戶的 App IDs(應用 ID)頁面。
- 單擊 + 以建立新的 Bundle ID。
- 輸入應用名稱,選擇 Explicit App ID(顯式應用 ID),並輸入一個 ID。
- 選擇您的應用使用的服務,然後單擊 Continue(繼續)。
- 在下一頁上,確認詳細資訊並單擊 Register(註冊)以註冊您的 Bundle 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”(常規資訊)部分,選擇您在上一步中註冊的 Bundle ID。
有關詳細概述,請參閱 Add an app to your account(將應用新增到您的帳戶)。
檢查 Xcode 專案設定
#本步驟涵蓋了檢查 Xcode 工作區中最重要設定。有關詳細的步驟和描述,請參閱 Prepare for app distribution(準備應用分發)。
導航到 Xcode 中的目標設定
- 透過在 Flutter 專案目錄中的終端視窗中執行
open ios/Runner.xcworkspace開啟您專案中的預設 Xcode 工作區。 - 要檢視您的應用設定,請在 Xcode 導航器中選擇 Runner 目標。
驗證最重要的設定。
在 General(常規)選項卡的 Identity(標識)部分
顯示名稱您的應用的顯示名稱。
Bundle Identifier您在 App Store Connect 上註冊的 App ID。
在 Signing & Capabilities(簽名與功能)選項卡中
自動管理簽名-
Xcode 是否應自動管理應用簽名和配置。預設設定為
true,對於大多數應用來說應該足夠了。對於更復雜的場景,請參閱 Code Signing Guide(程式碼簽名指南)。 團隊-
選擇與您註冊的 Apple Developer 帳戶關聯的團隊。如果需要,選擇 Add Account...(新增帳戶),然後更新此設定。
在 Build Settings(構建設定)選項卡的 Deployment(部署)部分
iOS 部署目標-
您的應用支援的最低 iOS 版本。Flutter 支援 iOS 13 及更高版本。如果您的應用或外掛包含使用比 iOS 12 更新的 API 的 Objective-C 或 Swift 程式碼,請將此設定更新為所需的最高版本。
您的專案設定的 General(常規)選項卡應如下所示
有關應用簽名的詳細概述,請參閱 Create, export, and delete signing certificates(建立、匯出和刪除簽名證書)。
新增應用圖示
#建立新的 Flutter 應用時,會建立一個佔位符圖示集。本步驟涵蓋使用您的應用圖示替換這些佔位符圖示
- 檢視 iOS App Icon(iOS 應用圖示)指南,特別是關於 建立淺色、深色和著色圖示的建議。
- 在 Xcode 專案導航器中,選擇
Runner資料夾中的Assets.xcassets。使用您自己的應用圖示更新佔位符圖示。 - 透過執行
flutter run執行您的應用來驗證圖示是否已替換。
新增啟動圖片
#與應用圖示類似,您也可以替換佔位符啟動圖片
- 在 Xcode 專案導航器中,選擇
Runner資料夾中的Assets.xcassets。使用您自己的啟動圖片更新佔位符啟動圖片。 - 透過熱重啟您的應用來驗證新的啟動圖片。(不要使用
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 開發者網站上閱讀有關 iOS 版本控制的更多資訊:Core Foundation Keys(核心基礎鍵)。
您還可以覆蓋 pubspec.yaml 構建名稱和編號在 Xcode 中
- 開啟您應用
ios資料夾中的Runner.xcworkspace。 - 在 Xcode 專案導航器中選擇 Runner,然後在設定檢視側邊欄中選擇 Runner 目標。
- 在“Identity”(標識)部分,更新 Version(版本)為要釋出的面向使用者的版本號。
- 在“Identity”(標識)部分,更新 Build(構建)識別符號為用於在 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 Transporter macOS app。將
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 上釋出您的應用。
有關更多詳細資訊,請參閱 Upload an app to App Store Connect(將應用上傳到 App Store Connect)。
使用 Codemagic CLI 工具建立構建歸檔
#本步驟涵蓋了使用 Flutter 構建命令和在 Flutter 專案目錄中的終端中執行的 Codemagic CLI 工具 建立構建歸檔並將構建上傳到 App Store Connect。這允許您使用完全控制分發證書的臨時金鑰鏈(與您的登入金鑰鏈隔離)建立構建歸檔。
安裝 Codemagic CLI 工具
bashpip3 install codemagic-cli-tools您需要生成一個具有應用管理器訪問許可權的 App Store Connect API Key,以自動執行 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 分發配置。
設定一個新的臨時 Keychain 用於程式碼簽名
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 中不存在該證書,則會從私鑰建立證書。現在將獲取的證書新增到您的 Keychain
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")如前所述,請不要忘記將您的登入 Keychain 設定為預設值,以避免機器上的應用程式出現身份驗證問題
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 的流程的詳細概述。