Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Розробка для Android

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

Процес підписування для Android і Google Play

Android вимагає, щоб усі APK були підписані цифровим підписом із використанням сертифіката перед установленням або оновленням на пристрої. Якщо ви використовуєте Android App Bundles, потрібно підписати лише пакет застосунку перед завантаженням у Play Console, а про решту подбає Play App Signing. Однак ви також можете вручну підписати застосунок для завантаження в Google Play, інші магазини застосунків або для розповсюдження поза магазинами.

Коли ви створюєте пакет застосунку Android у редакторі Defold або за допомогою засобу командного рядка, можна вказати сховище ключів (keystore), що містить ваш сертифікат і ключ, та пароль до нього. Їх буде використано для підписування застосунку. Якщо цього не зробити, Defold створить налагоджувальне сховище ключів і використає його для підписування пакета застосунку.

Ніколи не завантажуйте застосунок у Google Play, якщо його підписано за допомогою налагоджувального сховища ключів. Завжди використовуйте окреме сховище ключів, яке ви створили самостійно.

Створення сховища ключів

Defold використовує сховище ключів для підписування застосунків Android. Докладнішу інформацію наведено в цьому дописі на форумі.

Сховище ключів можна створити за допомогою Android Studio або в терміналі чи командному рядку:

keytool -genkey -v -noprompt -dname "CN=John Smith, OU=Area 51, O=US Air Force, L=Unknown, ST=Nevada, C=US" -keystore mykeystore.keystore -storepass 5Up3r_53cR3t -alias myAlias -keyalg RSA -validity 9125

Ця команда створить файл сховища ключів із назвою mykeystore.keystore, що міститиме ключ і сертифікат. Доступ до ключа й сертифіката буде захищено паролем 5Up3r_53cR3t. Ключ і сертифікат будуть дійсними протягом 25 років (9125 днів). Створені ключ і сертифікат матимуть псевдонім myAlias.

Обов’язково зберігайте сховище ключів і відповідний пароль у безпечному місці. Якщо ви самостійно підписуєте й завантажуєте застосунки в Google Play та втратите сховище ключів або пароль до нього, ви не зможете оновити застосунок у Google Play. Щоб уникнути цього, можна скористатися Google Play App Signing і доручити Google підписувати ваші застосунки.

Створення пакета застосунку Android

У редакторі можна легко створити самостійний пакет застосунку для вашої гри. Перед пакуванням можна вказати піктограми застосунку, задати код версії тощо у файлі налаштувань проєкту game.project.

Щоб створити пакет, виберіть у меню Project ▸ Bundle... ▸ Android Application....

Якщо ви хочете, щоб редактор автоматично створював випадкові налагоджувальні сертифікати, залиште поля Keystore і Keystore password порожніми:

Підписування пакета Android

Якщо ви хочете підписати пакет за допомогою певного сховища ключів, укажіть Keystore і Keystore password. Файл Keystore повинен мати розширення .keystore, а пароль має зберігатися в текстовому файлі з розширенням .txt. Також можна вказати Key password, якщо ключ у сховищі має інший пароль, ніж саме сховище:

Підписування пакета Android

Defold підтримує створення файлів APK і AAB. Виберіть APK або AAB у розкривному списку Bundle Format.

Після налаштування пакета застосунку натисніть Create Bundle. Після цього вам буде запропоновано вказати місце на комп’ютері, де буде створено пакет.

Файл пакета застосунку Android

Варіанти збірки

Під час пакування гри потрібно вибрати, який тип рушія ви хочете використовувати. Є три основні варіанти:

  • Debug
  • Release
  • Headless

Ці різновиди також називають Build variants

Якщо вибрати Project ▸ Build, ви завжди отримаєте налагоджувальну версію.

Debug

Цей тип виконуваної програми зазвичай використовують під час розробки гри, оскільки він містить кілька корисних функцій налагодження:

  • Профайлер — збирає показники продуктивності та використання ресурсів. Дізнайтеся, як ним користуватися, у посібнику з профілювання.
  • Ведення журналу — коли його ввімкнено, рушій записує системну інформацію, попередження та помилки. Рушій також виводить повідомлення функції Lua print() і нативних розширень, які використовують dmLogInfo(), dmLogError() тощо. Дізнайтеся, як читати ці журнали, у посібнику з журналів гри та системи.
  • Гаряче перезавантаження — потужна функція, що дає розробнику змогу перезавантажувати ресурси під час роботи гри. Дізнайтеся, як нею користуватися, у посібнику з гарячого перезавантаження.
  • Сервіси рушія — до налагоджувальної версії гри можна під’єднатися через різні відкриті порти TCP та сервіси й взаємодіяти з нею. До цих сервісів належать згадані вище гаряче перезавантаження, віддалений доступ до журналу й профайлер, а також інші сервіси для віддаленої взаємодії з рушієм. Докладніше про сервіси рушія читайте в документації для розробників.

Release

У цьому варіанті функції налагодження вимкнено. Його слід вибирати, коли гра готова до випуску в магазині застосунків або до поширення серед гравців іншим способом. Випускати гру з увімкненими функціями налагодження не рекомендовано з кількох причин:

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

Headless

Ця виконувана програма працює без графіки та звуку. Тож ви можете запускати тести модулів або димові тести гри на сервері CI чи навіть використовувати її як ігровий сервер у хмарі.

Установлення пакета застосунку Android

Установлення APK

Файл .apk можна скопіювати на пристрій за допомогою засобу adb або завантажити в Google Play через консоль розробника Google Play.

Засіб командного рядка adb — це проста у використанні й універсальна програма для взаємодії з пристроями Android. Ви можете завантажити й установити adb у складі Android SDK Platform-Tools для Mac, Linux або Windows.

Завантажте Android SDK Platform-Tools за адресою: https://developer.android.com/studio/releases/platform-tools. Засіб adb міститься в /platform-tools/. Також можна встановити пакети для вашої платформи через відповідний менеджер пакетів.

В Ubuntu Linux:

$ sudo apt-get install android-tools-adb

У Fedora 18/19:

$ sudo yum install android-tools

У macOS (Homebrew)

$ brew cask install android-platform-tools

Щоб перевірити, чи працює adb, під’єднайте пристрій Android до комп’ютера через USB і виконайте таку команду:

$ adb devices
List of devices attached
31002535c90ef000    device

Якщо пристрій не відображається, перевірте, чи ввімкнено на ньому USB debugging. Відкрийте Settings пристрою й знайдіть Developer options (або Development).

Увімкнення налагодження через USB

$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
  pkg: /data/local/tmp/my_app.apk
Success

Установлення APK за допомогою редактора

Ви можете встановити й запустити файл .apk за допомогою прапорців «Install on connected device» і «Launch installed app» у діалоговому вікні Bundle редактора:

Установлення та запуск APK

Для роботи цієї функції потрібно встановити ADB й увімкнути USB debugging на під’єднаному пристрої. Якщо редактор не може визначити місце встановлення засобу командного рядка ADB, його потрібно вказати в Preferences.

Установлення AAB

Файл .aab можна завантажити в Google Play через консоль розробника Google Play. Також можна створити файл .apk із файлу .aab для локального встановлення за допомогою Android bundletool.

Дозволи

Для роботи всіх функцій рушію Defold потрібна низка дозволів. Дозволи визначено в AndroidManifest.xml, указаному у файлі налаштувань проєкту game.project. Докладніше про дозволи Android можна прочитати в офіційній документації. Стандартний маніфест запитує такі дозволи:

android.permission.INTERNET і android.permission.ACCESS_NETWORK_STATE (рівень захисту: normal)

Дають застосункам змогу відкривати мережеві сокети й отримувати інформацію про мережі. Ці дозволи потрібні для доступу до інтернету. (Офіційна документація Android) і (Офіційна документація Android).

android.permission.WAKE_LOCK (рівень захисту: normal)

Дає змогу використовувати PowerManager WakeLocks, щоб запобігати переходу процесора в режим сну або затемненню екрана. Цей дозвіл потрібний, щоб тимчасово запобігати переходу пристрою в режим сну під час отримання push-сповіщення. (Офіційна документація Android)

Використання AndroidX

AndroidX — це значне вдосконалення початкової бібліотеки Android Support Library, яка більше не підтримується. Пакети AndroidX повністю замінюють Support Library, забезпечуючи ті самі можливості та пропонуючи нові бібліотеки. Більшість розширень Android на порталі ресурсів підтримують AndroidX. Якщо ви не хочете використовувати AndroidX, ви можете явно вимкнути його на користь старої Android Support Library, установивши прапорець Use Android Support Lib у маніфесті застосунку.

Поширені запитання

П: Чи можна приховати панелі навігації та стану в Android?

В: Так, увімкніть налаштування immersive_mode у розділі Android файлу game.project. Це дасть вашому застосунку змогу зайняти весь екран і перехоплювати всі події дотику на екрані.

П: Чому під час установлення гри Defold на пристрій з’являється помилка “Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]”?

В: Android виявляє спробу встановити застосунок із новим сертифікатом. Під час пакування налагоджувальних збірок кожну збірку підписують тимчасовим сертифікатом. Видаліть старий застосунок перед установленням нової версії:

$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
      pkg: /data/local/tmp/Defold examples.apk
Success

П: Чому під час збирання з певними розширеннями виникають помилки через конфлікт властивостей в AndroidManifest.xml?

В: Це може статися, коли два або більше розширень надають фрагменти маніфесту Android з однаковим тегом властивості, але різними значеннями. Наприклад, таке траплялося з Firebase та AdMob. Помилка збирання має приблизно такий вигляд:

SEVERE: /tmp/job4531953598647135356/upload/AndroidManifest.xml:32:13-58
Error: Attribute property#android.adservices.AD_SERVICES_CONFIG@resource
value=(@xml/ga_ad_services_config) from AndroidManifest.xml:32:13-58 is also
present at AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at
AndroidManifest.xml to override. 

Докладніше про проблему та спосіб її обходу можна прочитати в повідомленні про проблему Defold #9453 і повідомленні про проблему Google #327696048.