Збірка та підписання білдів для Meta Quest Store

Наша компанія з розробки відеоігор веде незалежні проекти, спільно з клієнтом створює ігри та надає додаткові операційні послуги. Досвід нашої команди дозволяє нам охопити всі ігрові платформи та розробити приголомшливий продукт, що відповідає баченню клієнта та перевагам гравців.

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

Відвідати персоналізований сайт
Показано 1 з 1Усі 242 послуг
Збірка та підписання білдів для Meta Quest Store
Простий
~2-3 дні
Часті запитання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    696
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    879
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    504
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    543

tags: [vr-ar]

Сборка та підписання білдів для Meta Quest Store

Сборка під Meta Quest — це не просто Build And Run з Unity з вибраним Android target. У Meta своя ланцюг вимог: підпис білду, entitlements, настройки манифесту, параметри manifest.json для Horizon Store, вимоги до target API level та купа нюансів, які з'ясовуються вже на етапі сабміту, а не раніше.

Де конкретно ломається ланцюг підписання

Найчастіша проблема — розбіжність keystore між debug та release білдами. Розробник тестував приложення місяцями з debug keystore, все працювало. При переході на release keystore з іншим SHA-1 перестають працювати entitlements, привязані до приложення у Horizon Developer Dashboard. Користувач встановлює приложення, відкриває — отримує помилку авторизації у Platform SDK, тому що OVRPlatform.Initialize() повертає INVALID_CREDENTIALS.

Другий клас проблем — AndroidManifest.xml. Meta вимагає набір специфичних permissions та intent-filter: com.oculus.permission.HAND_TRACKING, com.oculus.permission.EYE_TRACKING, com.oculus.intent.category.VR. Якщо приложення використовує passthrough, потрібно явно прописати com.oculus.permission.USE_SCENE та horizonos.permission.USE_ANCHOR_API для пространственних якорів. Пропустив один — функція молча не працює, без помилок у логах, тільки якщо включити verbose у adb logcat.

Окремо стоїть quest_categories у manifest.json пакету Horizon Store. Неправильна категорія або відсутній supported_input_devices — та приложення не пройде автоматичну перевірку. Meta перевіряє відповідність манифесту заявленим функціям приложення.

Процес сборки релізного білду

Працюємо через Oculus Developer Hub або напрямку через командну лінію з adb та apksigner з Android SDK Build Tools. Для Unity-проектів — Gradle wrapper, настройки у launcherTemplate.gradle та mainTemplate.gradle.

Ключові кроки для коректного release-білду:

Keystore генерується через keytool з параметрами -keyalg RSA -keysize 2048 -validity 10000. Зберігається окремо від репозиторію, SHA-1 та SHA-256 зберігаються у захищеному сховищі проекту. У Unity — Player Settings → Publishing Settings → Use Custom Keystore.

target-api-level на момент 2024–2025 має бути 32 або вище для нових сабмітів. Meta періодично підвищує мінімальний поріг, це потрібно перевіряти в актуальній документації Horizon OS.

Для перевірки підпису перед сабмітом: apksigner verify --verbose --print-certs app-release.apk. Убезпечитися, що ланцюг сертифікатів коректна та fingerprint збігається з зареєстрованим у Dashboard.

Тестування підписаного білду на пристрої — через adb install -r app-release.apk. Перед тестом видалити debug-версію повністю, інакше система може підхватити старі credentials.

Специфіка для різних каналів дистрибуції

Meta Quest Store припускає кілька каналів: App Lab (для ранніх тестерів без повного ревю), Horizon Store (публічна публікація з повним ревю), та Side Quest / sideloading для внутрішнього тестування.

Для App Lab та Horizon Store вимоги до підпису ідентичні — різниця тільки в процесі ревю. Для sideloading можна використовувати debug keystore, але тільки для внутрішніх тестів — це не релізний флоу.

Якщо у проекті використовується Passthrough API або Mixed Reality Utility Kit (MRUK), у manifest.json додається секція required_feature з PASSTHROUGH. Без цього приложення не запуститься на пристроях з відключеним passthrough.

Тип сборки Keystore Target API Перевірка entitlements
Debug / Dev Mode Debug keystore Будь-який Опціонально
App Lab Release keystore ≥ 32 Обов'язково
Horizon Store Release keystore ≥ 32 Обов'язково + ревю Meta

Як влаштований процес роботи

Отримуємо доступ до Horizon Developer Dashboard організації або працюємо через надане app ID. Аудит поточного маніфесту та Gradle-конфігурації. Настройка keystore-інфраструктури, якщо її немає. Сборка, підписання, тест на пристрої, підготовка пакету для сабміту.

Якщо проект вже був опублікований та вимагає update — перевіряємо сумісність версії keystore та versionCode (Meta не приймає пакет з versionCode ≤ попередньому).

Строки: настройка з нуля — 1–2 робочих дні. Якщо є готовий проект з існуючим маніфестом та потрібно тільки виправлення та сабміт — кілька годин. Ітерація при відклоненні Meta — залежить від причини.

Вартість визначається після аналізу поточного стану проекту.