GameActivity Parte de Android Game Development Kit.
GameActivity es una biblioteca de Jetpack que se diseñó para ayudar a los juegos de Android a procesar comandos del ciclo de la app, eventos de entrada y entrada de texto en el código C/C++ de la aplicación. GameActivity es subordinado directo de NativeActivity y comparte una arquitectura similar:

Como se ilustra en el diagrama anterior, GameActivity realiza las siguientes funciones:
- Interactúa con el framework de Android a través del componente Java.
- Pasa comandos del ciclo de la app, eventos de entrada y texto de entrada al lado nativo.
- Modela el código fuente C/C++ en tres componentes lógicos:
- Funciones JNI de GameActivity, que admiten directamente la funcionalidad Java de GameActivity y ponen en cola los eventos para
native_app_glue. native_app_glue, que se ejecuta sobre todo en su propio subproceso nativo (diferente del subproceso principal de la aplicación) y ejecuta tareas con su generador de bucles.- El código de juego de la aplicación, que sondea y procesa los eventos en cola dentro de
native_app_gluey ejecuta el código de juego dentro del subprocesonative_app_glue.
- Funciones JNI de GameActivity, que admiten directamente la funcionalidad Java de GameActivity y ponen en cola los eventos para
Con GameActivity, puedes enfocarte en el desarrollo principal de tu juego y evitar dedicar demasiado tiempo con el código JNI.
Si ya conoces NativeActivity, a continuación, se indican las principales diferencias entre GameActivity y NativeActivity:
GameActivityse renderiza en unaSurfaceView, lo que facilita mucho la interacción de los juegos con otros componentes de la IU.- En los eventos de entrada táctil y de teclas,
GameActivitytiene una implementación completamente nueva con la interfaz deandroid_input_buffer, separada de laInputQueueque usaNativeActivity. GameActivityes una clase derivada deAppCompatActivity, que te permite usar sin problemas otros componentes de Jetpack.ActionBar,Fragmenty otros están disponibles.GameActivityagrega funciones de entrada de texto mediante la integración de la biblioteca de GameTextInput.- Se espera que las apps derivadas de
GameActivitycompilen las tres partes del código C/C++ en una biblioteca. Por otro lado, las funciones de JNI deNativeActivityson parte del framework (que siempre carga el SO). Por lo tanto, solo se espera quenative_app_gluey el código C/C++ de la aplicación se compilen en una biblioteca. NativeActivityes parte del framework de Android y sigue su ciclo de lanzamiento (por lo general, anual).GameActivityes parte de la biblioteca de Jetpack, que tiene un ciclo de lanzamiento mucho más frecuente (por lo general, cada dos semanas); las funciones nuevas y las correcciones de errores pueden llegar más rápido.
Ubicaciones de lanzamiento
La biblioteca GameActivity está disponible en los siguientes canales:
- Como parte de la biblioteca de Android Jetpack (recomendado)
- Como código fuente AOSP
El código C/C++ se proporciona como código fuente en todos los canales de versiones con el formato Prefab. GameActivity versión 1.2.2 agrega una biblioteca estática a la distribución. A partir de esta versión y de versiones posteriores, te recomendamos usar la biblioteca estática en lugar del código fuente.
Contenido de la biblioteca de Jetpack
Con la biblioteca de Jetpack, se lanza GameActivity con un AAR. Este AAR contiene los siguientes componentes principales:
- Un archivo JAR para código Java
- La biblioteca
game-activity_staticde C/C++static se incluye con GameActivity 1.2.2 y versiones posteriores. - Código fuente C/C++ (en la carpeta
/prefab)
En las instrucciones de integración vinculadas desde esta página, se supone que puedes usar Prefab en el sistema de compilación. De lo contrario, puedes copiar el código fuente empaquetado en la carpeta prefab/modules/game-activity/include en tu sistema de compilación y seguir los pasos de integración necesarios. Existe una estructura de archivo similar para las versiones de androidx de la biblioteca de Android Jetpack. De forma predeterminada, Gradle descomprime los AAR en su directorio de caché (~/.gradle/caches/…). Puedes encontrar el código fuente C/C++ si buscas prefab/modules/game-activity/include y seleccionas la ubicación en la versión de actualización deseada.
A fin de obtener instrucciones para realizar la integración con la biblioteca de Jetpack, consulta el documento de introducción a GameActivity.
Contenido del código fuente de AOSP
El AOSP siempre contiene el código fuente más reciente. Sigue [las instrucciones de compilación][Implementación de GameActivity]{: .external} para crear tus propias versiones o integrar directamente el código fuente en tu entorno de compilación. El código fuente de C/C++ se guarda en una estructura de archivos similar a la de la biblioteca de Jetpack.
Guías de integración
Sigue estas guías para integrar GameActivity en tus aplicaciones:
Recursos adicionales
Para obtener más información sobre GameActivity, consulta los siguientes vínculos:
- Notas de la versión de AGDK y GameActivity
- Usa GameTextInput en GameActivity
- Guía de migración de NativeActivity
- Documentación de referencia de GameActivity
- Implementación de GameActivity
Comentarios
Para informar errores o solicitar nuevas funciones a GameActivity, usa la herramienta de seguimiento de errores de GameActivity.