打包 EAS Build 與雙平台上架

當你在 Expo Go 裡玩得很開心,並且寫完所有的程式碼後,你要怎麼把這個 App 變成可以放上 App Store (Apple) 和 Google Play (Android) 的正式版本呢?

過去,這是一個足以讓初學者放棄的黑暗旅程。

  • 要編譯 iOS,你「必須」擁有一台 Mac 電腦,並且搞懂 Xcode 裡複雜的憑證 (Certificates) 與設定檔 (Provisioning Profiles)。
  • 要編譯 Android,你需要安裝龐大的 Android Studio 並設定 Gradle 金鑰。

現在,有了 EAS (Expo Application Services),一切都改變了! EAS 是 Expo 官方提供的雲端編譯服務。它會把你的程式碼送到他們的雲端 Mac 與 Linux 伺服器,自動幫你處理所有憑證問題,最後直接把打包好的 .ipa (iOS) 和 .aab (Android) 檔案還給你,甚至可以直接幫你上傳到商店送審!

1. 事前準備:註冊開發者帳號

上架前,這是你無可避免必須付出的「過路費」。

  • Apple Developer Program:每年約 $99 美金。申請過程可能需要身分驗證,約需 3-7 天。
  • Google Play Developer Console:一次性終身 $25 美金。

請確保你已經註冊好帳號,並且有權限登入後台。

2. 安裝與設定 EAS CLI

在終端機中全域安裝 EAS 的指令列工具:

npm install -g eas-cli

接著登入你的 Expo 帳號(如果沒有請去 expo.dev 免費註冊一個):

eas login

在專案目錄下初始化 EAS 設定檔:

eas build:configure

這個指令會在你的專案根目錄產生一個 eas.json 檔案。裡面定義了你打包的設定檔 (Profile),例如 development (測試機用), preview (給內部團隊測試用), production (要上架用的正式版)。

3. 設定 app.json (你的 App 身分證)

在打包之前,我們必須在專案根目錄的 app.json 中設定好 App 的對外資訊:

{
  "expo": {
    "name": "Vibe Tutor App",
    "slug": "vibe-tutor",
    "version": "1.0.0",
    "orientation": "portrait", // 鎖定直向
    "icon": "./assets/icon.png", // 1024x1024 高畫質圖示
    "splash": {
      "image": "./assets/splash.png", // 啟動畫面圖片
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "ios": {
      "bundleIdentifier": "com.yourcompany.vibetutor", // 全世界唯一的 ID (極重要)
      "buildNumber": "1.0.0"
    },
    "android": {
      "package": "com.yourcompany.vibetutor", // 全世界唯一的 ID (極重要)
      "versionCode": 1,
      "adaptiveIcon": {
        "foregroundImage": "./assets/adaptive-icon.png",
        "backgroundColor": "#ffffff"
      }
    }
  }
}

4. 開始雲端打包 (EAS Build)

魔法時刻到了!我們不需要開啟 Xcode 或 Android Studio。

打包 Android (.aab)

在終端機輸入:

eas build --platform android --profile production

EAS 會問你要不要讓它幫你產生 Keystore (簽署金鑰),選擇 Yes (讓 Expo 幫你託管,這是最安全的做法)。 接著,它會把專案上傳,並給你一個網址。你可以點進那個網址,看著雲端伺服器幫你編譯。大約 10 分鐘後,你就能下載到可以上傳 Google Play 的 .aab 檔案了!

打包 iOS (.ipa)

在終端機輸入:

eas build --platform ios --profile production

這時,EAS 會要求你輸入你的 Apple ID 與密碼。 別擔心,這是因為它要在背後偷偷連線到 Apple 開發者中心,幫你自動產生憑證 (Certificates) 並設定好。你只要一路按 Y (Yes) 答應讓它幫你代管憑證即可。

[!WARNING] iOS 實體機測試的痛點 Apple 非常嚴格。如果你打出來的是 .ipa 檔,你不能像 Android 一樣直接用傳輸線丟進手機安裝。 你必須先在開發者後台註冊你的 iPhone 的 UDID (裝置序號),然後打包一個 developmentpreview 的版本,才能在你的實體機上安裝測試。要給一般大眾安裝,唯有透過上架 App Store 一途。

5. 一鍵上架 (EAS Submit)

如果你連打開網頁上傳檔案都懶,Expo 還提供了一個神級指令:eas submit

當你 build 完之後,只要輸入:

# 自動把剛打包好的 Android 版上傳到 Google Play 後台
eas submit -p android

# 自動把剛打包好的 iOS 版上傳到 App Store Connect (TestFlight)
eas submit -p ios

上傳成功後,你就可以登入 Apple/Google 開發者後台,去填寫上架所需要的行銷資料、截圖、隱私權聲明了。

審核大魔王

送出審核後:

  • Google Play:大約 2-7 天。相對寬鬆。
  • App Store:大約 1-3 天。非常嚴格!如果你的 App 當機、畫面排版錯亂、或是要求權限卻沒有在 app.json 裡寫清楚理由,一定會被退回。如果被退回了,不要氣餒,仔細看 Apple 審核員的回覆,修正後再重傳一次即可。

🎉 恭喜你完成了一項壯舉! 從一個不懂 App 原生開發的網頁工程師,到現在能夠獨立將產品打包上架到雙平台商店。這就是跨平台技術與 Expo 賦予你的超能力。現在,開始去推廣你的第一個 App 吧!

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!