跳至主要內容

建構和發布 iOS 應用程式

本指南提供將 Flutter 應用程式發布到 App StoreTestFlight 的逐步說明。

準備工作

#

您需要 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,請依照下列步驟操作

  1. 開啟開發人員帳戶的 App IDs 頁面。
  2. 按一下 + 來建立新的 Bundle ID。
  3. 輸入應用程式名稱,選取 明確 App ID,然後輸入 ID。
  4. 選取您的應用程式使用的服務,然後按一下 繼續
  5. 在下一頁,確認詳細資訊,然後按一下 註冊 以註冊您的 Bundle ID。

在 App Store Connect 上建立應用程式記錄

#

在 App Store Connect 上註冊您的應用程式

  1. 在您的瀏覽器中開啟 App Store Connect
  2. 在 App Store Connect 登陸頁面上,按一下 我的 App
  3. 在「我的 App」頁面的左上角,按一下 +,然後選取 新增 App
  4. 在出現的表單中填寫您的應用程式詳細資訊。在「平台」區段中,請確保已勾選 iOS。由於 Flutter 目前不支援 tvOS,請將該核取方塊保持不勾選。按一下 建立
  5. 導覽至您應用程式的應用程式詳細資訊,然後從側邊欄選取 App 資訊
  6. 在「一般資訊」區段中,選取您在上一步中註冊的 Bundle ID。

如需詳細概述,請參閱 將應用程式新增至您的帳戶

檢閱 Xcode 專案設定

#

此步驟涵蓋檢閱 Xcode 工作區中最重要的設定。如需詳細的步驟和說明,請參閱 準備應用程式發布

導覽至 Xcode 中目標的設定

  1. 從您的 Flutter 專案目錄,在終端機視窗中執行 open ios/Runner.xcworkspace,以開啟專案中的預設 Xcode 工作區。
  2. 若要檢視您的應用程式設定,請在 Xcode 導覽器中選取 Runner 目標。

驗證最重要的設定。

「一般」 標籤的 「身分」 區段中

顯示名稱
您的應用程式的顯示名稱。
Bundle ID
您在 App Store Connect 上註冊的 App ID。

「簽署與功能」 標籤中

自動管理簽署
Xcode 是否應自動管理應用程式簽署和佈建。預設值設定為 true,對於大多數應用程式來說應該足夠。對於更複雜的情況,請參閱 程式碼簽署指南
團隊
選取與您註冊的 Apple 開發人員帳戶相關聯的團隊。如果需要,請選取 新增帳戶...,然後更新此設定。

「建置設定」 標籤的 「部署」 區段中

iOS 部署目標
您的應用程式支援的最低 iOS 版本。Flutter 支援 iOS 12 及更高版本。如果您的應用程式或外掛程式包含使用高於 iOS 12 之 API 的 Objective-C 或 Swift 程式碼,請將此設定更新為所需的最高版本。

專案設定的 「一般」 標籤應類似於下列

Xcode Project Settings

如需應用程式簽署的詳細概述,請參閱 建立、匯出和刪除簽署憑證

更新應用程式的部署版本

#

如果您在 Xcode 專案中變更了 Deployment Target,請在您的 Flutter 應用程式中開啟 ios/Flutter/AppframeworkInfo.plist,並更新 MinimumOSVersion 值以符合。

新增應用程式圖示

#

當建立新的 Flutter 應用程式時,會建立預留位置圖示集。此步驟涵蓋以您的應用程式圖示取代這些預留位置圖示

  1. 檢閱 iOS 應用程式圖示 指南,尤其是有關 建立應用程式的淺色、深色和著色 圖示的建議。
  2. 在 Xcode 專案導覽器中,選取 Runner 資料夾中的 Assets.xcassets。使用您自己的應用程式圖示更新預留位置圖示。
  3. 使用 flutter run 執行您的應用程式,以驗證圖示是否已取代。

新增啟動畫面影像

#

與應用程式圖示類似,您也可以取代預留位置啟動畫面影像

  1. 在 Xcode 專案導覽器中,選取 Runner 資料夾中的 Assets.xcassets。使用您自己的啟動畫面影像更新預留位置啟動畫面影像。
  2. 透過熱重新啟動您的應用程式來驗證新的啟動畫面影像。(請勿使用 熱重載。)

建立建置封存並上傳至 App Store Connect

#

在開發期間,您一直在使用偵錯建置來建置、偵錯和測試。當您準備好將您的應用程式發布給 App Store 或 TestFlight 上的使用者時,您需要準備一個發布建置。

更新應用程式的建置和版本號碼

#

應用程式的預設版本號碼為 1.0.0。若要更新它,請導覽至 pubspec.yaml 檔案並更新下列程式碼行

yaml
version: 1.0.0+1

版本號碼是三個以點分隔的數字,例如上述範例中的 1.0.0,後接一個可選的建置號碼,例如上述範例中的 1,以 + 分隔。

版本號碼和建置號碼都可以藉由分別指定 --build-name--build-numberflutter build ipa 中覆寫。

在 iOS 中,build-name 使用 CFBundleShortVersionString,而 build-number 使用 CFBundleVersion。請在 Apple 開發人員網站上的 Core Foundation Keys 閱讀有關 iOS 版本控制的詳細資訊。

您也可以在 Xcode 中覆寫 pubspec.yaml 建置名稱和號碼

  1. 在應用程式的 ios 資料夾中開啟 Runner.xcworkspace
  2. 在 Xcode 專案導覽器中選取 Runner,然後在設定檢視側邊欄中選取 Runner 目標。
  3. 在「身分」區段中,將 版本 更新為您希望發布的面向使用者的版本號碼。
  4. 在「身分」區段中,將 建置 識別碼更新為在 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

  1. 安裝並開啟 Apple Transport macOS 應用程式。將 build/ios/ipa/*.ipa 應用程式套件拖放到應用程式中。

  2. 或透過執行下列命令,從命令列上傳應用程式套件

    bash
    xcrun altool --upload-app --type ios -f build/ios/ipa/*.ipa --apiKey your_api_key --apiIssuer your_issuer_id

    執行 man altool 以了解有關如何使用 App Store Connect API 金鑰進行驗證的詳細資訊。

  3. 或在 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。這樣您就能夠在與您的登入鑰匙圈隔離的臨時鑰匙圈中,完全控制發佈憑證來建立建置封存檔。

  1. 安裝 Codemagic CLI 工具

    bash
    pip3 install codemagic-cli-tools
  2. 您需要產生一個具有 App 管理員權限的 App Store Connect API 金鑰,以便自動執行 App Store Connect 的操作。為了使後續指令更簡潔,請從新的金鑰設定以下環境變數:發行者 ID、金鑰 ID 和 API 金鑰檔案。

    bash
    export 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`
  3. 您需要匯出或建立一個 iOS 發佈憑證,以進行程式碼簽署並封裝建置封存檔。

    如果您有現有的憑證,您可以為每個憑證執行以下指令來匯出私鑰

    bash
    openssl pkcs12 -in <certificate_name>.p12 -nodes -nocerts | openssl rsa -out cert_key

    或者您可以執行以下指令來建立新的私鑰

    bash
    ssh-keygen -t rsa -b 2048 -m PEM -f cert_key -q -N ""

    稍後,您可以讓 CLI 工具從私鑰自動建立新的 iOS 發佈憑證。

  4. 設定一個新的臨時鑰匙圈用於程式碼簽署

    bash
    keychain initialize
  5. 從 App Store Connect 提取程式碼簽署檔案

    bash
    app-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 中不存在,則會從私鑰建立憑證。

  6. 現在將提取的憑證加入您的鑰匙圈

    bash
    keychain add-certificates
  7. 更新 Xcode 專案設定以使用提取的程式碼簽署描述檔

    bash
    xcode-project use-profiles
  8. 安裝 Flutter 相依性

    bash
    flutter packages pub get
  9. 安裝 CocoaPods 相依性

    bash
    find . -name "Podfile" -execdir pod install \;
  10. 建置 Flutter iOS 專案

    bash
    flutter build ipa --release \
        --export-options-plist=$HOME/export_options.plist

    請注意,export_options.plistxcode-project use-profiles 指令的輸出。

  11. 將應用程式發佈到 App Store Connect

    bash
    app-store-connect publish \
        --path $(find $(pwd) -name "*.ipa")
  12. 如先前所述,請勿忘記將您的登入鑰匙圈設定為預設值,以避免您機器上的應用程式發生身份驗證問題

    bash
    keychain use-login

您應該在 30 分鐘內收到一封電子郵件,通知您您的建置已通過驗證,並且可以在 TestFlight 上發佈給測試人員。此時您可以選擇是否在 TestFlight 上發佈,或直接將您的應用程式發佈到 App Store。

在 TestFlight 上發布您的應用程式

#

TestFlight 允許開發人員將他們的應用程式推送給內部和外部測試人員。這個可選步驟涵蓋在 TestFlight 上發佈您的建置。

  1. 導覽至您在 App Store Connect 上應用程式詳細資料頁面的 TestFlight 標籤。
  2. 在側邊欄中選取內部測試
  3. 選取要發佈給測試人員的建置,然後按一下儲存
  4. 加入任何內部測試人員的電子郵件地址。您可以在 App Store Connect 的使用者和角色頁面中加入其他內部使用者,該頁面可從頁面頂部的下拉式選單取得。

如需更多詳細資訊,請參閱使用 TestFlight 發佈應用程式

將您的應用程式發布到 App Store

#

當您準備好向全世界發佈您的應用程式時,請按照以下步驟提交您的應用程式進行審查並發佈到 App Store

  1. 從您在 App Store Connect 上應用程式詳細資料頁面的側邊欄選取定價與供應狀態,並填寫必要資訊。
  2. 從側邊欄選取狀態。如果這是此應用程式的首次發佈,其狀態為1.0 準備提交。填寫所有必填欄位。
  3. 按一下提交以供審查

當 Apple 的應用程式審查流程完成時,他們會通知您。您的應用程式會按照您在版本發佈部分中指定的指示發佈。

如需更多詳細資訊,請參閱透過 App Store 發佈應用程式

疑難排解

#

發佈您的應用程式指南提供了將應用程式發佈到 App Store 的流程的詳細概述。