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:

alt_text

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_glue einreihen.
    • 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_glue in die Warteschlange gestellten Ereignisse abruft und verarbeitet und den Spielcode im native_app_glue-Thread ausführt.

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:

  • GameActivity wird als SurfaceView gerendert, wodurch Spiele viel einfacher mit anderen UI-Komponenten interagieren können.
  • Für Touch- und Tasteneingabeereignisse hat GameActivity eine völlig neue Implementierung mit der android_input_buffer-Schnittstelle, die sich von der InputQueue unterscheidet, die von NativeActivity verwendet wird.
  • GameActivity ist eine abgeleitete Klasse von AppCompatActivity, mit der Sie andere Jetpack-Komponenten nahtlos verwenden können. ActionBar, Fragment und andere sind alle verfügbar.
  • GameActivity fügt die Texteingabefunktion durch die Integration der GameTextInput-Bibliothek hinzu.
  • Bei Apps, die von GameActivity abgeleitet sind, wird erwartet, dass alle drei Teile des C/C++-Codes in einer Bibliothek erstellt werden. Die JNI-Funktionen von NativeActivity sind dagegen Teil des Frameworks und werden immer vom Betriebssystem geladen. Daher werden nur der native_app_glue- und der C/C++-Code der Anwendung in einer Bibliothek erstellt.
  • NativeActivity ist Teil des Android-Frameworks und folgt seinem Releasezyklus (in der Regel jährlich). GameActivity ist 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:

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_static ist 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:

Feedback

Wenn Sie Fehler melden oder neue Funktionen für GameActivity anfordern möchten, verwenden Sie die GameActivity-Problemverfolgung.