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

Как показано на диаграмме выше, GameActivity выполняет следующие функции:
- Взаимодействие с фреймворком Android через компонент на стороне Java.
- Передавать команды жизненного цикла приложения, события ввода и текст в нативную часть.
- Моделирование исходного кода C/C++ в три логических компонента:
- Функции JNI GameActivity, которые напрямую поддерживают функции Java GameActivity и ставят события в очередь в
native_app_glue. native_app_glue, который в основном работает в собственном нативном потоке (отличающемся от основного потока приложения) и выполняет задачи с помощью своего цикла обработки сообщений.- Код игры, который опрашивает и обрабатывает события, поставленные в очередь в
native_app_glue, и выполняет код игры в потокеnative_app_glue.
- Функции JNI GameActivity, которые напрямую поддерживают функции Java GameActivity и ставят события в очередь в
GameActivity позволяет сосредоточиться на разработке игры и не тратить много времени на код JNI.
Если вы уже знакомы с NativeActivity, основные различия между GameActivity и NativeActivity перечислены ниже.
GameActivityпреобразуется вSurfaceView, что значительно упрощает взаимодействие игр с другими элементами интерфейса.- Для событий ввода с помощью сенсорного экрана и клавиатуры в
GameActivityреализована совершенно новая реализация с интерфейсомandroid_input_buffer, отдельным отInputQueue, который используетNativeActivity. GameActivity– это производный классAppCompatActivity, который позволяет легко использовать другие компоненты Jetpack.ActionBar,Fragmentи другие.GameActivityдобавляет функцию ввода текста, интегрируя библиотеку GameTextInput.- Приложения, созданные на основе
GameActivity, должны содержать все три части кода C/C++ в одной библиотеке. С другой стороны, функции JNINativeActivityявляются частью фреймворка (всегда загружаются ОС). Поэтому в одну библиотеку должны быть встроены только код приложения на C/C++ иnative_app_glue. NativeActivityявляется частью платформы Android и выпускается в соответствии с ее циклом (обычно раз в год).GameActivityвходит в библиотеку Jetpack, которая обновляется гораздо чаще (обычно раз в две недели), поэтому новые функции и исправления ошибок появляются быстрее.
Освобождение местоположений
Библиотека GameActivity доступна в следующих каналах:
- Как часть библиотеки Android Jetpack (рекомендуется)
- Исходный код AOSP
Исходный код на C/C++ предоставляется во всех каналах обновления в формате Prefab. В версии 1.2.2 GameActivity в дистрибутив добавлена статическая библиотека. Начиная с этой версии мы рекомендуем использовать статическую библиотеку вместо исходного кода.
Содержимое библиотеки Jetpack
Библиотека Jetpack позволяет выпускать 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.
Руководства по интеграции
Чтобы интегрировать GameActivity в свои приложения, следуйте инструкциям в этих руководствах:
Дополнительные ресурсы
Чтобы узнать больше о GameActivity, ознакомьтесь со следующими материалами:
- Примечания к выпуску GameActivity и AGDK.
- Используйте GameTextInput в GameActivity.
- Руководство по переходу на NativeActivity.
- Справочная документация по GameActivity.
- Реализация GameActivity.
Отзыв
Чтобы сообщить об ошибке или запросить новую функцию GameActivity, воспользуйтесь системой отслеживания ошибок GameActivity.