Die Beispiele für die Android-Erweiterung für die Spieleentwicklung zeigen, wie die wichtigsten Funktionen verwendet werden. der Erweiterung. In diesem Thema werden die Beispiele und die die für die Ausführung erforderlich sind.
Die folgenden Beispiele sind verfügbar auf der Downloadseite:
- HelloJNI: ein Einführungsprojekt.
- Endless-Tunnel: ein reines Android-Projekt.
- Teapot: ein plattformübergreifendes Projekt für Windows und Android
- AssemblyCode-Link-Objects: ein Vorlagenprojekt mit Assembly-Quellcode.
Vorbereitung
Installiere die Erweiterung „Android Game Development“ und die Beispiele. Weitere Informationen finden Sie in der Kurzanleitung. Außerdem wird beschrieben, wie Sie und ein Beispiel ausführen und die Android-Version des Beispiels Teapot verwenden. als Beispiel.
Im Leitfaden zur Projektkonfiguration wird beschrieben, wie Sie Einstellungen für ein Projekt konfigurieren, in dem die Erweiterung verwendet wird, z. B. eine Android-Plattform und ein APK hinzufügen.
HelloJNI
Das HelloJNI-Beispiel ist ein einfaches Projekt, das die Nachricht „Hello From JNI“ anzeigt. in einem App-Fenster öffnen. Im Projekt wird ein anderer Quellcode für Windows und Android
- Android-Quellcode und Gradle-Build-Skriptverzeichnis: HelloJNI\AndroidPackaging
- Windows-Quellcode und Visual Studio-Projektverzeichnis: HelloJNI
Beim Erstellen des Projekts übergibt Visual Studio Folgendes:
Einstellungen für die Datei build.gradle
auf App-Ebene fest. Sie können diese Einstellungen ändern, indem Sie
Gradle-Build-Skripts ändern.
MSBUILD_NDK_VERSION
MSBUILD_MIN_SDK_VERSION
MSBUILD_JNI_LIBS_SRC_DIR
MSBUILD_ANDROID_OUTPUT_APK_NAME
MSBUILD_ANDROID_GRADLE_BUILD_OUTPUT_DIR
So richten Sie das Beispiel ein und führen es aus:
<ph type="x-smartling-placeholder">- </ph>
- Öffnen und erstellen Sie das HelloJNI-Beispiel in Visual Studio.
- Fügen Sie eine Android arm64-v8a-Plattform hinzu. Weitere Informationen finden Sie unter Android-Plattform hinzufügen
- Android-APK-Artikel hinzufügen auf der neuen Plattform.
- Kompilieren Sie das Projekt.
- Füge die folgenden Android-Plattformen und anschließend ein Android-APK-Element hinzu für jedes: Android-armeabi-v7a, Android-x86 und Android-x86_64.
- Erstellen Sie das Beispiel und führen Sie es aus.
Endloser Tunnel
Das Beispiel „Endless-Tunnel“ ist ein Android-Spiel, bei dem der Spieler weiß, Würfeln beim Versuch, das Ende eines Tunnels zu erreichen. Sie wurde von einem OpenGL- Stichprobe in der Android NDK-Repository auf GitHub Das Beispiel bietet keine Windows-Version des Spiels.
Die Einstellungen und Android-Plattformen des Beispiels sind bereits konfiguriert, sodass Sie Folgendes tun können: das Projekt unverändert in Visual Studio erstellen und ausführen. Wenn Sie öffnen Sie die Projektmappe. Der Projektmappen-Explorer zeigt diese Module an:
- Endlostunnel: das Anwendungsmodul, das die Spiellogik anzeigt
- glm: Ein Snapshot des OpenGL-Math-Repositorys die als statische Bibliothek erstellt wurde.
- native_app_glue: Ein NDK-Wrapper, der mit dem NativeActivity -Objekt enthält.
Teekanne
Das Teekannenbeispiel zeigt eine klassische Teekanne, die mit OpenGL ES gerendert wird und in die Erweiterung für die Android-Spielentwicklung übertragen, um die folgenden Funktionen zu demonstrieren:
- Plattformübergreifende Projektentwicklung: Sie können das Teapot-Beispiel für Windows und Android
- Benutzerdefinierte Nutzung der Android-Paketerstellung: Die Gradle-Build-Skripts wurden auf den
Stammverzeichnis des Beispiels, in dem sich die Datei
Teapot.sln
befindet. - Experimentelle Ninja-Build-Integration, die das Projekt in Android Studio öffnen.
- Benutzerdefinierte Android-Konfigurationen, die die Verwendung demonstrieren Address Sanitizer (ASan) und Hardware Address Sanitizer (HWAsan):
Die Implementierung des Teapot-Beispiels ist in mehrere Teile aufgeteilt, Typisch für große plattformübergreifende Anwendungen und Spiele:
- Das Modul
GameApplication
definiert Nutzeraktionen und Anwendungsstatus, z. B. wenn Nutzende die Teekanne rotieren oder Anwendungsstatistiken aktualisieren. - Modul
GameEngine
: Implementiert das zentrale Renderingmodul.
Informationen dazu, wie Sie das Beispiel einrichten und unter Android ausführen, finden Sie in der Kurzanleitung. Bis das Beispiel einrichten und unter Windows ausführen:
<ph type="x-smartling-placeholder">- </ph>
- Installieren Sie GLEW:
<ph type="x-smartling-placeholder">
- </ph>
- Laden Sie GLEW herunter und entpacken Sie es.
- Kopieren Sie die Binärdateien aus
$your-glew-directory\bin\Release\x64
bis%SystemRoot%\system32
.
- Installieren Sie Freeglut:
<ph type="x-smartling-placeholder">
- </ph>
- Laden Sie freeglut herunter und entpacken Sie die Datei.
- Kopiere
$your-freeglut-directory\bin\x86\freeglut.dll
nach%SystemRoot%\system32
.
- Fügen Sie die Freeglut-Projektabhängigkeiten hinzu:
<ph type="x-smartling-placeholder">
- </ph>
- Öffnen Sie
Teapot.sln
in Visual Studio. - Klicken Sie im Menü auf Fehlerbehebung > x64 > Lokaler Windows-Debugger
- Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste GameApplication aus und wählen Sie Eigenschaften > C/C++ > Allgemein > Zusätzliche Verzeichnisse einschließen.
- Fügen Sie dem Pfad
$your-freeglut-dir\include
hinzu.
- Klicken Sie auf OK.
- Wählen Sie Verknüpfung > Allgemein > Zusätzliche Bibliotheksverzeichnisse.
- Fügen Sie dem Pfad
$your-freeglut-dir\lib\x64
hinzu. - Klicken Sie auf OK.
- Wählen Sie Verknüpfung > Allgemein > Zusätzliche Bibliotheksverzeichnisse.
- Fügen Sie dem Pfad
freeglut.lib
hinzu. - Klicken Sie auf OK.
- Öffnen Sie
- Fügen Sie die GLEW-Projektabhängigkeiten hinzu:
<ph type="x-smartling-placeholder">
- </ph>
- Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste GameApplication aus und wählen Sie Eigenschaften > C/C++ > Allgemein > Zusätzliche Verzeichnisse einschließen.
- Fügen Sie dem Pfad
$your-glew-dir\include
hinzu. - Klicken Sie auf OK.
- Wählen Sie Verknüpfung > Allgemein > Zusätzliche Bibliotheksverzeichnisse.
- Fügen Sie dem Pfad
$your-glew-dir\lib\Release\x86
hinzu. - Klicken Sie auf OK.
- Wählen Sie Verknüpfung > Allgemein > Zusätzliche Bibliotheksverzeichnisse.
- Fügen Sie dem Pfad
glew32.lib
hinzu. - Klicken Sie auf OK.
- Führen Sie das Beispiel unter Windows aus:
<ph type="x-smartling-placeholder">
- Klicken Sie in der Visual Studio-Symbolleiste auf die Schaltfläche Local Windows Debugger ausführen.
- Das Beispiel sollte so aussehen:
AssemblyCode-Link-Objects
Dies ist ein Vorlagenprojekt, das zeigt, wie ein natives Android-Gerät Bibliothek aus Assembly- und C/C++-Quellcode. Dies sind die Hauptkomponenten:
AssemblyCode-Link-Objects
: die native Hauptbibliothek für Android, die aus C++ erstellt wurde und Assembly-Quellcode.StaticLib
: eine statische Hilfsbibliothek, die diefrom_static_lib_assembly_code_as
.
Das Projekt unterstützt mehrere Architekturen. Jede unterstützte Architektur hat ihre
eigene Quelldateien, die Funktionen implementieren, die aus StaticLib
exportiert werden
Sie sollten nur die Assembly-Quelldateien für die Plattformen hinzufügen,
Dieses Projekt enthält Assembly-Dateien in Builds mithilfe von
benutzerdefinierten Build-Tools.
So richten Sie das Beispiel ein und erstellen es:
<ph type="x-smartling-placeholder">- </ph>
- Prüfen Sie in Visual Studio, ob benutzerdefinierte Build-Tools für
der Assembly-Dateien:
<ph type="x-smartling-placeholder">
- </ph>
- Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste Assembly-Datei und klicken Sie auf Properties (Eigenschaften). Dadurch wird die Eigenschaftenseiten für die Datei.
- Wählen Sie die Konfiguration und Plattform aus, z. B. Alle Konfigurationen für Android-arm64-v8a:
- Achten Sie darauf, dass Allgemein > „Vom Build ausschließen“ ist festgelegt. auf Nein.
- Achten Sie darauf, dass Allgemein > Elementtyp festgelegt Benutzerdefiniertes Build-Tool.
- Klicken Sie auf Übernehmen, falls Änderungen übernommen werden sollen.
- Stellen Sie sicher, dass
Konfigurationseigenschaften > Benutzerdefinierte Build-Tools > Befehlszeile:
ist festgelegt auf
$(AsToolExe) -o "$(IntDir)%(FileName).o" %(FullPath)
Das NDK enthält einen separaten Assembler für jede CPU-Architektur und$(AsToolExe)
wird dem richtigen Assembler zugeordnet. Dieses Beispiel verwendet die NDK-Toolchain zum Erstellen von x86 und x86_64 für Android Projekten. Wenn Sie yasm für die Android-Plattform x86_64 verwenden möchten, Verwende stattdessen$(YasmToolExe)
. - Stellen Sie sicher, dass
Konfigurationseigenschaften > Benutzerdefinierte Build-Tools > Ausgaben:
ist festgelegt auf
$(IntDir)%(FileName).o
Dieser String muss enthalten sein in der Einstellung Befehlszeile auswählen. - Stellen Sie sicher, dass
Konfigurationseigenschaften > Benutzerdefinierte Build-Tools > Linkobjekte:
ist festgelegt auf
Yes
Die Einstellungen für Android-arm64-v8a sollten beispielsweise sieht etwa so aus:
- Erstellen Sie das Projekt. Dadurch wird die
libAssmeblyCodeLinkObjects.so
-Datei: <ph type="x-smartling-placeholder">- </ph>
- Öffnen Sie die Datei
AssemblyCode-Link-Objects.sln
. - Klicken Sie im Menü auf Build > Lösung entwickeln.
- Öffnen Sie die Datei
- Um zu bestätigen, dass die Funktionen korrekt in den Android-
Bibliothek das NDK-Tool nm.exe an:
<ph type="x-smartling-placeholder">
- </ph>
- Wechseln Sie in der Befehlszeile zum Beispielverzeichnis.
- Gehen Sie zum Speicherort der Android-Bibliothek, der von Ihrem
erstellen. Der Standardspeicherort ist ähnlich wie
$sample_dir\$solution_configuration\$solution_platform\$platform
und$sample_dir\Debug\Android-arm64-v8a\arm64-v8a
für arm64-v8a-Plattform. - Prüfen Sie, ob der exportierte Symbolabschnitt die Funktionen enthält:
und führen Sie den folgenden Befehl aus:
…\ndk\toolschains\llvm\prebuilt\windows-x86_64\aarch64-linux-android\bin\nm.exe --defined-only …\Debug\Android-arm64-v8a\arm64-v8a\libAssmeblyCodeLinkObjects.so
Die Ausgabe enthält eine Liste mit Symbolen, die den Parameter Folgendes:
T from_shared_object_assembly_code_as
T from_static_lib_assembly_code_as