在現代移動開發中,Fastlane 已經是 iOS 自動化的代名詞:打包、簽名、發佈、通知……幾乎所有重複動作都能被腳本化。
然而在真實團隊中,下面這件事情依舊普遍存在:

Fastlane 只能在 macOS 上運行,最後的“上傳 IPA”步驟仍然被綁定在 Mac 上。

對於跨平台項目(如 uni-app、Flutter、RN、H5 容器),團隊成員大部分在 Windows 或 Linux 環境。構建、打包都可以在 CI 機器上完成,但上傳到 App Store(尤其是 TestFlight)仍是流程中最難被徹底“去 Mac 化”的環節。

我們就在這樣的場景下嘗試了一種新的組合方式:

Fastlane 負責構建流程自動化,開心上架(Appuploader)負責跨平台 IPA 上傳。

結果非常理想:
團隊實現了在 Windows / Linux / Mac 任意系統下觸發 iOS 自動發佈,徹底擺脱了 Transporter 對 macOS 的依賴。


一、為什麼要把 Fastlane 與開心上架結合?

Fastlane 本身非常強大,但 iOS 上傳階段依舊依賴:

  • deliver
  • transporter(底層調用)
  • macOS 環境
  • Apple 的 Java 工具鏈

這帶來了幾個現實問題:

1. Linux CI 無法上傳 IPA

團隊的構建節點普遍是 Linux,構建完成後依然需要:

  • 人工上傳
  • 或遠程調用一台 Mac
  • 才能進入 TestFlight/發佈審核

這讓自動化只能做一半。


2. Windows 用户完全無法參與上傳流程

測試、運營、項目經理無法在自己的電腦上傳構建,只能“等 iOS 負責人”,極大拖慢進度。


3. Transporter 出現問題時,Fastlane 也會一起失敗

尤其是:

  • 登錄失敗
  • 上傳掛起
  • 版本兼容問題

導致流水線時不時被打斷。


我們需要的其實是:

跨平台(Win/Linux/Mac)
可腳本化
可自動化
不依賴 macOS
穩定可複用

這正是開心上架(Appuploader)命令行版本的能力範圍。


二、開心上架(Appuploader)在整個自動化鏈中的作用

為了讓 Fastlane 可以在任何平台持續運行,我們將上傳階段替換為開心上架的 CLI 工具。

功能如下:


1. 跨平台 IPA 上傳(Windows / Linux / macOS)

開心上架 CLI 工具支持:

  • 免 Mac 上傳
  • 免 Transporter
  • 支持新舊上傳通道(-c 1 or -c 2
  • 使用 Apple 專用密碼
  • 穩定、無設備指紋限制

上傳命令示例:

appuploader_cli -u team@icloud.com -p xxx-xxx-xxx-xxx -c 2 -f build.ipa

結合 Fastlane 時只需要在 Lane 中調用此命令即可。

圖形化界面:

iOS中使用Fastlane實現自動化打包和發佈_IOS_#運維


2. 跨平台證書管理(創建 p12 / 描述文件)

Fastlane 在處理簽名時也依賴證書。
團隊不想每次到 Mac 鑰匙串導出證書,所以:

  • 使用開心上架生成證書
  • 下載 p12
  • 下載描述文件(Provisioning Profile)
  • 在 GitLab/Jenkins/Linux 服務器中直接導入

Windows、Linux 構建節點均可使用相同證書。

這讓整個流水線一致性更高。

iOS中使用Fastlane實現自動化打包和發佈_IOS_#自動化_02


3. 批量處理 App Store 信息(截圖、描述、關鍵詞)

雖然 Fastlane 的 deliver 也能批處理後台資料,但它依賴 Mac 環境。
部分團隊選擇:

  • 用 Fastlane 控制構建
  • 用開心上架批量上傳截圖與文案

這樣可以避免因 macOS 環境差異導致的腳本失敗。


4. 網頁端工具作為人工補充

團隊成員可隨時:

  • 上傳 IPA
  • 替換構建
  • 填寫資料
  • 查看狀態

這讓自動化與人工流程互相補充。


三、完整的 Fastlane + 開心上架 自動化上架方案示例

團隊實際使用流程如下:


① Fastlane 自動構建 IPA

lane :build do
  gym(scheme: "AppName",
      export_method: "app-store",
      output_directory: "./build")
end

② 上傳階段調用開心上架命令行

lane :upload do
  sh "appuploader_cli -u #{ENV['APPLE_ID']} -p #{ENV['APP_SPECIFIC_PW']} -c 2 -f ./build/AppName.ipa"
end

③ 合併為完整的發佈 Lane

lane :release do
  build
  upload
end

此時:

  • Windows 可執行
  • Linux CI 可執行
  • Mac 也可執行

整個流程終於真正意義上“脱 Mac 化”。


四、自動化後的收益:不是提效,而是 workflow 被徹底解放

經過一段時間運行,我們得到了幾項明顯收益:


1. Windows 團隊第一次能獨立完成 TestFlight 發佈

不必借 Mac
不必開遠程桌面
不必等待 iOS 負責人


2. Linux CI 可以全自動完成構建與上傳

過去:
“Fastlane 自動構建 → 手動上傳”

現在:
“Fastlane 自動構建 → 自動調用開心上架 CLI → 上傳完畢”

完全無人值守。


3. Transporter 波動不再影響流水線

上傳穩定度顯著提升。


4. iOS 發佈變成團隊協作,而不是少數人才具備的能力

這一點對跨平台項目意義尤其大。


Fastlane 解決構建自動化,開心上架解決跨平台執行

我們發現:真正強大的不是單一工具,而是多工具組合上架

在這套組合中:

  • Fastlane 負責流程:構建、簽名、版本、通知
  • 開心上架(Appuploader) 負責跨平台執行:上傳 IPA、管理證書、批量處理 App Store 內容

兩個工具互補,最終形成一條完整、穩定且真正“去 Mac 化”的 iOS 發佈鏈路。