打包日操作清單

程式碼寫完後,
接下來在 Mac 上做什麼?

平時在本機使用 Windows 或 Linux 開發,到了封存時再將專案移至雲端 Mac。先確認連線與環境,再還原相依套件、匯入簽署檔案,最後依照使用的框架產生 iOS 建置產物。

我們協助處理連線、瀏覽器遠端桌面、環境初始化與計費問題;不代寫業務程式碼、不代管 Apple 開發者帳號,也不代替您取得發行資格或簽署授權。

已租好機器?從下方的移轉清單開始。登入控制台後,才能查看連線憑證與執行個體狀態。

移轉時分開處理

專案資料、工具鏈、CI,各自採用不同流程。

本機 Mac 或 Windows 上的專案都可以從版本控制庫還原。先移轉可重現的設定,再處理敏感檔案;不要直接複製舊機器的整個快取資料夾。

資料交接

取回專案與簽署檔案

從您有權存取的 Git 儲存庫複製專案。透過環境變數提供儲存庫網址,別把存取權杖寫入命令歷程或截圖。

  1. 同步分支與子模組,並保留框架和套件管理工具的鎖定檔。
  2. 需要簽署時,透過受控管道傳送憑證與描述檔;只匯入這次工作所需的檔案。
  3. 大型檔案優先使用已啟用且可連線的 SSH 傳輸;瀏覽器桌面是否支援檔案上傳,請以目前的連線介面為準。
git clone "$PROJECT_REPOSITORY" project
cd project
git submodule update --init --recursive
git rev-parse HEAD
git status --short

確認項目:兩端的提交版本一致。私有相依套件的存取權限、額外資源與簽署檔案不會隨程式碼自動還原。

環境交接

先確認版本,再補齊相依套件

先查看執行個體實際可用的工具。請勿假設每台機器預先安裝了相同版本;若 Xcode 與專案需求不符,請先處理相容性再編譯。

  1. 確認 Xcode 開發目錄、版本與可用 SDK,並確認命令列工具指向目標工具鏈。
  2. 使用 Homebrew 與 Brewfile 還原專案所需工具,再確認 CocoaPods、Flutter SDK 與 Node。
  3. Unity 專案請使用相符的編輯器版本,並在 Unity Hub 確認已安裝 iOS Build Support。
xcode-select -p
xcodebuild -version
xcodebuild -showsdks
brew --version
brew bundle check
pod --version
flutter --version
node --version

確認項目:只有在有 Brewfile 時,才於其所在資料夾執行檢查。若找不到命令,請先安裝相應工具;Unity 使用授權請自行確認。

自動化交接

桌面建置成功後,再接入 CI

先在互動工作階段完成一次建置,確認相依套件與簽署可正常運作,再註冊臨時 self-hosted runner,避免把環境問題混入流水線排查。

  1. 從您使用的 CI 平台取得支援 macOS 與相應晶片架構的 runner 套件及短期註冊權杖。
  2. 在解壓縮的資料夾中依平台說明完成註冊,並檢查任務標籤、工作目錄與執行使用者。
  3. 若專案已有 fastlane 設定,先列出 lane,再執行團隊約定的建置流程。
./config.sh --url "$CI_REPOSITORY_URL" --token "$RUNNER_TOKEN"
./run.sh

bundle check
bundle exec fastlane lanes

確認項目:runner 命令依 CI 平台而異,並非通用安裝程式。上述註冊方式僅適用於提供相應指令碼的平台;請在到期前註銷 runner 並撤銷權杖。

檔案傳輸不代表開啟遠端桌面後就能直接拖放。剪貼簿支援的內容類型、大小限制與檔案傳輸入口,取決於目前使用的連線實作。若需使用 SSH 或 VNC 用戶端,請先在控制台確認開放方式、憑證與連線位址;不要自行假設連接埠已開放。請勿將敏感資料放在公開下載網址,也不要附在支援單中。

依專案類型繼續

三種打包流程,目標不只是看到「編譯成功」。

先依專案鎖定的版本還原環境,再處理平台相依項目與簽署。以下命令請在對應的專案資料夾執行;產物能否發佈,還取決於簽署設定、發行權限與目標平台要求。

Flutter:從專案產生封存檔與 ipa

準備條件:Flutter SDK 符合專案需求;iOS 專案、外掛相依項目與 Xcode 工具鏈皆可用;簽署檔案與 App 識別碼相符。

flutter doctor -v
flutter pub get
flutter build ipa

先處理 flutter doctor -v 指出的 iOS 工具鏈問題。還原相依項目失敗時,請分辨是網路、版本限制或私有套件權限問題;不要反覆執行封存命令來掩蓋前置錯誤。

預期產物:成功後請確認 build/ios/archive 中的封存檔,以及 build/ios/ipa 中的匯出檔案。實際目錄與匯出方式依使用的 Flutter 版本及建置輸出而定。

只有封存檔而沒有 ipa 時,請繼續檢查匯出與簽署錯誤。建置完成不會自動將安裝套件提交至 TestFlight。

React Native:使用正確的工作區進行封存

準備條件:Node、套件管理工具與專案鎖定檔版本相符;使用 CocoaPods 的專案已安裝 iOS 相依項目,且確認使用正確的 scheme。

node --version
bundle check
cd ios
bundle exec pod install
open .

若有 Gemfile,請使用專案指定的 Bundler 環境;未使用 Bundler 的專案則依團隊流程安裝相依項目。在 Xcode 中開啟產生的 .xcworkspace,不要誤開缺少 Pods 相依項目的專案檔。

預期產物:選擇目標 scheme 與適用的裝置封存目標,透過 Product → Archive 產生 .xcarchive,再於 Organizer 依發行方式匯出或上傳。

模擬器執行成功,不代表裝置封存也能正常使用。若原生模組發生錯誤,請保留第一個編譯錯誤及相應的相依套件版本,別只截取最後一行失敗摘要。

Unity:匯出後還需完成 Xcode 流程

準備條件:Unity 編輯器版本符合專案需求,iOS 模組可用,第三方原生外掛與資源完整,並具備相應的編輯器使用授權。

xcodebuild -version
xcodebuild -list -project "$EXPORTED_XCODE_PROJECT"

在 Unity 中切換至 iOS 建置目標並匯出 Xcode 專案。使用 IL2CPP 的專案需要完成產生程式碼的原生編譯;匯出完成還不代表已取得可發佈的安裝套件。

預期產物:在 Xcode 中處理簽署、相依項目與目標設定後執行 Archive,產生封存檔,再依發行流程匯出 ipa 或上傳。若外掛產生了工作區,請開啟工作區繼續處理。

大型專案請先評估記憶體與中間檔案所需空間。Apple Silicon M4 Pro / 64GB RAM / 2TB SSD 是適合大型專案的目錄選項,但不保證固定編譯時間。

第一次建置成功後,也要一併保存可重現的設定。

記錄提交版本、Xcode 與框架版本、相依套件鎖定檔、使用的 scheme、建置命令及產物路徑。將可公開的設定納入版本控制,另行保管簽署私密金鑰與存取權杖。下次按日租用 Mac 時,先依這份記錄還原環境,不必從頭猜起。

先分辨是桌面慢,還是建置慢

畫面卡頓先檢查連線;封存停滯先查看記錄。

滑鼠移動延遲、畫面更新緩慢,通常應先檢查網路與顯示設定;若滑鼠操作正常但編譯長時間執行,則應查看建置記錄與資源使用量。更換遠端連線方式不會自動修正專案錯誤。

  1. 01

    確認節點與網路

    先確認訂單目前的節點是否接近您的連線位置,再比較有線或穩定的無線網路,並暫停佔用大量上傳頻寬的同步工作。若要改選節點,請先看下一節;不要將「更換節點」理解為原訂單可即時無損移轉。

    改善範圍:地理位置接近只能作為初步篩選依據。電信業者路由、跨區鏈路與本地網路壅塞仍會影響實際往返延遲。

  2. 02

    降低顯示負載

    在目前遠端連線介面提供的選項中,降低畫質、解析度或影格率,並關閉不必要的動態內容。每次只調整一個項目,並記錄調整前後的狀況。

    改善範圍:這有助於減輕畫面編碼與傳輸負載,但無法縮短網路的實際往返時間,也不會因此加快 CPU 編譯工作。

  3. 03

    比較 VNC 用戶端

    若控制台提供相應的連線資訊,可使用 VNC 用戶端比較同一個執行個體的操作體驗。瀏覽器連線適合直接使用桌面;用戶端則可作為排查不同連線實作的替代方式。

    改善範圍:用戶端可能提供不同的顯示與剪貼簿選項,但不會改變節點位置。檔案傳輸能力仍取決於雙方的實作,不保證所有情況都支援。

  4. 04

    保留錯誤現場

    連線失敗時,記下頁面提示、發生時間與時區;建置失敗時,保留第一個有意義的錯誤、執行命令與版本資訊。截圖前請遮蔽密碼、權杖、憑證細節與私人專案內容。

    改善範圍:截圖有助於定位問題,但無法取代可複製的錯誤文字。請勿只提交「很卡」或「打包失敗」,卻不提供重現步驟。

節點資訊僅供選擇方向參考,不代表您目前線路的實測結果。

以下列出全部 5 個節點。延遲區間適用於所列涵蓋區域,不代表從任何城市連往該節點都能達到相同延遲。

節點 → 涵蓋區域 → 參考往返延遲
節點涵蓋區域參考往返延遲
新加坡東南亞20~50ms
東京東亞30~60ms
首爾東北亞30~50ms
香港華南與東南亞20~40ms
美國東部北美東部與西歐25~35ms

以上為參考區間,實際狀況取決於您的連線網路。即時操作桌面時,優先考慮距離較近的節點;只執行建置、取回產物時,也要一併考量相依套件下載與檔案傳輸條件。

移轉前先確認訂單

更換節點前,先分開考量專案與租約。

節點是訂單設定的一部分。本頁不會將同一筆訂單跨節點切換視為預設功能,也不保證磁碟、連線位址或剩餘租期能自動移轉。是否可以調整、費用與資料如何處理,請先透過控制台支援單確認個別訂單。

先確認清楚,再操作原執行個體

提交訂單編號、目前節點、希望使用的節點與原因,並說明是否仍有建置工作正在執行。請等候確認訂單調整方式、可能產生的費用與操作步驟;未確認前,請勿刪除環境,也不要假設新節點會沿用舊執行個體的狀態。

若需另外租用一台機器,請先確認新訂單的規格、租期與即時供應狀態。舊訂單如何結束或續租,仍依該訂單與服務條款處理。

將新執行個體視為一台全新的 Mac

先推送尚未提交的程式碼並匯出建置產物,另外備份必要設定、憑證與描述檔。新執行個體需要重新確認工具版本、存取權限與簽署設定,不要假設舊磁碟內容已經移轉。

切換完成後,更新 CI 的連線設定、註銷舊 runner,並撤銷不再使用的權杖。到期後的資料處理方式以服務條款與控制台提示為準;不要把到期後復原資料當成備份方案。

讓第一張支援單內容清楚可重現

說清楚是哪台機器、哪個步驟發生問題。

登入控制台,從支援單入口建立新請求,並連結需要查核的訂單。控制台支援單適合處理執行個體、連線、初始化與帳單問題;若無法登入,請透過 support@testmini.com 聯絡我們。

提交前請備妥以下資訊

  • 訂單與節點:訂單編號、機型、目前節點,以及發生問題的執行個體。
  • 時間與環境:發生時間、時區、本機作業系統,以及瀏覽器或 VNC 用戶端版本。
  • 操作與結果:從哪個頁面或命令開始、預期會發生什麼,以及實際看到什麼。
  • 錯誤與佐證:錯誤文字、已遮蔽敏感資訊的截圖、相關記錄片段,以及問題是否可再次重現。
  • 已嘗試的方法:更換網路、調整畫質、重新連線等操作及其結果。

若涉及付款,請提供訂單編號、付款方式及控制台顯示的狀態;使用 USDT-TRC20 可提供交易雜湊值。若遇到銀行卡問題,請勿提供完整卡號、安全碼或驗證碼。

支援單內容可以依照這個順序撰寫

將以下資訊填入控制台支援單即可,不必上傳整個專案。

問題對象
訂單編號、節點、機型
發生時間
具體時間與使用的時區
重現步驟
操作順序、命令、錯誤文字
環境資訊
瀏覽器、Xcode、框架版本
排查結果
已嘗試的方法與結果變化

請勿附上登入密碼、私密金鑰、簽署憑證原件或 CI 註冊權杖。若支援團隊需要進一步診斷,請依支援單說明提供最少必要資訊。

透過支援單追蹤回覆進度;送出請求不代表問題已處理。

支援服務主要於亞太地區工作時間進行。我們不承諾在固定分鐘或小時內完成處理;收到支援單後的回覆與後續進度,請以控制台記錄為準。補充資訊請回覆同一張支援單,並保留仍可重現問題的環境。若機器即將到期,請先匯出重要檔案,再確認續租安排。

帳單查核僅涵蓋以美元結算的 USDT-TRC20,以及透過 Stripe 處理的 Visa / Mastercard / Amex;實際可用的付款閘道以後端回傳資訊為準。付款確認可能受到鏈上確認或發卡銀行處理時間影響,截圖本身不代表付款已確認。

繼續確認服務規則

除了技術步驟,也要確認租期與節點。

連線、建置與訂單屬於不同層面的問題。請先閱讀相應文件確認前提,再決定繼續排查、提交支援單或租用下一台機器。

排查問題

確認按日租用的規則、瀏覽器與 VNC 的差異、加購計費、簽署檔案及租期結束後的資料處理方式。

查看常見問題

選擇節點

依所在區域與工作方式查看全部 5 個節點。參考延遲可協助選擇方向,實際體驗仍取決於您的連線網路。

確認節點選擇

閱讀服務條款

開始長時間編譯前,請確認計費週期、續租、到期處理方式與使用範圍,並提前匯出無法取代的檔案。

閱讀服務條款

打包前確認環境,遇到問題時提供記錄。

已有訂單,請在控制台繼續處理;尚未租用機器,請先依專案需求選擇規格與節點。專案與產物請自行備份,機器與訂單問題則由支援單協助查核。