打包 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 (裝置序號),然後打包一個development或preview的版本,才能在你的實體機上安裝測試。要給一般大眾安裝,唯有透過上架 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 吧!