Автоматизация процессов
сборки и паблишинга Unity игр
на Google Play
Rustam Ganeyev
@rganeyev
Part 1:
Continuous integration
Step 1: Unity menu item
//Editor/Build.cs
[MenuItem("Custom/Build android")]
private static void BuildAndroid() {
Prebuild();
//scenes - scenes included to build
BuildPipeline.BuildPlayer(scenes, apkName,
BuildTarget.Android, BuildOptions.None);
}
Step 1.1: Unity Prebuild
void Prebuild() {
//Reset game settings to default
PlayerSettings.Android.keystoreName = "Assets/user.keystore";
PlayerSettings.Android.keyaliasName = "deploy";
PlayerSettings.Android.keystorePass = "password";
PlayerSettings.Android.keyaliasPass = "password";
PlayerSettings.bundleVersion = "1.01";
PlayerSettings.Android.bundleVersionCode = 101;
}
Step 2: Unity Command line
"C:Program Files (x86)UnityEditorUnity.exe"
-quit
-batchmode
-projectPath C:ProjectsUnityProject
-executeMethod Build.BuildAndroid
Continuous integration, b*tch!
● Jenkins
○ запуск с командной строки
○ плагин для Unity сборок
● TeamCity
○ запуск с командной строки
○ плагин для Unity сборок
● <Менее известное>
○ запуск с командной строки
Extra steps: multiple builds
● Разные билды для разных телефонов
● Типичный кейс: разные видеокарты,
разные сжатия
○ ETC
○ ATC
○ DXT
○ PVRTC
○ ETC2
● Google <multiple apks android>
static void BuildAndroid() {
Prebuild();
Build(AndroidBuildSubtarget.DXT);//ETC, ATC, PVRTC
}
static void Build(AndroidBuildSubtarget target) {
EditorUserBuildSettings.androidBuildSubtarget = target;
PlayerSettings.Android.bundleVersionCode = Generate
(target);
BuildPipeline.BuildPlayer(...);
}
static int GenerateVersionCode
● На устройство устанавливается поддерживаемый
apk с наибольшим version code
● Cхема:
● ETC > ATC > DXT > PVRTC > ETC2
0 1 2 3 4
Part 1: Google play publishing
● Руками через админку
○ Справа сверху Advanced mode для нескольких
apk
● Google Play Developer API
○ Python API
○ Java API
○ CURL
GPD API
● Заливать APK (много и сразу)
● Alpha, beta, staged rollout, or production
● Google Play Store listings
○ localized text
○ multi-device screenshots
Step 1: Initialize
● Создаем подписанную apk-пустышку
● Заливаем apk в Alpha в Google Play
● Даем названия, возрастную группу, бла-
бла
● Сохраняем в черновиках (drafts) - НЕ
публикуем
Step 2: Управление через GPD API
● Обновляем через GPD API
○ Заливаем описания - update_listings.py
■ поддерживает несколько языков, скриншоты
○ Заливаем билды - batch_upload.py
■ поддерживает несколько билдов
■ alpha, beta, rollout, production
Rustam Ganeyev
fb.com/rustam.ganeyev
twitter.com/rganeyev
rustam-kot.blogspot.com
Thx!
Questions?

Unity CI and GP Publishing

  • 1.
    Автоматизация процессов сборки ипаблишинга Unity игр на Google Play Rustam Ganeyev @rganeyev
  • 2.
  • 3.
    Step 1: Unitymenu item //Editor/Build.cs [MenuItem("Custom/Build android")] private static void BuildAndroid() { Prebuild(); //scenes - scenes included to build BuildPipeline.BuildPlayer(scenes, apkName, BuildTarget.Android, BuildOptions.None); }
  • 4.
    Step 1.1: UnityPrebuild void Prebuild() { //Reset game settings to default PlayerSettings.Android.keystoreName = "Assets/user.keystore"; PlayerSettings.Android.keyaliasName = "deploy"; PlayerSettings.Android.keystorePass = "password"; PlayerSettings.Android.keyaliasPass = "password"; PlayerSettings.bundleVersion = "1.01"; PlayerSettings.Android.bundleVersionCode = 101; }
  • 5.
    Step 2: UnityCommand line "C:Program Files (x86)UnityEditorUnity.exe" -quit -batchmode -projectPath C:ProjectsUnityProject -executeMethod Build.BuildAndroid
  • 6.
    Continuous integration, b*tch! ●Jenkins ○ запуск с командной строки ○ плагин для Unity сборок ● TeamCity ○ запуск с командной строки ○ плагин для Unity сборок ● <Менее известное> ○ запуск с командной строки
  • 7.
    Extra steps: multiplebuilds ● Разные билды для разных телефонов ● Типичный кейс: разные видеокарты, разные сжатия ○ ETC ○ ATC ○ DXT ○ PVRTC ○ ETC2 ● Google <multiple apks android>
  • 8.
    static void BuildAndroid(){ Prebuild(); Build(AndroidBuildSubtarget.DXT);//ETC, ATC, PVRTC } static void Build(AndroidBuildSubtarget target) { EditorUserBuildSettings.androidBuildSubtarget = target; PlayerSettings.Android.bundleVersionCode = Generate (target); BuildPipeline.BuildPlayer(...); }
  • 9.
    static int GenerateVersionCode ●На устройство устанавливается поддерживаемый apk с наибольшим version code ● Cхема: ● ETC > ATC > DXT > PVRTC > ETC2 0 1 2 3 4
  • 10.
    Part 1: Googleplay publishing ● Руками через админку ○ Справа сверху Advanced mode для нескольких apk ● Google Play Developer API ○ Python API ○ Java API ○ CURL
  • 11.
    GPD API ● ЗаливатьAPK (много и сразу) ● Alpha, beta, staged rollout, or production ● Google Play Store listings ○ localized text ○ multi-device screenshots
  • 12.
    Step 1: Initialize ●Создаем подписанную apk-пустышку ● Заливаем apk в Alpha в Google Play ● Даем названия, возрастную группу, бла- бла ● Сохраняем в черновиках (drafts) - НЕ публикуем
  • 13.
    Step 2: Управлениечерез GPD API ● Обновляем через GPD API ○ Заливаем описания - update_listings.py ■ поддерживает несколько языков, скриншоты ○ Заливаем билды - batch_upload.py ■ поддерживает несколько билдов ■ alpha, beta, rollout, production
  • 14.