GameActivity Teil des Android Game Development Kit.

GameActivity ist eine Jetpack-Bibliothek, die Android-Spiele bei der Verarbeitung von App-Zyklusbefehlen, Eingabeereignissen und Texteingaben im C/C++-Code der Anwendung unterstützt. GameActivity ist ein direktes Nachfolger 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-Komponente
  • Übergeben von App-Zyklusbefehlen, -Eingabeereignissen und -Texteingaben an die native Seite.
  • Modellierung von C/C++-Quellcode in drei logischen Komponenten:
    • Die JNI-Funktionen von GameActivity, die die Java-Funktionalität von GameActivity direkt unterstützen und die Ereignisse in native_app_glue in die Warteschlange stellen.
    • native_app_glue, der hauptsächlich in seinem 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 der Warteschlange befindlichen Ereignisse abfragt und verarbeitet und Spielcode im native_app_glue-Thread ausführt.

Mit GameActivity können Sie sich auf die Entwicklung der zentralen Spiele konzentrieren und vermeiden, übermäßig viel Zeit mit dem JNI-Code zu verschwenden.

Wenn Sie bereits mit NativeActivity vertraut sind, gibt es die folgenden Hauptunterschiede zwischen GameActivity und NativeActivity:

  • GameActivity wird in ein SurfaceView gerendert, was die Interaktion von Spielen mit anderen UI-Komponenten erheblich vereinfacht.
  • Für Touch- und Tastenkombinationen gibt es in GameActivity eine völlig neue Implementierung mit der android_input_buffer-Oberfläche, getrennt von der InputQueue, die NativeActivity verwendet.
  • 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 durch Einbindung der GameTextInput-Bibliothek Texteingabefunktionen hinzu.
  • Von GameActivity abgeleitete Apps sollen alle drei Teile des C/C++-Codes in einer Bibliothek zusammenfassen. Andererseits sind die JNI-Funktionen von NativeActivity Teil des Frameworks (immer vom Betriebssystem geladen). Daher wird erwartet, dass nur native_app_glue und der C/C++-Code der Anwendung in eine Bibliothek eingebunden sind.
  • NativeActivity ist Teil des Android-Frameworks und folgt seinem Releasezyklus (in der Regel jährlich). GameActivity ist Teil der Jetpack-Bibliothek, deren Veröffentlichungszyklus (in der Regel alle zwei Wochen) wesentlich häufiger erfolgt. Neue Funktionen und Fehlerkorrekturen können viel schneller veröffentlicht werden.

Release-Standorte

Die GameActivity-Bibliothek ist auf den folgenden Kanälen verfügbar:

Der C-/C++-Code wird im Prefab-Format in allen Release-Versionen als Quellcode bereitgestellt. In Version 1.2.2 von GameActivity wird der Distribution eine statische Bibliothek hinzugefügt. Wir empfehlen, ab dieser Version die statische Bibliothek anstelle des Quellcodes zu verwenden.

Inhalt der Jetpack-Bibliothek und des AGDK-ZIP-Pakets

Mit der Jetpack-Bibliothek und den AGDK-ZIP-Paketkanälen wird GameActivity mit einem AAE veröffentlicht. Dieses AAE umfasst die folgenden Hauptkomponenten:

  • Eine JAR-Datei für Java-Code
  • Die C/C++static-Bibliothek game-activity_static ist in GameActivity-Version 1.2.2 und höher enthalten.
  • C/C++-Quellcode (im Ordner /prefab)

Bei der auf dieser Seite verlinkten Integrationsanleitung wird davon ausgegangen, dass Sie das Tool in Ihrem Build-System verwenden können. Andernfalls können Sie den im Ordner prefab/modules/game-activity/include verpackten Quellcode in Ihr Build-System kopieren und die erforderlichen Integrationsschritte ausführen. Eine ähnliche Dateistruktur existiert für die Releases unter androidx und die Android Jetpack-Bibliothek. Standardmäßig entpackt Gradle AARs im 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 mithilfe der Jetpack-Bibliothek finden Sie unter Erste Schritte mit GameActivity.

Führen Sie für das ZIP-Paket der AGDK-Bibliothek die folgenden Schritte aus, um den C/C++-Code abzurufen:

  1. Entpacken Sie das heruntergeladene Paket.
  2. Entpacken Sie im entpackten Paket die Datei "GameActivity-release.aar".
  3. Suchen und kopieren Sie den gesamten C/C++-Quellcode unter prefab/modules/game-activity/include. Dazu gehören:
    • game-activity für GameActivity-bezogenen C/C++-Code
    • game-text-input für GameTextInput-bezogenen C/C++-Code

Inhalt des AOSP-Quellcodes

AOSP enthält immer den neuesten Quellcode. Folgen Sie der Build-Anleitung, 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 Dateistruktur für die Jetpack-Bibliothek und das ZIP-Paket AGDK ähnelt.

Integrationsanleitungen

Folgen Sie diesen Leitfäden, 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 melden möchten, verwenden Sie die GameActivity-Problemverfolgung.