GameActivity Часть комплекта разработки игр для Android .

GameActivity — это библиотека Jetpack, разработанная для помощи играм Android в обработке команд цикла приложения, событий ввода и текстового ввода в коде приложения на C/C++. GameActivity является прямым потомком NativeActivity и имеет схожую архитектуру:

alt_text

Как показано на диаграмме выше, GameActivity выполняет следующие функции:

  • Взаимодействие с фреймворком Android через компонент Java.
  • Передача команд цикла приложения, событий ввода и текста ввода на собственную сторону.
  • Моделирование исходного кода C/C++ на три логических компонента:
    • Функции JNI GameActivity, которые напрямую поддерживают функциональность Java GameActivity и ставят события в очередь native_app_glue .
    • native_app_glue , который работает в основном в своем собственном потоке (отличном от основного потока приложения) и выполняет задачи с помощью своего циклического обработчика.
    • Игровой код приложения, который опрашивает и обрабатывает события, поставленные в очередь внутри native_app_glue , и выполняет игровой код в потоке native_app_glue .

С помощью GameActivity вы можете сосредоточиться на разработке основной игры и не тратить лишнее время на работу с кодом JNI.

Если вы уже знакомы с NativeActivity , основные различия между GameActivity и NativeActivity заключаются в следующем:

  • GameActivity отображается в SurfaceView , что значительно упрощает взаимодействие игр с другими компонентами пользовательского интерфейса.
  • Для событий сенсорного и клавишного ввода GameActivity имеет совершенно новую реализацию с интерфейсом android_input_buffer , отдельную от InputQueue , который использует NativeActivity .
  • GameActivity — это производный класс от AppCompatActivity , который позволяет легко использовать другие компоненты Jetpack. Доступны ActionBar , Fragment и другие.
  • GameActivity добавляет функциональность ввода текста путем интеграции библиотеки GameTextInput .
  • Приложения, производные от GameActivity , должны скомпоновать все три части кода C/C++ в одну библиотеку. С другой стороны, JNI-функции NativeActivity являются частью фреймворка (всегда загружаются ОС). Следовательно, ожидается, что только native_app_glue и код C/C++ приложения будут скомпонованы в одну библиотеку.
  • NativeActivity является частью фреймворка Android и следует его циклу релизов (обычно ежегодно). GameActivity входит в библиотеку Jetpack, которая имеет гораздо более частый цикл релизов (обычно раз в две недели); новые функции и исправления ошибок могут появляться гораздо быстрее.

Места выпуска

Библиотека GameActivity доступна на следующих каналах:

Код C/C++ предоставляется в виде исходного кода во всех каналах релиза в формате Prefab . GameActivity версии 1.2.2 добавляет в дистрибутив статическую библиотеку. Начиная с этой версии и выше, мы рекомендуем использовать статическую библиотеку вместо исходного кода.

Содержимое библиотеки Jetpack и zip-пакета AGDK

Вместе с библиотекой Jetpack и zip-архивом AGDK GameActivity выпускается с AAR-файлом. Этот AAR-файл содержит следующие основные компоненты:

  • JAR-файл для кода Java
  • Статическая библиотека C/C++ game-activity_static включена в GameActivity версии 1.2.2 и более поздних.
  • Исходный код C/C++ (в папке /prefab )

Инструкции по интеграции, представленные на этой странице, предполагают, что вы можете использовать Prefab в своей системе сборки. В противном случае вы можете скопировать исходный код, упакованный в папку prefab/modules/game-activity/include в свою систему сборки и выполнить необходимые шаги по интеграции. Аналогичная файловая структура существует для релизов в каталоге androidx для библиотеки Android Jetpack; по умолчанию Gradle распаковывает AAR-файлы в свой каталог кэша (~/.gradle/caches/...). Исходный код C/C++ можно найти, выполнив поиск по запросу prefab/modules/game-activity/include и указав расположение в нужной вам версии релиза.

Инструкции по интеграции с использованием библиотеки Jetpack см. в разделе Начало работы с GameActivity .

Содержание исходного кода AOSP

AOSP всегда содержит самую актуальную версию исходного кода. Следуйте инструкциям по сборке , чтобы создавать собственные релизы, или напрямую интегрируйте исходный код в свою среду сборки. Исходный код C/C++ сохраняется в файловой структуре, аналогичной структуре библиотеки Jetpack и zip-архива AGDK.

Руководства по интеграции

Следуйте этим руководствам, чтобы интегрировать GameActivity в ваши приложения:

Дополнительные ресурсы

Чтобы узнать больше о GameActivity , см. следующее:

Обратная связь

Чтобы сообщить об ошибках или запросить новые функции в GameActivity, используйте систему отслеживания ошибок GameActivity .