Сборка и подписание билдов для 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
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Сборка и подписание билдов для 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 — зависит от причины.

Стоимость определяется после анализа текущего состояния проекта.