GameActivity   Teil des Android Game Development Kit.

GameActivity ist eine Jetpack-Bibliothek, die Android-Spiele bei der Verarbeitung von App-Zyklus-Befehlen, Eingabeereignissen und Texteingabe 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 in drei logische Komponenten unterteilen:
    • 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, die hauptsächlich in einem eigenen nativen Thread (anders als der Hauptthread der Anwendung) ausgeführt wird und Aufgaben mit ihrem 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 Entwicklung 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 in ein SurfaceView gerendert, wodurch die Interaktion von Spielen mit anderen UI-Komponenten erheblich vereinfacht wird.
  • Für Touch- und Tasteneingabeereignisse hat GameActivity eine völlig neue Implementierung mit der android_input_buffer-Schnittstelle, die von der InputQueue getrennt ist, 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 weitere sind verfügbar.
  • GameActivity fügt die Funktion zur Texteingabe hinzu, indem die GameTextInput-Bibliothek eingebunden wird.
  • 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 Releasezyklus (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-Channels 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 des Jetpack-Bibliotheks- und AGDK-ZIP-Pakets

Mit den Jetpack-Mediathek- und AGDK-ZIP-Paket-Channels 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 mit 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/...). Den C/C++-Quellcode finden Sie, 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.

Inhalt des AOSP-Quellcodes

AOSP enthält immer den neuesten Quellcode. Folgen Sie der Anleitung zum Erstellen, um eigene Releases zu erstellen oder den Quellcode direkt in Ihre Build-Umgebung einzubinden. Der C/C++-Quellcode wird in einer Dateistruktur gespeichert, die der für die Jetpack-Bibliothek und das AGDK-ZIP-Paket ähnelt.

Integrationsanleitungen

Folgen Sie diesen Anleitungen, um GameActivity in Ihre Anwendungen zu integrieren:

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.