跳转到内容
supastack
浏览文档

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh/docs/mobile/publishing.md (or send Accept: text/markdown).

发布到应用商店

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

询问本指南
打开方式

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

首先使用移动构建创建并测试本机开发构建。商店提交将编译后的应用程序及其列表发送给 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 中打开您的应用,完成列表和所需的调查问卷,添加工作审核者登录说明,然后提交以供审核。上传内部草稿并不属于公开发布。如果审核拒绝,请打开拒绝中的确切政策链接并在重新提交之前更正该问题。

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 外壳。

常见问题

14 个问题

supastack 是什么?

supastack 是用于构建 AI 驱动 SaaS 产品的模块化基础。它把通用基础设施整合在一起,让你专注于产品专属的功能。

它支持 Web 和移动端吗?

支持。supastack 包含 Next.js 与 Expo 应用,作为 Web 与移动端体验的起点。

包含哪些认证方式?

Better Auth 覆盖邮箱/密码、OTP 与社交登录。个人工作区随账户一起开通,产品记录从第一天起就有边界。

AI 是如何支持的?

supastack 包含可配置的多供应商 AI、用量追踪、预算,以及加密的自带密钥(BYOK)支持。

订阅如何处理?

对于基于该套件构建的产品,Stripe 计费、订阅与权限构成付费访问的基础。供应商密钥仅存于服务端。

我的产品专属代码放在哪里?

产品专属功能保留在独立的代码库中,产品通过配置接入 supastack 的基础模块。

supastack 如何定价?

套件为一次性购买、终身更新:单框架 249 美元(限时优惠价,较常规价 349 美元优惠 100 美元),或全框架(Next.js、iOS、Android)499 美元(限时优惠价,较常规价 599 美元优惠 100 美元),每个额外开发者席位 75 美元。套件本身没有订阅。本站结账后通过邮件发送许可证密钥,仓库访问通过 GitHub 邀请授予。

工作区如何界定我的数据?

用户记录按 workspaceId 划定边界。身份、权限、AI 用量、计费事件与审计条目都留在个人工作区边界内。

后台任务如何工作?

Trigger.dev 是明确的任务运行时。JobRunner 契约只承诺 enqueue、status 与 cancel——工作流语义保持 Trigger.dev 专有且显式。

邮件与营销触达有何不同?

事务性邮件覆盖产品工作流,如任务完成通知。冷触达与营销活动属于产品自身的范畴,不在本套件的邮件模块内。

移动端购买如何运作?

移动端已支持 RevenueCat 原生购买和恢复购买,访问权限由服务端验证。发布前需配置商店账户并完成设备测试。Web 计费保持独立。

AI 供应商密钥存放在哪里?

自带密钥凭证经过加密且仅存于服务端。密钥在日志中被脱敏;用量与预算在工作区级别保持可见。

结账支持哪些付款方式?

Stripe 托管结账接受银行卡,在 Stripe 账户启用后还可提供支付宝与微信支付——方便中国买家。钱包授权为异步确认,付款完成后许可证页面会立即更新。

我能申请退款吗?

获得代码仓库访问权限后,supastack 将永久归你所有,因此无法退款。但请放心,你将获得包含终身更新的完整源代码,可为你自己或客户构建并发布无限数量的产品。你只需注意不能转卖代码,也不能将仓库作为启动模板二次分发。

CN
主题