mcpField
H
hz-store-submit

hz-store-submit

github.com/meta-quest开发241215 次安装5 周前更新
代码仓库

关于 hz-store-submit

hz-store-submit 是指导 Meta VR 应用提交至 Meta Horizon Store 的技能,适用于准备发布的开发者。它覆盖 APK 与商店素材检查、上传、审核跟踪,并区分 CLI 上传和必须在开发者后台完成的提审步骤。

主要功能

  1. 01检查 APK 签名与打包要求
  2. 02执行商店就绪与 VRC 检查
  3. 03准备并校验商店素材
  4. 04通过 metavr CLI 上传构建
  5. 05跟踪审核状态并处理拒绝原因

适用场景

  1. 01提交前检查 VR 应用构建
  2. 02整理并验证商店图像与元数据
  3. 03上传版本并跟进审核反馈

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/meta-quest/agentic-tools --skill hz-store-submit

安装后在 Claude Code 中输入/hz-store-submit确认已加载。

附带文件references/rejection-troubleshooting.mdreferences/submission-checklist.md

详细介绍

商店提交技能

指导将 Meta VR 应用提交到 Meta Horizon Store 的完整流程。本技能涵盖构建验证、商店就绪情况检查、商店素材准备、上传和提交跟踪。

何时使用本技能

在以下情况下使用本技能:

  • 准备要提交到商店的 Meta VR 应用构建版本
  • 上传前验证 APK 是否符合 Horizon Store 的发布要求
  • 准备并验证商店列表素材(图标、屏幕截图、视频、描述)
  • 引导完成开发者控制面板中的提交工作流
  • 跟踪提交内容的审核进度
  • 排查提交遭拒的问题

提交前,请内联运行 VRC(Virtual Reality Check)验证(参见下方的 VRC 检查清单),以进行全面的合规性测试。

提交工作流概览

1. Build Validation     → Verify APK is correctly signed, targets ARM64, meets packaging requirements
2. Store Readiness      → Run through the readiness checks, fix any violations
3. Asset Preparation    → Prepare store listing images, videos, descriptions, metadata
4. Dashboard Setup      → Create app on developer.meta.com, configure pricing, age rating
5. Upload               → Upload the build to the platform
6. Submission           → Submit for review
7. Tracking             → Monitor review status, respond to feedback

步骤 1:构建验证

上传前,请验证 APK 是否符合基本打包要求。

APK 签名

发布版 APK 必须使用 Android 密钥库签名。调试签名的 APK 将被拒绝。

# Verify the APK is signed (not debug-signed)
metavr adb shell "pm dump <package> | grep -i signature"

更新时必须保持签名密钥一致。更改签名密钥需要创建新的应用条目。

清单检查
# Install the APK on a connected device to test
metavr app install path/to/release.apk

# Verify it launches correctly
metavr app launch <package>

# Check the manifest for required fields
metavr adb shell "dumpsys package <package> | head -50"

必需的清单元素:

  • android:targetSdkVersion >= 32
  • android:minSdkVersion >= 29
  • 目标架构:仅限 ARM64(不支持 x86 或 ARM32)
  • 应用必须声明 com.oculus.intent.category.VR intent 类别
  • 版本代码必须高于之前上传的所有构建版本
性能基线

在 Meta VR 设备上运行应用并验证:

  • 保持至少 72 Hz 的帧率(Quest 3 建议使用 90 Hz)
  • 正常使用的前 5 分钟内没有热降频警告
  • 从启动到内容可交互的加载时间少于 15 秒
# Monitor frame rate
metavr adb logcat --tag VrApi | grep FPS

# Check thermal state
metavr device battery

# Watch for thermal warnings
metavr adb logcat --tag ThermalService --level W

步骤 2:商店就绪检查

请按照以下 VRC 检查清单逐项检查,了解详细流程。VRC 的主要类别:

  • 打包 — 使用发布签名的 APK(APK Signature Scheme v2;仅 v1 会被拒绝),targetSdkVersion >= 32(2D 面板应用:34+)、minSdkVersion >= 29、仅支持 ARM64、版本代码必须严格高于此前上传的任何版本,并且在启动 Activity 中声明 com.oculus.intent.category.VR intent 类别。
  • 功能 — 任何核心流程(首次运行设置、权限对话框、快速场景切换、低电量/高温)都不得发生崩溃或 ANR。将耗时的网络、IO 和资源处理工作移出主线程。
  • 性能 — 在 Quest 2 上持续保持 72 Hz,在 Quest 3 和 Meta VR Glasses 上持续保持 90 Hz;5 分钟内不得发生热降频;启动后 15 秒内可交互;长时间运行期间不得出现内存泄漏。
  • 安全 / 权限 — 只声明应用实际使用的权限;不允许的权限会在人工审核前导致自动拒绝。移除电话/SMS/联系人权限(CALL_PHONE、SEND_SMS、READ_CONTACTS)、精确位置权限(ACCESS_FINE_LOCATION)以及无正当理由的 READ_EXTERNAL_STORAGE;使用 hasSystemFeature() 检查可选硬件,未使用时移除对应的 <uses-permission>。使用 aapt dump permissions <app>.apk 检查合并后的清单(包括第三方库)。付费应用必须在启动后 10 秒内验证权益(无需联网),否则会被自动拒绝。请参阅 developers.meta.com/horizon/resources/permissions-prohibited/ 和 .../permissions-review-required/ 中的禁止权限及需审核权限列表。
  • 资源 — 商店图片符合步骤 3中的尺寸和内容规范;截图为设备上的真实捕获画面(而非编辑器视图或模型图);英雄图中的文字位于中央 80% 安全区域内;舒适度评级与实际移动方式相符(舒适 = 静止/传送,中等 = 带舒适选项的慢速平滑移动,强烈 = 快速移动)。

常见的商店拒绝原因:

拒绝原因修复方法
审核期间崩溃修复崩溃问题。运行 metavr adb logcat --buffer crash 进行排查。
帧率低于阈值优化渲染。使用 Perfetto 或 OVR Metrics Tool 进行性能分析。
缺少商店资源确保已上传所有必需图片,且尺寸正确。
不允许的权限移除应用不需要的权限(例如 CALL_PHONE、SEND_SMS)。
英雄图中的文字位于不安全区域将文字限制在英雄图中央 80% 的安全区域内。
应用无响应(ANR)将耗时的网络、IO 或资源处理工作移出主线程。使用 metavr adb logcat --buffer crash 重现问题。
舒适度评级不符将舒适度评级设为与实际移动方式相符(舒适 / 中等 / 强烈)。
付费应用缺少权益检查在解锁内容前,于启动后 10 秒内验证权益(无需联网)。

步骤 3:资源准备

Meta Horizon Store 对商店商品页所需的资源有具体要求。

必需图片
资源尺寸格式备注
应用图标1024 x 1024 pxPNG 或 JPEG正方形,不要使用圆角(系统会自动添加)
英雄图(横向)2560 x 1440 pxPNG 或 JPEG商店商品页主图。文字应位于中央 80% 的安全区域内。
截图2560 x 1440 pxPNG 或 JPEG至少 3 张。必须从应用中捕获,不得使用模型图。
小尺寸横向图(可选)1280 x 720 pxPNG 或 JPEG用于部分商店展示位
必需的元数据
  • 应用名称:最多 30 个字符
  • 简短描述:最多 150 个字符。显示在商店浏览页面中。
  • 详细描述:最多 4000 个字符。支持基本格式。
  • 类别:从商店提供的类别中选择(游戏、娱乐、效率等)
  • 内容分级:填写 IARC 问卷以确定年龄分级
  • 隐私政策 URL:所有应用都必须提供
  • 支持 URL 或电子邮件:必需
可选但建议提供
  • 预告视频:30-60 秒,1920 x 1080 或 2560 x 1440,MP4/MOV
  • 本地化描述:为每种目标语言/地区提供

第 4 步:设置控制面板

  1. 前往 Developer Dashboard 并登录
  2. 点击 Create New App(或选择现有应用)
  3. 填写所有必需的元数据字段
  4. 设置价格(免费或按 MSRP 付费)
  5. 填写 IARC 内容分级问卷
  6. 如果要分阶段发布,请配置发布渠道

第 5 步:上传

通过 Developer Dashboard 或使用 metavr CLI 上传已签名的发布 APK。CLI 会将构建分发到发布渠道;它不会创建应用、填写商店页面、回答政策问卷,也不会提交应用以供审核。

# Find the app and inspect its release channels.
metavr store dist apps --org <ORGANIZATION_ID>
metavr store dist channels --app-id <APP_ID>

# Uploads are drafts unless --publish is supplied.
metavr store dist upload \
  --app-id <APP_ID> \
  --channel ALPHA \
  --apk path/to/release.apk \
  --notes "What changed in this build"

在验证构建时使用 ALPHA、BETA 或 RC。LIVE 对应商店发布渠道,但上传到该渠道仍不会提交商店页面以供审核。仅在打算立即将已上传的构建发布到所选渠道时,才使用 --publish。

组织 ID 和应用 ID 可在 Developer Dashboard 中获取。如果任何 metavr store dist 命令以非零状态退出或报告服务器或 GraphQL 错误(包括不明确的 Invalid parameter 错误),请勿继续重试 ID。请改为通过 Dashboard 上传。上传后,请确认构建显示的版本代码、签名和架构均正确。

第 6 步:提交审核

  1. 在 Developer Dashboard 中,前往应用的 Submission 标签页
  2. 确认所有部分都显示绿色勾号
  3. 处理页面顶部显示的所有错误或警告
  4. 点击 Submit for Review

此步骤只能在 Dashboard 中完成。不要告知开发者,CLI 上传成功就意味着已完成商店提交。

审核期预计约为 1-2 周。请至少在目标发布日期前 2 周提交。

第 7 步:跟踪进度

提交后:

  • 在 Developer Dashboard 中监控应用状态
  • 及时回复审核人员的反馈或问题
  • 如果被拒,请仔细阅读拒绝原因,修复每个问题后重新提交

获批后:

  • 选择立即发布或安排发布日期
  • 发布后监控崩溃报告和用户反馈
  • 为早期用户发现的任何问题规划后续更新

注意事项

  • 版本代码必须始终递增 —— 你不能上传版本代码等于或低于之前已上传版本的构建。请在首次上传前规划好版本管理策略。
  • 签名密钥是永久的 —— 使用特定签名密钥上传构建后,所有后续构建都必须使用同一密钥。丢失密钥库意味着你无法更新应用,必须创建新的应用条目。
  • 截图要求严格 —— 截图必须来自实际应用,不能使用营销效果图或引擎编辑器视图。审核人员会将截图与实际应用体验进行比较。
  • 审核时间各不相同 —— 虽然通常需要 1-2 周,但节假日、重新提交和审核量大都可能延长审核时间。请预留缓冲时间,不要承诺确切的上线日期。
  • 由 Meta 管理发布与自助发布 —— 如果由 Meta 管理发布,你就无法在控制面板中设置自己的发布日期。请与客户经理协调。
  • 2D 应用的要求有所不同 —— 如果提交的是 2D Android 应用(非沉浸式 VR),应用商店就绪要求仅为部分要求。不要假设所有沉浸式 VR 检查都适用于 2D 应用。
  • 素材安全区域 —— 主视觉图和截图中的文字设有“安全区域”。如果文字延伸到外围 20% 区域,在不同的商店版位中可能会被裁切,导致审核被拒。
  • 必须提供隐私政策 —— 即使是没有用户账户的免费应用,也需要提供隐私政策 URL。未提供隐私政策将无法提交。

参考资料

  • VRC 合规性 —— 提交前,请运行上文详细的 VRC 验证清单
  • 提交清单 —— 提交前检查清单,供快速参考
  • 拒绝原因排查 —— 常见拒绝原因及解决方法

评论

支持 Markdown