GameActivity Teil des Android Game Development Kit.
GameActivity ist eine Jetpack-Bibliothek, die Android-Spiele bei der Verarbeitung von App-Zyklus-Befehlen, Eingabeereignissen und Texteingaben im C/C++-Code der Anwendung unterstützt. GameActivity ist ein direkter Nachkomme von NativeActivity und hat eine ähnliche Architektur:

Wie im obigen Diagramm dargestellt, führt GameActivity die folgenden Funktionen aus:
- Interaktion mit dem Android-Framework über die Java-seitige Komponente.
- App-Zyklusbefehle, Eingabeereignisse und Eingabetext an die native Seite übergeben.
- C/C++-Quellcode wird in drei logische Komponenten unterteilt:
- Die JNI-Funktionen von GameActivity, die die Java-Funktionen von GameActivity direkt unterstützen und die Ereignisse in die
native_app_glueeinreihen. native_app_glue, das hauptsächlich in einem eigenen nativen Thread (anders als der Hauptthread der Anwendung) ausgeführt wird und Aufgaben mit seinem Looper ausführt.- Der Spielcode der Anwendung, der die in
native_app_gluein die Warteschlange gestellten Ereignisse abruft und verarbeitet und den Spielcode imnative_app_glue-Thread ausführt.
- Die JNI-Funktionen von GameActivity, die die Java-Funktionen von GameActivity direkt unterstützen und die Ereignisse in die
Mit GameActivity können Sie sich auf die Kernentwicklung Ihres Spiels konzentrieren und müssen nicht so viel Zeit mit dem JNI-Code verbringen.
Wenn Sie bereits mit NativeActivity vertraut sind, sind die wichtigsten Unterschiede zwischen GameActivity und NativeActivity die folgenden:
GameActivitywird alsSurfaceViewgerendert, wodurch Spiele viel einfacher mit anderen UI-Komponenten interagieren können.- Für Touch- und Tasteneingabeereignisse hat
GameActivityeine völlig neue Implementierung mit derandroid_input_buffer-Schnittstelle, die sich von derInputQueueunterscheidet, die vonNativeActivityverwendet wird. GameActivityist eine abgeleitete Klasse vonAppCompatActivity, mit der Sie andere Jetpack-Komponenten nahtlos verwenden können.ActionBar,Fragmentund andere sind alle verfügbar.GameActivityfügt die Texteingabefunktion durch die Integration der GameTextInput-Bibliothek hinzu.- Bei Apps, die von
GameActivityabgeleitet sind, wird erwartet, dass alle drei Teile des C/C++-Codes in einer Bibliothek erstellt werden. Die JNI-Funktionen vonNativeActivitysind dagegen Teil des Frameworks und werden immer vom Betriebssystem geladen. Daher werden nur dernative_app_glue- und der C/C++-Code der Anwendung in einer Bibliothek erstellt. NativeActivityist Teil des Android-Frameworks und folgt seinem Releasezyklus (in der Regel jährlich).GameActivityist Teil der Jetpack-Bibliothek, die einen viel häufigeren Release-Zyklus (in der Regel zweiwöchentlich) hat. Neue Funktionen und Fehlerkorrekturen können also viel schneller bereitgestellt werden.
Release-Standorte
Die GameActivity-Bibliothek ist in den folgenden Kanälen verfügbar:
- Als Teil der Android Jetpack-Bibliothek (empfohlen)
- Als AOSP-Quellcode
Der C/C++-Code wird in allen Release-Versionen als Quellcode im Prefab-Format bereitgestellt. Mit GameActivity Version 1.2.2 wird der Verteilung eine statische Bibliothek hinzugefügt. Ab dieser Version empfehlen wir, die statische Bibliothek anstelle des Quellcodes zu verwenden.
Inhalte der Jetpack-Bibliothek
Mit der Jetpack-Bibliothek wird GameActivity mit einer AAR veröffentlicht. Dieses AAR enthält die folgenden Hauptkomponenten:
- Eine JAR-Datei für Java-Code
- Die statische C/C++-Bibliothek
game-activity_staticist in GameActivity-Version 1.2.2 und höher enthalten. - C/C++-Quellcode (im Ordner
/prefab)
In der auf dieser Seite verlinkten Integrationsanleitung wird davon ausgegangen, dass Sie Prefab in Ihrem Build-System verwenden können. Andernfalls können Sie den Quellcode, der im Ordner prefab/modules/game-activity/include enthalten ist, in Ihr Build-System kopieren und die erforderlichen Integrationsschritte ausführen. Eine ähnliche Dateistruktur gibt es für die Releases unter androidx für die Android Jetpack-Bibliothek. Standardmäßig entpackt Gradle AARs in seinem Cache-Verzeichnis (~/.gradle/caches/...). Sie finden den C/C++-Quellcode, indem Sie nach prefab/modules/game-activity/include suchen und den Speicherort unter der gewünschten Release-Version auswählen.
Eine Anleitung zur Integration mit der Jetpack-Bibliothek finden Sie unter Erste Schritte mit GameActivity.
Inhalte des AOSP-Quellcodes
AOSP enthält immer den neuesten Quellcode. Folgen Sie der Anleitung zum Erstellen, um eigene Releases zu erstellen oder die Quelle direkt in Ihre Build-Umgebung zu integrieren. Der C/C++-Quellcode wird in einer Dateistruktur gespeichert, die der Jetpack-Bibliothek ähnelt.
Integrationsleitfäden
Folgen Sie der Anleitung in diesen Leitfäden, um GameActivity in Ihre Anwendungen einzubinden:
Zusätzliche Ressourcen
Weitere Informationen zu GameActivity finden Sie hier:
- Versionshinweise zu GameActivity und AGDK
- GameTextInput in GameActivity verwenden
- Migrationsanleitung für NativeActivity
- GameActivity-Referenzdokumentation
- GameActivity-Implementierung
Feedback
Wenn Sie Fehler melden oder neue Funktionen für GameActivity anfordern möchten, verwenden Sie die GameActivity-Problemverfolgung.