打包上架入門:用 EAS Build / EAS Submit 把 App 送上架
這是「接下來可以學什麼」系列的第五篇,也是最後一篇。內容已對照 Expo 官方文件(docs.expo.dev)整理,說明目前 EAS Build 與 EAS Submit 的基本流程。
一、寫好的 App,要怎麼變成「真的能上架」的東西?
前面四篇學完,你已經能做出一個會動、有畫面、能抓資料的 App。但這個 App 目前只存在你的電腦跟 Expo Go 裡,還沒有變成一個可以安裝、可以上架到 App Store / Google Play 的真正應用程式。
中間還需要兩個步驟:
- 打包(Build):把你的程式碼,編譯成 iOS 能裝的檔案(
.ipa)、Android 能裝的檔案(.aab或.apk)。 - 送審(Submit):把打包好的檔案,上傳到 Apple App Store Connect 或 Google Play Console,排隊等審核上架。
這兩件事,Expo 官方提供的工具分別叫做 EAS Build 跟 EAS Submit,合稱 EAS(Expo Application Services)。
二、EAS Build:在雲端幫你打包,不用自己裝 Xcode / Android Studio
為什麼需要它?
正常情況下,要打包出 iOS 的安裝檔,必須要有一台 Mac,並且安裝 Xcode;打包 Android,則需要安裝 Android Studio 跟一整套設定。對新手來說,這套環境設定常常比寫程式碼本身更累人。
EAS Build 解決的就是這個問題:你把程式碼丟到雲端,Expo 的伺服器幫你打包,打包完成後給你一個檔案下載連結。這意味著,就算你只有一台 Windows 電腦,也能打包出 iOS 的安裝檔。
基本使用步驟
步驟 1:安裝 EAS CLI(指令工具)
npm install -g eas-cli
步驟 2:登入你的 Expo 帳號
eas login
(如果還沒有 Expo 帳號,需要先去官網免費註冊一個。)
步驟 3:初次設定專案的打包設定
eas build:configure
執行後,會在你的專案根目錄產生一個 eas.json 設定檔,裡面預設會有三組「打包設定檔(Build Profile)」:
{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal"
},
"production": {}
}
}
這三組設定檔分別對應:
development:開發階段用,方便你在自己手機上安裝除錯版本。preview:給團隊內部測試用的版本(例如給同事、QA 先試用)。production:真正要送到 App Store / Google Play 上架的正式版本。
步驟 4:開始打包
eas build --platform all --profile production
--platform:可以指定android、ios,或all(兩個平台都打包)。--profile:指定要用哪一組設定檔(對應上面eas.json裡的名稱)。
下指令後,專案會被上傳到 EAS 的雲端伺服器排隊打包,過程中 CLI 會顯示進度,打包完成後會給你下載連結,也可以到 Expo 官方網站的後台頁面查看打包紀錄跟下載檔案。
小提醒:iOS 打包需要有 Apple Developer 帳號(需付費年費),Android 上架到 Google Play 則需要 Google Play 開發人員帳號(一次性費用)。這兩個帳號是 Apple / Google 官方要求的,跟 Expo 沒有關係,是上架任何 App 都必須具備的條件。
三、EAS Submit:把打包好的檔案,自動送到商店後台
打包完成只是完成一半,接下來要把檔案送到 App Store Connect(iOS)或 Google Play Console(Android)。EAS Submit 可以幫你把這個上傳的動作自動化,不用自己手動一個個上傳。
基本指令
eas submit --platform ios --profile production --latest
eas submit --platform android --profile production --latest
--latest:直接使用最近一次打包完成的版本。- 你也可以另外指定
--id加上特定的打包編號,送出某一個特定版本。
送出去之後,會發生什麼事?
iOS 這邊: 送出後,檔案會出現在 App Store Connect 的 TestFlight。要注意的是,送到 TestFlight 不代表自動上架,你還需要自己登入 App Store Connect,補齊 App 的介紹文字、截圖、隱私權問卷等資料,選定要送審的版本,正式送出「App 審核(App Review)」申請,通過審核後才會真正出現在 App Store 給一般使用者下載。
Android 這邊:
送出後,檔案會被放到你指定的「軌道(Track)」,常見的軌道有 internal(內部測試)、alpha、beta、production(正式版)。如果指定的是 production,等 Google 審核通過,就會直接對所有使用者開放下載。
小提醒:如果是你的 Google Play 帳號第一次要上架某個 App,Google 官方規定第一次必須手動上傳一次,之後才能透過 EAS Submit 這種自動化方式持續上傳更新版本。
四、一個完整流程,串起來看
把整個流程從寫程式到上架排成一張時間軸:
- 開發階段:用
npx expo start,搭配 Expo Go 或開發版(development build)邊寫邊測。 - 內部測試階段:用
eas build --profile preview,打包出一個可以分享給團隊內部、QA 測試的版本。 - 正式打包:確認沒問題後,用
eas build --profile production打包出正式版本。 - 送審上架:用
eas submit --profile production,把正式版本送到 App Store Connect / Google Play Console。 - 等待審核:iOS 通常需要人工審核(時間長短不一定);Android 審核流程相對較快,但仍需要等待 Google 系統審核完成。
- 上架成功:使用者就能在 App Store / Google Play 搜尋到你的 App 並下載。
五、加碼認識:EAS Update(之後可以發布「不需要重新審核」的更新)
學完打包上架後,你可能會遇到一個情境:App 上架後,發現一個小 Bug,想趕快修正,但重新打包、重新送審又要等審核,沒辦法馬上修好。
這時候可以認識另一個工具:EAS Update。它可以讓你把純 JavaScript 程式碼的修正,直接透過「線上更新(OTA, Over-The-Air)」推送給使用者,使用者不需要重新下載安裝整個 App,幾分鐘內就能拿到修正後的版本,不需要重新跑一次 App Store / Google Play 的審核流程。
這個工具比較進階,目前你只需要知道「有這個東西存在、是用來解決什麼問題的」即可,不用急著馬上學會,等你真正上架第一個 App 之後,再回來深入研究會更有感覺。
六、新手常見問題
Q:一定要花錢嗎? 打包本身(EAS Build)在免費額度內可以使用,但有打包數量、排隊速度等限制,用量大的話需要升級付費方案。另外,iOS 上架需要 Apple Developer 帳號的年費,Android 上架需要 Google Play 開發人員帳號的一次性費用,這兩項是 Apple / Google 官方收的費用,跟 Expo 本身的費用是分開的兩件事。
Q:沒有 Mac,可以打包出 iOS 的 App 嗎? 可以。這正是 EAS Build 最大的價值之一,iOS 打包是在 Expo 的雲端 macOS 伺服器上完成的,你自己不需要擁有 Mac。
Q:development、preview、production 三組設定檔,新手一定都要用到嗎?
不一定要全部都用,但建議至少分清楚「自己開發測試用」跟「真正要上架的正式版」這兩種情境,避免不小心把還在測試、沒打磨好的版本送去審核上架。
七、小結(也是整個系列的總結)
走到這一篇,代表你已經把從學 React 基礎、用 Expo Router 做導航、認識常用元件、串接 API,一路到打包上架,整個 React Native + Expo 開發的完整流程都過了一輪:
- React 基礎:State、Props、Hooks,理解資料變化如何驅動畫面更新。
- Expo Router:用資料夾結構做出多頁面導航。
- 常用元件:
View、Text、Image、FlatList、Pressable,畫面的基本積木。 - 串接 API:用
fetch把真實資料抓回來顯示,並處理載入中與錯誤狀態。 - 打包上架:用 EAS Build 打包、EAS Submit 送審,把 App 真正交到使用者手上。
接下來最好的學習方式,就是真正動手做一個屬於自己的小專案,把這五篇的內容全部串起來實作一次。例如做一個簡單的「待辦清單 App」或「天氣查詢 App」,從畫面、導航、串 API 到實際打包出一個能在自己手機上安裝的版本,會比單純看文章學到更多。祝你開發順利!