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:
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 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 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 einSurfaceView
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 derandroid_input_buffer
-Schnittstelle, die von derInputQueue
getrennt ist, die vonNativeActivity
verwendet wird. 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 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 vonNativeActivity
sind 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. 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:
- Als Teil der Android Jetpack-Bibliothek (empfohlen)
- Als AOSP-Quellcode
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:
- 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.