Збірка та підписання білдів ігор для Google Play

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

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

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Збірка та підписання білдів ігор для Google Play
Середня
~1 робочий день
Часті питання

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

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

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

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

Підписання білдів ігор для Google Play

APK залит в Play Console, проходить ревю — і через дві години приходить відмова: «Your APK is not signed with the upload key». Або сборка прийнята, але через тиждень користувачі повідомляють, що при оновленні Android просить «видалити стару версію перед установкою» — тому що keystore змінився між релізами, а Play App Signing не був активований вчасно.

Android-сборка для Google Play менш церемоніальна, ніж iOS, але помилки в управлінні ключами підписи можуть обернутися втратою аккаунту або неможливістю оновити вже опубліковане додаток.

Keystore та Play App Signing — в чому різниця

До Play App Signing (обов'язково з серпня 2021 для нових додатків) розробник підписував APK своїм ключем — і цей же ключ бачив користувач. Втрата keystore дорівнює неможливості виводити оновлення назавжди.

З Play App Signing схема двохрівневана: upload key (в руках розробника) підписує APK при завантаженні в Play Console, Google його верифікує та переподписує фінальний APK своїм app signing key перед доставкою користувачам. Втрата upload key вирішуєма — Google дозволяє його змінити по запиту. Втрата app signing key — ні, але він зберігається у Google.

При першій публікації нового додатку Play App Signing включається автоматично. Для існуючих додатків — потрібна явна активація з завантаженням поточного ключа.

Сборка AAB замість APK

З 2021 року Google Play вимагає Android App Bundle (.aab) для нових додатків. Unity генерує AAB через BuildOptions з BuildAppBundle = true. AAB важить менше APK та дозволяє Play Console генерувати оптимізовані APK під конкретний пристрій (ABI split, texture compression split).

Важливий нюанс для Unity-ігор: при використанні IL2CPP та AAB потрібно перевірити, що Split Application Binary включений в Player Settings — інакше AAB може перевищити ліміт в 150 МБ при завантаженні. Додаткові ассети (Addressables, StreamingAssets) мають поставлятись через Play Asset Delivery (PAD), а не включатись безпосередньо в бандл.

Play Asset Delivery — обов'язкова тема для ігор з крупними ресурсами. Три режими доставки: install-time (разом з установкою, до 1 ГБ), fast-follow (відразу після установки), on-demand (по запиту під час гри). Інтеграція з Unity через Google.Play.AssetDelivery пакет — вимагає переробки системи завантаження ресурсів, якщо вона не проектувалась під PAD з самого початку.

Автоматизація через Fastlane

supply (Fastlane lane для Google Play) вміє завантажувати AAB в конкретний трек (internal, alpha, beta, production), управляти rollout percentage, оновлювати store listing.

Аутентифікація — через Service Account JSON з роллю «Release Manager» в Play Console. Це надійніше OAuth — токен не істекає та не вимагає інтерактивної авторизації на CI.

Приклад мінімального Fastfile:

  • gradle action для сборки AAB з потрібним build type
  • sign через jarsigner або zipalign + apksigner з keystore з змінних окруження
  • supply для завантаження в internal track

Keystore зберігається в зашифрованому вигляді в CI (GitHub Secrets, GitLab CI Variables, Vault). Ніколи не коммітимо .jks або .keystore файли в репозиторій — навіть в приватний.

Версіонування

versionCode в Android повинен монотонно зростати. У Unity — це PlayerSettings.Android.bundleVersionCode. Автоматично інкрементуємо через скрипт в pre-build hook або Fastlane increment_version_code. Для CI-сборок зручно використовувати номер білда пайплайна як вклад в versionCode: baseVersion * 1000 + buildNumber.

Терміни

Задача Термін
Разова сборка AAB та завантаження в internal track 0.5–1 день
Настройка Play App Signing + ключів для CI 1–2 дні
Повний пайплайн (GameCI + Fastlane supply + треки) 2–5 днів
Play Asset Delivery інтеграція 1–3 тижні

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