> ## 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

# 发布到应用商店

区分可以运行的构建与用户能够安装的正式版本。

## 逐步准备您的第一个商店提交

首先使用移动构建创建并测试本机开发构建。商店提交将编译后的应用程序及其列表发送给 Google 或 Apple 进行审核；它与打开 Expo Go 预览不同。您需要自己的 Expo 和相关商店开发者帐户、经过测试的 HTTPS 后端、最终应用程序名称/图标、屏幕截图、支持联系人和公共隐私政策 URL。

在编辑器中打开apps/mobile/app.json，并在第一次上传之前设置自己产品的应用名称、slug、ios.bundleIdentifier和android.package。打开 apps/mobile/eas.json 并根据需要将 iOS 提交团队的应用程序标识符替换为您自己的应用程序标识符。提供的标识符是示例。阅读 Mobile builds 了解确切的字段，并要求您的编码代理在构建之前检查这两个文件。

如果未安装eas，请运行npm install --global eas-cli。从存储库根目录使用下面的登录命令，完成浏览器身份验证，然后在“构建”中选择一个平台的构建命令，然后提交。阅读构建的仪表板日志；在尝试提交之前等待成功的 .aab 或 .ipa。 EAS 提示项目链接和签名凭据；这些属于您的帐户，而不是套件卖家的帐户。

上传二进制文件后，在 Play Console 或 App Store Connect 中打开您的应用，完成列表和所需的调查问卷，添加工作审核者登录说明，然后提交以供审核。上传内部草稿并不属于公开发布。如果审核拒绝，请打开拒绝中的确切政策链接并在重新提交之前更正该问题。

[准备本机构建和标识符](https://supastack.dev/zh/docs/mobile/builds.md)

[Expo当前店铺提交说明](https://docs.expo.dev/submit/introduction/)

[Apple 当前的 App 审核指南](https://developer.apple.com/app-store/review/guidelines/)

[Google Play 发布说明](https://support.google.com/googleplay/android-developer/answer/9859455)

```
corepack pnpm --filter @supastack/mobile exec eas login
```


## 设置帐户一次

商店提交需要三个帐户：用于 EAS 构建和提交的免费 Expo 帐户、Google Play Console 开发者注册以及 iOS 的 Apple 开发者计划会员资格。在构建之前安装EAS CLI并运行eas login；两家商店的注册都可能需要几天的时间来验证，因此请尽早开始。

在首次上传之前重命名应用程序标识符 - android.package 和 ios.bundleIdentifier 在 apps/mobile/app.json. 中作为 com.supastack.app 发布。Google Play 在首次上传时锁定包名称，因此错误的标识符意味着新的应用程序条目而不是重命名。


## 让EAS管理签名

apps/mobile/eas.json 定义开发、预览和生产构建配置文件。生产配置文件允许 EAS 在其基础设施上生成并保存 Android 密钥库和 iOS 分发证书 - 稍后使用 eas credentials 检查它们，并将本地密钥库保留在存储库之外。

自动提交 Play 需要在 Play Console → 设置 → API 访问权限下链接具有发布权限的 Google Play 服务帐户 JSON 密钥。将其存储在 apps/mobile/secrets/play-store-service-account.json - eas.json 期望的路径和 git-ignored 目录。新应用的首次上传仍然在 Play 管理中心手动进行； eas submit 接替第二个版本。


## 构建，然后提交

构建在 EAS 基础设施上运行，因此二进制文件不需要安装 Android Studio 或 Xcode。生产配置文件会生成用于 Play 的商店就绪 .aab 和用于 App Store 的 .ipa，并具有远程管理的版本号。预览配置文件为物理设备 QA 生成内部分发 APK。

发布的提交配置文件将 Play 内部轨道作为草案版本作为目标 - 测试人员不会收到任何消息，除非您在审核通过后在 Play 管理中心内推广它。

```
corepack pnpm --filter @supastack/mobile build:android
corepack pnpm --filter @supastack/mobile submit:android

corepack pnpm --filter @supastack/mobile build:ios
corepack pnpm --filter @supastack/mobile submit:ios

# Internal-testing APK for a physical device:
corepack pnpm --filter @supastack/mobile build:android:preview
```


## 填写 Play 管理中心表格

对声明的内容和二进制文件一样进行审查：公共隐私政策 URL、数据安全表格、内容评级调查问卷、目标受众和类别。回答来自应用程序真实行为的数据安全 - 该套件收集帐户电子邮件进行身份验证，将会话令牌存储在平台安全存储中，并且仅与您配置的 API 对话；添加您的产品在顶部添加的任何内容。

对于需要登录的 iOS 应用程序，请向应用程序审核提供有效的演示帐户以及审核说明中的说明。在选择社交登录选项之前，请先查看 Apple 当前的登录服务规则及其例外情况；要求取决于应用程序的实际登录流程。官方指南位于上面的首次提交部分。


## 先RevenueCat后面的门购买

当您的应用程序提供移动购买时，请配置已发货的 RevenueCat 流程：设置 `MOBILE_PURCHASES_PROVIDER=revenuecat` 和 `EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=revenuecat`，然后提供匹配的公共 iOS 或 Android SDK 密钥。原生App支持购买和恢复；在任一之后，访问都会从服务器验证的工作区权利刷新。 Stripe Checkout 未在移动流程中使用。当购买停止或缺少所需配置时，请保持付费专区不可用。使用商店测试帐户在 EAS 开发版本中验证配置的商店产品、购买、恢复和权利刷新。查看当前的商店指南，了解适用于您的应用和区域的要求。


## 预提交清单

提交之前，请使用您自己的测试应用程序和商店帐户确认以下每一项。

- android.package 和 ios.bundleIdentifier 重命名为您拥有的标识符
- 构建环境中的 EXPO_PUBLIC_API_URL 指向生产 API
- 隐私政策托管在公共 URL 上并链接在商品详情中
- 数据安全表单与真实集合相匹配：身份验证电子邮件、API 流量、您的产品添加的任何内容
- App Store 审核说明中的工作模拟帐户凭据
- 付费墙隐藏，或由经过验证的 RevenueCat 权利支持
- 在物理设备上验证深层链接返回、会话恢复和注销
- 为每个商店准备的屏幕截图和列表资产


## 从拒绝中恢复

拒绝带有政策参考——修复所声明的原因，而不是猜测症状。数据安全不匹配通常意味着表单错误，而不是应用程序错误。需要登录的拒绝通常意味着评论笔记缺少模拟帐户。重新提交并附上明确指出修复程序的发行说明。

完整的演练（凭证命令、控制台操作顺序和拒绝手册）位于存储库中的 docs/mobile-store-submission.md 中。


## 安装与配置

原生应用发布需要 Apple 和/或 Google 开发者账户、应用标识、签名凭据和商店审核。production EAS 配置会自动递增商店构建号；submit.production 会将草稿提交到 Google Play 内部测试轨道。Bundle identifier 和应用 scheme 位于 apps/mobile/app.config.ts。

Web 部署和应用商店发布节奏不同；API 应继续兼容最旧的受支持版本，或通过服务器状态控制新功能。

```
corepack pnpm --filter @supastack/mobile build
eas build --profile production --platform ios
eas build --profile production --platform android
eas submit --profile production --platform ios
eas submit --profile production --platform android
```


## 实现流程

启用原生购买前，请先在 RevenueCat 配置项目、商店产品和权益。服务端 secret key 与 Webhook Authorization 值只能放在服务器环境中；iOS 和 Android SDK key 是公开构建变量。生产环境必须关闭沙盒访问。

将截图、说明、隐私答复和购买说明等商店资料纳入产品自己的发布材料。应用显示购买权限之前，RevenueCat 购买和恢复结果会先经过服务器当前 subscriber 状态验证。


## 验证与排障

在实体设备上测试最终提交的安装包：登录回调、会话恢复、购买与恢复、服务器权益刷新、工作区切换、深链接及离线行为。成功的本地 Expo 导出不是可提交商店的构建。

记录构建号、商店轨道、审核状态和目标 API 环境。审核被拒也是发布流程的一部分；根据要求修正文案或功能标记，不要盲目猜测代码问题。

下一个界面：Desktop 栏会带你了解 Tauri 外壳。


## 下一篇

[桌面端概览](https://supastack.dev/zh/docs/desktop.md)
