title: Бандлинг (сборка пакета) приложения
При разработке приложения вы должны выработать привычку как можно чаще тестировать игру на целевых платформах. Это необходимо для того, чтобы выявлять проблемы с производительностью на ранних этапах процесса разработки, когда эти проблемы гораздо легче исправить. Также рекомендуется тестировать на всех целевых платформах, чтобы найти расхождения в таких вещах, как шейдеры. При разработке на мобильных устройствах у вас есть возможность использовать приложение для мобильной разработки для отправки содержимого в приложение вместо того, чтобы выполнять полную пересборку и цикл удаления/установки.
Вы можете создать бандл приложения для всех платформ, которые поддерживает Defold, из самого редактора Defold без каких-либо внешних инструментов. Вы также можете сделать бандл из командной строки с помощью наших инструментов командной строки. Бандлинг приложения требует сетевое соединение, если ваш проект содержит одно или несколько нативных расширений.
Создать бандл можно из меню Project и опции Bundle:
Выбор любого из пунктов меню вызовет диалог Бандла для этой конкретной платформы.
При сборке вашей игры есть возможность создать отчет о сборке. Это очень полезно, чтобы получить представление о размере всех ассетов, входящих в бандл. Просто установите флажок Generate build report при сборке игры.
Чтобы узнать больше об отчетах о сборке, обратитесь к Руководству по профилированию.
Создание бандла для Android (файл .apk) описано в Руководстве по Android.
Создание бандла для iOS (файл .ipa) описано в Руководстве по iOS.
Создание бандла для macOS (файл .app) описано в Руководстве по macOS.
Создание бандла для Linux не требует специальной настройки и дополнительной конфигурации для конкретной платформы в [файле настроек проекта]project settings file game.project.
Создание Windows-приложения (файл .exe) описано в Руководстве по Windows.
Создание HTML5 билда, а также дополнительная настройка описаны в руководстве по HTML5.
Можно создать специальную версию HTML5 билда специально для Facebook Instant Games. Этот процесс задокументирован в руководстве по Facebook Instant Games.
При повседневной разработке вашего приложения вполне вероятно, что вы собираете и бандлите прямо из редактора Defold. В других обстоятельствах вы можете захотеть автоматически создавать бандлы, например, пакетный бандлинг для всех платформ при выпуске новой версии или при создании ночных сборок последней версии игры, возможно, в среде CI. Сборка и бандлинг приложения могут выполняться вне обычного рабочего процесса в редакторе, с помощью инструмента командной строки Bob.
Редактор использует наш инструмент командной строки Bob для создания бандла приложения.
Логическая структура бандла выглядит следующим образом:
Бандл создаётся в папке. В зависимости от платформы эта папка может быть заархивирована в .apk или .ipa.
Содержимое папки зависит от платформы.
Помимо исполняемых файлов, наш процесс бандлинга также собирает необходимые ассеты для платформы (например, .xml файлы ресурсов для Android).
Используя настройку bundle_resources, вы можете указать ассеты, которые должны быть помещены в бандл как есть. Этим можно управлять для каждой платформы отдельно.
Игровые ассеты находятся в файле game.arcd, и каждый из них сжимается с использованием LZ4-сжатия.
Используя настройку custom_resources, вы можете указать ассеты, которые должны быть помещены (с сжатием) в game.arcd.
Эти ассеты можно загрузить с помощью функции sys.load_resource().
При создании бандла приложения у вас есть возможность создать отладочную или релизную сборку. Различия между этими типами сборок незначительные, но важные:
print() и вывод из нативных расширенийis_debug в sys.get_engine_info() установлено в falsehash при вызове tostring(). На практике это означает, что результат tostring() для значений типа url или hash будет числовым, а не исходной строкой ('hash: [/camera_001]' vs 'hash: [11844936738040519888 (unknown)]')