> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 構建和裝置驗證

區分 Expo 匯出成功與可以釋出的原生構建。

## 安裝與配置

在執行任何步驟之前，請閱讀[開始之前](https://supastack.dev/zh-tw/docs/web/before-you-start.md) 和[終端基礎知識](https://supastack.dev/zh-tw/docs/web/terminal-basics.md)。這些說明假設您在 VS Code 中開啟了完整的 supastack monorepo；它的根 package.json 標記儲存庫根。在 pnpm 命令中，工作區包是應用程式或共享程式碼資料夾；在產品中，工作空間是團隊的資料容器和安全邊界。 corepack pnpm --filter ... 從 monorepo 選擇一個包，同時從其根執行命令。如果您僅開啟同步的移動或桌面資料夾，則它不包含 Web 後端、Docker 設定或根指令碼：從此 monorepo 或可訪問的託管伺服器執行後端，並使用平臺資料夾自己的指令碼。環境變數是儲存在本地 .env 檔案或託管儀錶板中的命名設定；更改後重新啟動相關應用程式，並將伺服器機密保留在 NEXT_PUBLIC_ 和 EXPO_PUBLIC_ 值之外。

1. 在 VS Code 中開啟 apps/mobile/eas.json 和 apps/mobile/app.json 以檢視開發、預覽和生產設定。

2. 使用 corepack pnpm --filter @supastack/mobile exec expo install expo-dev-client 從儲存庫根新增本機開發客戶端。執行 corepack pnpm --filter @supastack/mobile typecheck，然後執行 ​​corepack pnpm --filter @supastack/mobile build 以進行本地 JavaScript 匯出。

3. 對於本機測試，請登入您的 Expo 帳戶，使用 cd apps/mobile 更改終端資料夾，然後執行 npx eas-cli@latest build --platform android --profiledevelopment。使用ios從任何作業系統請求EAS雲iOS構建；需要裝有 Xcode 的 Mac 才能執行 iOS 模擬器或本地編譯。預期：匯出驗證 JavaScript 包，並且 EAS 生成可安裝的本機開發應用程式。為什麼Expo Go無法新增原生庫，請參見[Expo的開發構建指南](https://docs.expo.dev/develop/development-builds/faq/)。

移動工作空間構建呼叫其匯出指令碼。這將驗證已配置目標的捆綁；商店簽名、分發配置和物理裝置驗收仍然是單獨的工作。

```
corepack pnpm --filter @supastack/mobile typecheck
corepack pnpm --filter @supastack/mobile test
corepack pnpm --filter @supastack/mobile build
```


## 要複製的命令

按照註釋檢視命令在哪個資料夾中執行。如果標記了兩個終端，請開啟兩個終端視窗，並在使用第二個命令時保持第一個命令執行。

```
# From the monorepo root, install the native development client once:
corepack pnpm --filter @supastack/mobile exec expo install expo-dev-client
corepack pnpm --filter @supastack/mobile typecheck
corepack pnpm --filter @supastack/mobile build

# EAS needs to run where apps/mobile/eas.json is located:
cd apps/mobile
npx eas-cli@latest build --platform android --profile development
```


## 實現流程

修改移動端使用的共享包之後，執行對應的合約測試。並在目標裝置上檢查安全區域、鍵盤行為、文字縮放和減少動態效果的設定。

將本地購買保留在現有的 RevenueCat 邊界之後。成功的捆綁不得將 Stripe Checkout 引入移動介面來替代經過驗證的本機購買整合。

使用 iOS 或 Android 上的 EAS 開發構建來根據配置的沙箱產品驗證 `react-native-purchases`。 Expo Go 和工作區匯出指令碼不驗證商店交易。


## 驗證與排障

如果 EAS 版本顯示 expo-dev-client 丟失，請重複其安裝命令並確認 apps/mobile/package.json 現在列出它。從 apps/mobile 執行 EAS，以便找到 eas.json。如果 EAS 報告缺少專案或簽名設定，請檢查您的 Expo 帳戶和專案設定。 Expo Go 和成功匯出仍然不測試 StoreKit 或播放計費；使用帶有沙箱產品的 EAS 開發版本。雲 iOS 構建可以在 Windows 或 Linux 上啟動；只有本地 iOS 模擬器/構建工作需要帶有 Xcode 的 Mac。

記錄驗收時使用的裝置、構建、API 環境和登入方式。驗證深連結返回、會話恢復、權益拒絕和退出登入。將匯出成功與商店、裝置驗收結果分開記錄。

當匯出通過並且目標是釋出時，請按照提交到應用程式商店 - 附帶的 eas.json 配置檔案和 build:/submit: 指令碼將應用程式帶到 Google Play 和 App Store。


如果你想繼續完成設定，可以閱讀《[釋出到應用商店](https://supastack.dev/zh-tw/docs/mobile/publishing.md)》。


## 下一篇

[釋出到應用商店](https://supastack.dev/zh-tw/docs/mobile/publishing.md)
