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:
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 imnative_app_glue
-Thread ausführt.
- Die JNI-Funktionen von GameActivity, die die Java-Funktionalität von GameActivity direkt unterstützen und die Ereignisse in
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 einSurfaceView
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 derandroid_input_buffer
-Oberfläche, getrennt von derInputQueue
, dieNativeActivity
verwendet. GameActivity
ist eine abgeleitete Klasse vonAppCompatActivity
, 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 vonNativeActivity
Teil des Frameworks (immer vom Betriebssystem geladen). Daher wird erwartet, dass nurnative_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:
- Als Teil der Android Jetpack-Bibliothek (empfohlen)
- Als ZIP-Paket, das über die AGDK-Downloadseite heruntergeladen werden kann
- Als AOSP-Quellcode
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:
- Entpacken Sie das heruntergeladene Paket.
- Entpacken Sie im entpackten Paket die Datei "GameActivity-release.aar".
- Suchen und kopieren Sie den gesamten C/C++-Quellcode unter
prefab/modules/game-activity/include
. Dazu gehören:game-activity
fürGameActivity
-bezogenen C/C++-Codegame-text-input
fürGameTextInput
-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:
- Versionshinweise zu GameActivity und AGDK
- „GameTextInput“ in „GameActivity“ verwenden
- Migrationsanleitung für NativeActivity
- Referenzdokumentation zu GameActivity
- GameActivity-Implementierung
Feedback
Wenn Sie Fehler melden oder neue Funktionen für GameActivity melden möchten, verwenden Sie die GameActivity-Problemverfolgung.