1. 事前準備
在本程式碼研究室中,您將瞭解如何使用 Firebase 應用程式發布和 fastlane 外掛程式,將 iOS 應用程式發布給測試人員、收集測試裝置 UDID,並將這些 UDID 註冊到應用程式的佈建設定檔,以便快速將 Ad Hoc 建構版本提供給測試人員。
課程內容
- 如何使用 Firebase 應用程式發布和 fastlane,將預先發布的 iOS 應用程式 (Ad Hoc) 上傳及發布給測試人員。
- 如何註冊成為測試人員,並在測試裝置上下載發布的應用程式。
- 如何使用 App Distribution 的 fastlane 外掛程式匯出測試裝置 UDID,快速註冊測試裝置。
- 如何更新應用程式的佈建設定檔,並重新上傳以供發布。
事前準備
- Google 帳戶
- 已安裝 XCode 11.7 以上版本的 Apple 裝置
- 在 Xcode 中建構的臨時預先發布版 iOS 應用程式
- 付費 Apple 開發人員帳戶
- 用於測試的實體 iOS 裝置。
iOS 模擬器應用程式適用於大部分的程式碼研究室,但模擬器無法下載版本。
您仍可確認「應用程式發布」測試人員網頁應用程式是否顯示「下載」按鈕,藉此驗證設定是否正常運作。
2. 開始使用
設定 fastlane
應用程式發布與 fastlane 整合,可自動發布應用程式的預先發布版本。應用程式發布會與 fastlane 設定整合。
- 安裝及設定 fastlane。
- 在設定期間,於專案的根目錄中執行
fastlane init
,然後選擇「手動設定」。您會看到名為fastlane
的子目錄,其中包含Fastfile
、Appfile
和Pluginfile
,您將使用這些檔案設定 fastlane。
安裝 Firebase CLI
您也需要安裝 Firebase CLI。如果您使用 macOS 或 Linux,可以執行下列 cURL 指令:
curl -sL https://firebase.tools | bash
如果是 Windows,請參閱安裝說明,取得獨立二進位檔或透過 npm
安裝。
安裝 CLI 後,執行 firebase --version
應會回報 12.0.0
以上版本:
$ firebase --version 12.0.0
3. 使用 fastlane 建構應用程式
建構應用程式
- 在
./fastlane/Appfile.
中為 fastlane 設定一些全域變數,包括應用程式 ID 和 Apple ID:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- 建立第一個通道,並使用 fastlane 的
build_app
動作 (也稱為gym
) 建構應用程式,方法是在./fastlane/Fastfile
中加入下列內容:
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- 簽署應用程式以供發布。
在本程式碼研究室中,您將使用 get_certificates
(也稱為 cert
) 管理自己的認證和設定檔,這項工具會在本地產生簽署憑證,並將所有內容儲存在 macOS 鑰匙圈中。不過,您通常會使用 fastlane sync_code_signing action
(也稱為 match
) 安全地管理團隊的程式碼簽署憑證和設定檔。
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
- 使用
get_provisioning_profile
動作 (也稱為sigh
) 為應用程式設定佈建設定檔。這樣一來,您就能與測試人員分享應用程式。
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [選用] 如果您從未執行過應用程式,請執行下列指令,在 Apple 開發人員控制台中建立應用程式:
$ fastlane produce --skip_itc
- 最後,執行車道來建構應用程式。
系統會提示您輸入 Apple ID、密碼 (儲存在鑰匙圈中) 和應用程式的軟體包 ID。
$ fastlane build
如有任何問題,請參閱fastlane 疑難排解指南。
4. 將應用程式上傳至 Firebase
您已建構應用程式,現在可以將其上傳至「應用程式發布」了。
建立新的 Firebase 專案
- 使用 Google 帳戶登入 Firebase 控制台。
- 按一下按鈕建立新專案,然後輸入專案名稱 (例如
UDID Export Codelab
)。 - 按一下「繼續」。
- 如果系統提示,請詳閱並接受 Firebase 條款,然後按一下「繼續」。
- (選用) 在 Firebase 控制台中啟用 AI 輔助功能 (稱為「Gemini in Firebase」)。
- 本程式碼研究室不需要 Google Analytics,因此請關閉 Google Analytics 選項。
- 按一下「建立專案」,等待專案佈建完成,然後按一下「繼續」。
將 iOS 應用程式加進專案
- 按一下 iOS 圖示建立新的 Firebase iOS 應用程式,然後輸入應用程式的套件組合 ID。
- 略過接下來的幾個步驟,然後按一下「Continue to console」(前往主控台)。您稍後會在應用程式中加入 SDK。
專案和應用程式現在會顯示在「專案總覽」頁面。
啟用應用程式發布
在 fastlane 中設定發布作業
- 在 iOS 專案的根目錄中執行下列指令,將 App Distribution 新增至 fastlane 設定。
如果指令提示您選擇選項,請選取「Option 3: RubyGems.org」:
$ fastlane add_plugin firebase_app_distribution
- 確認外掛程式已安裝:
$ fastlane
輸出內容應會顯示已安裝外掛程式清單中的 fastlane-plugin-firebase_app_distribution
。
- 確認外掛程式已安裝後,請選擇選項 0 取消。
驗證 Firebase 專案
如要使用 fastlane 外掛程式,請先驗證 Firebase 專案。
- 執行下列指令,將 CLI 連線至您的 Google 帳戶:
$ firebase login
- 當指令列印驗證連結時,請在瀏覽器中開啟該連結。
- 看到提示訊息後,請登入 Google 帳戶,並授予存取 Firebase 專案的權限。
發布應用程式
現在可以開始發布應用程式了。
- 在
./fastlane/Fastfile
頂端定義名為firebase_app_id
的變數。將<your_app_id>
替換為您建立的應用程式的 Firebase 應用程式 ID (可在專案設定頁面中找到)。
Fastfile
是以 Ruby 編寫,因此請使用 Ruby 語法定義變數。
firebase_app_id = "<your_app_id>"
- 新增名為
distribute
的新通道,呼叫建構通道,然後使用firebase_app_distribution
動作發布應用程式。
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- 執行新通道,建構應用程式並建立發布內容。
$ fastlane distribute
此時,您的 Fastfile 應如下所示:
firebase_app_id = "<your Firebase app ID>"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
重新整理 Firebase 控制台後,您會看到應用程式的新版本。
5. 邀請測試人員下載您的應用程式
測試人員接受測試 Ad Hoc 版本的邀請時,系統會要求他們授權分享 UDID。如果對方同意,應用程式發布就會收集裝置資訊,並透過電子郵件通知您。在本節中,您將自己新增為測試人員,以便下載及測試發布的應用程式。
將自己新增為版本的測試人員
- 在 Fastfile 頂端的
firebase_app_id
下方,建立變數來保留測試人員,並加入您自己的電子郵件地址,以及其他要測試的選用電子郵件地址。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- 套用 Ruby 的 Array#join 方法,將
app_testers
陣列轉換為以半形逗號分隔的字串,這是testers
參數預期的格式。然後將結果傳遞至firebase_app_distribution.
的testers
參數。
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
此時,您的 Fastfile 應如下所示:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
- 再次執行車道。
$ fastlane distribute
執行通道後,您新增的測試人員會收到 App Distribution 的邀請電子郵件,通知他們有新版本可供測試。在 Firebase 控制台中,您現在可以在應用程式發布版本下方看到新增的測試人員。
由於您已提供電子郵件地址,您會收到 Firebase 應用程式發布的電子郵件,邀請您測試應用程式。您現在是第一位測試人員!請繼續閱讀下節,瞭解如何在測試裝置上設定為測試人員。
註冊測試裝置
測試人員必須在測試裝置上登入 Google,才能存取受邀測試的應用程式版本。由於測試版本是 Ad Hoc 發行版本,您也必須安裝 Firebase 設定檔來註冊測試裝置。之後,您就可以透過新增到裝置主畫面的網頁剪輯片段,從 App Distribution 測試人員網頁應用程式存取可用的版本。
- 在 iOS 測試裝置上開啟 Firebase 應用程式發布服務傳送的電子郵件,然後輕觸「開始使用」連結。請務必在 Safari 中開啟連結。
- 您現在已進入 App Distribution 測試人員網頁應用程式。在顯示的頁面中,登入 Google 帳戶並輕觸「接受邀請」。
- 你現在可以查看受邀參與的發行內容。在其中一個版本下方輕觸「註冊裝置」。
- 系統出現提示時,請下載 Firebase 設定檔,然後在「設定」應用程式中安裝該設定檔。
安裝設定檔後,Firebase 就能執行下列操作:
- 收集裝置的專屬裝置 ID (UDID),註冊測試裝置。
Firebase 會傳送電子郵件給 Firebase 專案的所有擁有者和編輯者,內含測試裝置的 UDID。
- 將網頁剪輯片段安裝到測試裝置的主畫面。網頁剪報會開啟「應用程式發布」測試人員網頁應用程式,方便您安裝及存取所有測試應用程式。
在「應用程式發布」測試人員網頁應用程式中,測試裝置現在已註冊應用程式版本。
您已將測試裝置的 UDID 分享給 Firebase,現在可以繼續以開發人員身分作業。在應用程式發布資訊主頁的「測試人員」分頁中,測試人員資訊現在會顯示在應用程式版本下方,狀態為「已接受」:
在下一節中,您會將裝置 UDID 新增至應用程式的 Provisioning Profile,然後建構適用於測試裝置的應用程式版本。
匯出測試人員裝置的 UDID
開發人員會收到 Firebase 寄來的電子郵件,內含測試裝置的 UDID。您也可以直接從 Firebase 控制台匯出原始文字檔,一次收集多個新裝置的 UDID,輕鬆完成這項作業。
- 如要匯出所有 UDID,請開啟「測試人員和群組」分頁。
- 按一下「匯出 Apple UDID」。
檔案應包含測試裝置的 UDID。
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
您也可以使用 fastlane 從指令列匯出 UDID,我們會在下一節中執行這項操作。
6. 更新應用程式的佈建設定檔並重新建構
現在,請將測試裝置 UDID 新增至應用程式的佈建設定檔,重新建構適用於裝置的應用程式版本,然後發布新版本。
新增 UDID 匯出通道
- 在 Fastfile 頂端新增另一個變數,並將其設為測試人員裝置 UDID 的下載檔案路徑。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- 設定新通道,使用 App Distribution 外掛程式的 UDID 匯出動作下載測試人員 UDID,就像您在管理中心所做的一樣。
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- 執行下列通道來下載 UDID。
$ fastlane download_udids
- 列印下載的檔案,其中應包含測試裝置的 UDID。
$ cat tester_udids.txt
將裝置新增至 Apple 開發人員控制台
- 建立下列通道,將 UDID 新增至 Apple 開發人員控制台的裝置清單,然後使用 fastlane 的
register_devices
動作將其新增至佈建設定檔:
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- 然後執行車道:
$ fastlane add_new_devices
開發人員控制台的裝置清單隨即會顯示新裝置。
將裝置新增至佈建設定檔
- 在
build
管道的佈建設定檔步驟中新增force
引數,以便在每次建構時強制選取新裝置。
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
重新執行通道來建構及上傳
現在,您將更新 distribute
管道中的新管道,以便將裝置新增至佈建設定檔、重新建構應用程式,然後發布應用程式。
- 從
distribute
呼叫新車道:
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: "1:123456789:ios:abcd1234",
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
- 執行
distribute
管道:
$ fastlane distribute
此時,您的 Fastfile 應如下所示:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
從測試裝置下載發行版本
應用程式現在包含測試裝置 UDID,因此可以安裝到測試裝置上。
- 在測試裝置上,使用電子郵件中的連結或裝置主畫面上的圖示,返回 App Distribution 測試人員網頁應用程式。
前往 UDID 程式碼研究室應用程式時,您會看到版本已可供下載。
- 如果你使用實體裝置,請按下「下載」,然後安裝並執行應用程式!
7. 恭喜
您已設定應用程式發布和 fastlane,可自動執行預先發布測試程序。現在,如要邀請其他測試人員,或將他們的 UDID 新增至應用程式,只要執行 fastlane distribute
指令即可。
因此,您不必再個別向測試人員收集 UDID,也不必前往 Apple 開發人員主控台更新裝置清單或 Provisioning Profile。你甚至不必開啟 XCode!
這個工作流程設定簡單,可在持續整合環境中每小時或每天執行。
延伸閱讀
- 探索 Firebase 應用程式發布功能,包括 iOS 適用的應用程式內 SDK
- 進一步瞭解 fastlane
- 使用
match
管理團隊的程式碼簽署作業 - 將 fastlane 整合至 CI