hz-store-submit
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseStore Submission Skill
商店提交技能
Guide the end-to-end process of submitting a Meta Quest application to the Meta Horizon Store. This skill covers build validation, store-readiness checks, store asset preparation, upload, and submission tracking.
指导将Meta Quest应用提交至Meta Horizon Store的全流程。本技能涵盖构建验证、商店就绪检查、商店资产准备、上传以及提交跟踪。
When to Use This Skill
何时使用本技能
Use this skill when you need to:
- Prepare a Quest app build for store submission
- Validate that an APK meets the Horizon Store's publishing requirements before uploading
- Prepare and validate store listing assets (icons, screenshots, videos, descriptions)
- Walk through the submission workflow on the developer dashboard
- Track a submission through the review process
- Troubleshoot submission rejections
Run the VRC (Virtual Reality Check) validation inline (see the VRC checklist below) for thorough compliance testing before proceeding to submission.
当你需要以下操作时使用本技能:
- 为商店提交准备Quest应用构建包
- 上传前验证APK是否符合Horizon Store的发布要求
- 准备并验证商店列表资产(图标、截图、视频、描述)
- 逐步完成开发者控制台的提交流程
- 在审核过程中跟踪提交状态
- 排查提交被拒问题
在提交前运行VRC(Virtual Reality Check,虚拟现实检查)内联验证(见下方VRC检查清单),以完成全面合规测试。
Submission Workflow Overview
提交流程概览
The full submission process follows this order:
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. 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 feedbackStep 1: Build Validation
步骤1:构建验证
Before uploading, validate the APK meets basic packaging requirements.
上传前,验证APK是否满足基本打包要求。
APK Signing
APK签名
The release APK must be signed with an Android keystore. Debug-signed APKs will be rejected.
bash
undefined发布版APK必须使用Android密钥库签名。调试签名的APK将被拒绝。
bash
undefinedVerify the APK is signed (not debug-signed)
Verify the APK is signed (not debug-signed)
metavr adb shell "pm dump <package> | grep -i signature"
The signing key must remain consistent across updates. Changing the signing key requires a new app entry.metavr adb shell "pm dump <package> | grep -i signature"
签名密钥在所有更新中必须保持一致。更换签名密钥需要创建新的应用条目。Manifest Checks
清单检查
bash
undefinedbash
undefinedInstall the APK on a connected device to test
Install the APK on a connected device to test
metavr app install path/to/release.apk
metavr app install path/to/release.apk
Verify it launches correctly
Verify it launches correctly
metavr app launch <package>
metavr app launch <package>
Check the manifest for required fields
Check the manifest for required fields
metavr adb shell "dumpsys package <package> | head -50"
Required manifest elements:
- `android:targetSdkVersion` >= 32
- `android:minSdkVersion` >= 29
- Target architecture: ARM64 only (no x86 or ARM32)
- Application must declare the `com.oculus.intent.category.VR` intent category
- Version code must be higher than any previously uploaded buildmetavr adb shell "dumpsys package <package> | head -50"
必填清单元素:
- `android:targetSdkVersion` >= 32
- `android:minSdkVersion` >= 29
- 目标架构:仅支持ARM64(不支持x86或ARM32)
- 应用必须声明`com.oculus.intent.category.VR`意图类别
- 版本号必须高于之前上传的任何构建包Performance Baseline
性能基准
Run the app on a Quest device and verify:
- Maintains 72 Hz minimum frame rate (90 Hz recommended for Quest 3)
- No thermal throttling warnings within the first 5 minutes of normal use
- Load time under 15 seconds from launch to interactive content
bash
undefined在Quest设备上运行应用并验证:
- 维持最低72 Hz帧率(Quest 3建议90 Hz)
- 正常使用前5分钟内无热节流警告
- 从启动到可交互内容的加载时间不超过15秒
bash
undefinedMonitor frame rate
Monitor frame rate
metavr adb logcat --tag VrApi | grep FPS
metavr adb logcat --tag VrApi | grep FPS
Check thermal state
Check thermal state
metavr device battery
metavr device battery
Watch for thermal warnings
Watch for thermal warnings
metavr adb logcat --tag ThermalService --level W
undefinedmetavr adb logcat --tag ThermalService --level W
undefinedStep 2: Store Readiness Checks
步骤2:商店就绪检查
Run through the VRC checklist below for a detailed walkthrough. Key VRC categories:
- Packaging — Release-signed APK (APK Signature Scheme v2; v1-only is rejected), (2D panel apps: 34+),
targetSdkVersion >= 32, ARM64-only, a version code strictly higher than any previously uploaded build, and theminSdkVersion >= 29intent category declared in the launch activity.com.oculus.intent.category.VR - Functional — No crashes or ANRs in any core flow (first-run setup, permission dialogs, rapid scene transitions, low-battery/thermal). Keep long network, IO, and asset work off the main thread.
- Performance — Sustained 72 Hz on Quest 2 / 90 Hz on Quest 3, no thermal throttling within 5 minutes, interactive within 15 seconds of launch, and no memory leaks over an extended session.
- Security / Permissions — Declare only permissions the app actually uses; disallowed permissions cause automatic rejection before manual review. Remove telephony/SMS/contacts (,
CALL_PHONE,SEND_SMS), precise location (READ_CONTACTS), and unjustifiedACCESS_FINE_LOCATION; guard optional hardware withREAD_EXTERNAL_STORAGEand drop the matchinghasSystemFeature()when unused. Audit the merged manifest (including third-party libraries) with<uses-permission>. Paid apps must verify entitlement within 10 seconds of launch (no internet required) or they are auto-rejected. See the prohibited and review-required permission lists ataapt dump permissions <app>.apkanddevelopers.meta.com/horizon/resources/permissions-prohibited/..../permissions-review-required/ - Asset — Store images meet the dimension and content specs in Step 3, screenshots are real on-device captures (not editor views or mockups), text stays inside the inner 80% safe area of hero art, and the comfort rating matches the actual locomotion (Comfortable = stationary/teleport, Moderate = slow smooth locomotion with comfort options, Intense = fast movement).
Common store rejection reasons:
| Rejection Reason | Fix |
|---|---|
| Crash during review | Fix the crash. Run |
| Frame rate below threshold | Optimize rendering. Profile with Perfetto or OVR Metrics Tool. |
| Missing store assets | Ensure all required images are uploaded at correct dimensions. |
| Disallowed permissions | Remove permissions not needed by the app (e.g., |
| Text in unsafe zone of hero art | Keep text within the inner 80% safe area of hero images. |
| App Not Responding (ANR) | Move long network, IO, or asset work off the main thread. Reproduce with |
| Comfort rating mismatch | Set the comfort rating to match actual locomotion (Comfortable / Moderate / Intense). |
| Paid app entitlement check missing | Verify entitlement within 10 seconds of launch (no internet required) before unlocking content. |
运行下方的VRC检查清单以获取详细指南。VRC核心类别:
- 打包 — 发布签名APK(需采用APK Signature Scheme v2;仅v1签名会被拒绝),(2D面板应用需≥34),
targetSdkVersion >= 32,仅支持ARM64,版本号严格高于之前上传的任何构建包,启动活动中声明minSdkVersion >= 29意图类别。com.oculus.intent.category.VR - 功能 — 核心流程(首次运行设置、权限弹窗、快速场景切换、低电量/过热场景)无崩溃或ANR(应用无响应)问题。将长时间的网络、IO和资产处理操作移出主线程。
- 性能 — Quest 2维持72 Hz帧率/Quest 3维持90 Hz帧率,5分钟内无热节流,启动后15秒内可交互,长时间会话无内存泄漏。
- 安全/权限 — 仅声明应用实际使用的权限;禁用权限会导致自动拒绝,无需人工审核。移除电话/短信/联系人权限(、
CALL_PHONE、SEND_SMS)、精确定位权限(READ_CONTACTS)以及无正当理由的ACCESS_FINE_LOCATION权限;使用READ_EXTERNAL_STORAGE判断可选硬件是否存在,未使用时移除对应的hasSystemFeature()标签。使用<uses-permission>审核合并后的清单(包括第三方库)。付费应用必须在启动后10秒内验证授权(无需联网),否则会被自动拒绝。请查看aapt dump permissions <app>.apk和developers.meta.com/horizon/resources/permissions-prohibited/中的禁用权限和需审核权限列表。.../permissions-review-required/ - 资产 — 商店图片符合步骤3中的尺寸和内容规范,截图为实际设备拍摄(非编辑器视图或模型图),文本位于宣传图内部80%安全区域内,舒适度评级与实际移动方式匹配(舒适=静止/传送,中等=带舒适选项的慢速平滑移动,强烈=快速移动)。
常见商店拒绝原因:
| 拒绝原因 | 修复方案 |
|---|---|
| 审核期间崩溃 | 修复崩溃问题。运行 |
| 帧率低于阈值 | 优化渲染效果。使用Perfetto或OVR Metrics Tool进行性能分析。 |
| 缺少商店资产 | 确保上传所有必填图片且尺寸正确。 |
| 使用禁用权限 | 移除应用不需要的权限(如 |
| 宣传图文本位于不安全区域 | 将文本保持在宣传图内部80%安全区域内。 |
| 应用无响应(ANR) | 将长时间的网络、IO或资产处理操作移出主线程。使用 |
| 舒适度评级不匹配 | 根据实际移动方式设置舒适度评级(舒适/中等/强烈)。 |
| 付费应用缺少授权检查 | 在解锁内容前,于启动后10秒内验证授权(无需联网)。 |
Step 3: Asset Preparation
步骤3:资产准备
The Meta Horizon Store requires specific assets for the store listing.
Meta Horizon Store对商店列表资产有特定要求。
Required Images
必填图片
| Asset | Dimensions | Format | Notes |
|---|---|---|---|
| App icon | 1024 x 1024 px | PNG or JPEG | Square, no rounded corners (system applies them) |
| Hero art (landscape) | 2560 x 1440 px | PNG or JPEG | Main store listing image. Keep text in inner 80% safe area. |
| Screenshots | 2560 x 1440 px | PNG or JPEG | Minimum 3 screenshots. Captured from the app, not mockups. |
| Small landscape (optional) | 1280 x 720 px | PNG or JPEG | Used in some store placements |
| 资产 | 尺寸 | 格式 | 说明 |
|---|---|---|---|
| 应用图标 | 1024 x 1024 px | PNG或JPEG | 方形,无需圆角(系统会自动添加) |
| 宣传图(横版) | 2560 x 1440 px | PNG或JPEG | 商店列表主图。文本需位于内部80%安全区域内。 |
| 截图 | 2560 x 1440 px | PNG或JPEG | 至少3张截图。需从应用内拍摄,非模型图。 |
| 小尺寸横版图(可选) | 1280 x 720 px | PNG或JPEG | 用于部分商店展示位置 |
Required Metadata
必填元数据
- App name: 30 characters max
- Short description: 150 characters max. Appears in store browse views.
- Long description: 4000 characters max. Supports basic formatting.
- Category: Choose from available store categories (Games, Entertainment, Productivity, etc.)
- Content rating: Complete the IARC questionnaire for age rating
- Privacy policy URL: Required for all apps
- Support URL or email: Required
- 应用名称:最多30个字符
- 简短描述:最多150个字符。显示在商店浏览视图中。
- 详细描述:最多4000个字符。支持基础格式。
- 类别:从商店可用类别中选择(游戏、娱乐、生产力等)
- 内容评级:完成IARC问卷调查获取年龄评级
- 隐私政策URL:所有应用必填
- 支持URL或邮箱:必填
Optional but Recommended
可选但推荐
- Trailer video: 30-60 seconds, 1920 x 1080 or 2560 x 1440, MP4/MOV
- Localized descriptions: For each target language/region
- 预告片视频:30-60秒,分辨率1920 x 1080或2560 x 1440,格式为MP4/MOV
- 本地化描述:针对每个目标语言/地区提供
Step 4: Dashboard Setup
步骤4:控制台设置
- Navigate to the Developer Dashboard and sign in
- Click Create New App (or select existing app)
- Fill in all required metadata fields
- Set pricing (free or paid with MSRP)
- Complete the IARC content rating questionnaire
- Configure release channels if using staged rollout
- 访问开发者控制台并登录
- 点击创建新应用(或选择现有应用)
- 填写所有必填元数据字段
- 设置定价(免费或带建议零售价的付费)
- 完成IARC内容评级问卷调查
- 若使用分阶段发布,配置发布渠道
Step 5: Upload
步骤5:上传
Upload the signed release APK through the developer dashboard or via CLI:
bash
undefined通过开发者控制台或CLI上传签名后的发布版APK:
bash
undefinedThe dashboard upload is preferred for first submissions.
首次提交建议使用控制台上传。
For subsequent builds, you can use the ovr-platform-util CLI:
后续构建包可使用ovr-platform-util CLI:
ovr-platform-util upload-quest-build --app-id <APP_ID>
--app-secret <APP_SECRET>
--apk path/to/release.apk
--channel STORE
--app-secret <APP_SECRET>
--apk path/to/release.apk
--channel STORE
After upload, verify the build appears in the dashboard with the correct version code and architecture.ovr-platform-util upload-quest-build --app-id <APP_ID>
--app-secret <APP_SECRET>
--apk path/to/release.apk
--channel STORE
--app-secret <APP_SECRET>
--apk path/to/release.apk
--channel STORE
上传后,验证构建包是否显示在控制台中,且版本号和架构正确。Step 6: Submit for Review
步骤6:提交审核
- In the Developer Dashboard, navigate to your app's Submission tab
- Verify all sections show green checkmarks
- Address any errors or warnings displayed at the top of the page
- Click Submit for Review
Plan for a review period of approximately 1-2 weeks. Submit at least 2 weeks before your target launch date.
- 在开发者控制台中,导航至应用的提交标签页
- 确认所有部分显示绿色对勾
- 处理页面顶部显示的任何错误或警告
- 点击提交审核
审核周期约为1-2周。请在目标发布日期至少2周前提交。
Step 7: Tracking
步骤7:跟踪状态
After submission:
- Monitor the app's status in the Developer Dashboard
- Respond promptly to any reviewer feedback or questions
- If rejected, read the rejection reasons carefully, fix each issue, and resubmit
Post-approval:
- Choose to release immediately or schedule a release date
- Monitor crash reports and user feedback after launch
- Plan a post-launch update for any issues discovered by early users
提交后:
- 在开发者控制台中监控应用状态
- 及时回复审核人员的反馈或问题
- 若被拒绝,请仔细阅读拒绝原因,修复所有问题后重新提交
审核通过后:
- 选择立即发布或安排发布日期
- 发布后监控崩溃报告和用户反馈
- 针对早期用户发现的问题规划发布后更新
Gotchas
注意事项
- Version code must always increase -- You cannot upload a build with a version code equal to or lower than a previously uploaded build. Plan your versioning strategy before the first upload.
- Signing key is permanent -- Once you upload a build with a specific signing key, all future builds must use the same key. Losing the keystore means you cannot update the app — you must create a new app entry.
- Screenshot requirements are strict -- Screenshots must be captured from the actual app, not from marketing mockups or engine editor views. Reviewers compare screenshots to the actual app experience.
- Review timeline varies -- While typical review takes 1-2 weeks, holidays, resubmissions, and high volume can extend this. Do not promise a launch date without buffer time.
- Managed vs. self-service releases -- If Meta manages your release, you cannot set your own release date from the dashboard. Coordinate with your account manager.
- 2D apps have different requirements -- If submitting a 2D Android app (not immersive VR), the store-readiness requirements are a subset. Do not assume all immersive-VR checks apply to 2D apps.
- Asset safe zones -- Hero art and screenshots have a "safe zone" for text. Text that bleeds into the outer 20% may be cropped on different store placements, causing a rejection.
- Privacy policy is mandatory -- Even free apps with no user accounts require a privacy policy URL. Submission will be blocked without one.
- 版本号必须持续递增——你无法上传版本号等于或低于之前上传版本的构建包。首次上传前规划好版本策略。
- 签名密钥永久有效——一旦使用特定签名密钥上传构建包,所有后续构建包必须使用同一密钥。丢失密钥库意味着无法更新应用,必须创建新的应用条目。
- 截图要求严格——截图必须从实际应用中拍摄,而非营销模型图或引擎编辑器视图。审核人员会将截图与实际应用体验进行对比。
- 审核时间可能变化——虽然典型审核时间为1-2周,但节假日、重新提交和高提交量可能延长审核时间。请勿在未预留缓冲时间的情况下承诺发布日期。
- 托管发布 vs. 自助发布——若由Meta托管发布,你无法在控制台中设置自己的发布日期。请与客户经理协调。
- 2D应用有不同要求——若提交的是2D Android应用(非沉浸式VR),商店就绪要求为子集。请勿假设所有沉浸式VR检查适用于2D应用。
- 资产安全区域——宣传图和截图有文本安全区域。文本超出外部20%区域可能在不同商店展示位置被裁剪,导致拒绝。
- 隐私政策为必填项——即使是无用户账户的免费应用也需要隐私政策URL。缺少隐私政策会阻止提交。
References
参考资料
- VRC Compliance -- run the detailed VRC validation checklist above before submission
- Submission Checklist -- Quick-reference pre-submission checklist
- Rejection Troubleshooting -- Common rejection reasons and fixes
- VRC合规性——提交前运行上方详细的VRC验证清单
- 提交检查清单——提交前快速参考检查清单
- 拒绝问题排查——常见拒绝原因及修复方案