GameActivity Часть комплекта разработки игр для Android .
 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++ в одну библиотеку. С другой стороны, JNI-функцииNativeActivityявляются частью фреймворка (всегда загружаются ОС). Следовательно, ожидается, что толькоnative_app_glueи код C/C++ приложения будут скомпонованы в одну библиотеку. -  
NativeActivityявляется частью фреймворка Android и следует его циклу релизов (обычно ежегодно).GameActivityвходит в библиотеку Jetpack, которая имеет гораздо более частый цикл релизов (обычно раз в две недели); новые функции и исправления ошибок могут появляться гораздо быстрее. 
Места выпуска
 Библиотека GameActivity доступна на следующих каналах:
- В составе библиотеки Android Jetpack (рекомендуется)
 - Как исходный код AOSP
 
Код C/C++ предоставляется в виде исходного кода во всех каналах релиза в формате Prefab . GameActivity версии 1.2.2 добавляет в дистрибутив статическую библиотеку. Начиная с этой версии и выше, мы рекомендуем использовать статическую библиотеку вместо исходного кода.
Содержимое библиотеки 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 всегда содержит самую актуальную версию исходного кода. Следуйте [инструкциям по сборке][реализация GameActivity]{: .external}, чтобы создавать собственные релизы, или напрямую интегрируйте исходный код в свою среду сборки. Исходный код C/C++ сохраняется в файловой структуре, аналогичной библиотеке Jetpack.
Руководства по интеграции
 Следуйте этим руководствам, чтобы интегрировать GameActivity в ваши приложения:
Дополнительные ресурсы
 Чтобы узнать больше о GameActivity , см. следующее:
- Заметки о выпуске GameActivity и AGDK .
 - Используйте GameTextInput в GameActivity .
 - Руководство по миграции NativeActivity .
 - Справочная документация GameActivity .
 - Реализация GameActivity .
 
Обратная связь
Чтобы сообщить об ошибках или запросить новые функции в GameActivity, используйте систему отслеживания ошибок GameActivity .