Beispiele

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> <ph type="x-smartling-placeholder"></ph> <ph type="x-smartling-placeholder">
    </ph>
  1. Öffnen und erstellen Sie das HelloJNI-Beispiel in Visual Studio.
  2. Fügen Sie eine Android arm64-v8a-Plattform hinzu. Weitere Informationen finden Sie unter Android-Plattform hinzufügen
  3. Android-APK-Artikel hinzufügen auf der neuen Plattform.
  4. Kompilieren Sie das Projekt.
  5. 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.
  6. 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> <ph type="x-smartling-placeholder"></ph> <ph type="x-smartling-placeholder">
    </ph>
  1. Installieren Sie GLEW: <ph type="x-smartling-placeholder">
      </ph>
    1. Laden Sie GLEW herunter und entpacken Sie es.
    2. Kopieren Sie die Binärdateien aus $your-glew-directory\bin\Release\x64 bis %SystemRoot%\system32.
  2. Installieren Sie Freeglut: <ph type="x-smartling-placeholder">
      </ph>
    1. Laden Sie freeglut herunter und entpacken Sie die Datei.
    2. Kopiere $your-freeglut-directory\bin\x86\freeglut.dll nach %SystemRoot%\system32.
  3. Fügen Sie die Freeglut-Projektabhängigkeiten hinzu: <ph type="x-smartling-placeholder">
      </ph>
    1. Öffnen Sie Teapot.sln in Visual Studio.
    2. Klicken Sie im Menü auf Fehlerbehebung > x64 > Lokaler Windows-Debugger
    3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste GameApplication aus und wählen Sie Eigenschaften > C/C++ > Allgemein > Zusätzliche Verzeichnisse einschließen.
    4. Fügen Sie dem Pfad $your-freeglut-dir\include hinzu.
      Screenshot des Dialogfelds „Zusätzliche Verzeichnisse“.
    5. Klicken Sie auf OK.
    6. Wählen Sie Verknüpfung > Allgemein > Zusätzliche Bibliotheksverzeichnisse.
    7. Fügen Sie dem Pfad $your-freeglut-dir\lib\x64 hinzu. Screenshot des Dialogfelds „Zusätzliche Bibliotheksverzeichnisse“.
    8. Klicken Sie auf OK.
    9. Wählen Sie Verknüpfung > Allgemein > Zusätzliche Bibliotheksverzeichnisse.
    10. Fügen Sie dem Pfad freeglut.lib hinzu.
    11. Klicken Sie auf OK.
  4. Fügen Sie die GLEW-Projektabhängigkeiten hinzu: <ph type="x-smartling-placeholder">
      </ph>
    1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste GameApplication aus und wählen Sie Eigenschaften > C/C++ > Allgemein > Zusätzliche Verzeichnisse einschließen.
    2. Fügen Sie dem Pfad $your-glew-dir\include hinzu.
    3. Klicken Sie auf OK.
    4. Wählen Sie Verknüpfung > Allgemein > Zusätzliche Bibliotheksverzeichnisse.
    5. Fügen Sie dem Pfad $your-glew-dir\lib\Release\x86 hinzu.
    6. Klicken Sie auf OK.
    7. Wählen Sie Verknüpfung > Allgemein > Zusätzliche Bibliotheksverzeichnisse.
    8. Fügen Sie dem Pfad glew32.lib hinzu.
    9. Klicken Sie auf OK.
  5. Führen Sie das Beispiel unter Windows aus: <ph type="x-smartling-placeholder">
    1. Klicken Sie in der Visual Studio-Symbolleiste auf die Schaltfläche Local Windows Debugger ausführen.
    2. Das Beispiel sollte so aussehen:
      Screenshot des Teapot-Beispiels unter Windows

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 die from_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> <ph type="x-smartling-placeholder"></ph> <ph type="x-smartling-placeholder">
    </ph>
  1. Prüfen Sie in Visual Studio, ob benutzerdefinierte Build-Tools für der Assembly-Dateien: <ph type="x-smartling-placeholder">
      </ph>
    1. 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.
    2. Wählen Sie die Konfiguration und Plattform aus, z. B. Alle Konfigurationen für Android-arm64-v8a:
    3. Achten Sie darauf, dass Allgemein > „Vom Build ausschließen“ ist festgelegt. auf Nein.
    4. Achten Sie darauf, dass Allgemein > Elementtyp festgelegt Benutzerdefiniertes Build-Tool.
    5. Klicken Sie auf Übernehmen, falls Änderungen übernommen werden sollen.
    6. 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).
    7. 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.
    8. 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:

    Screenshot der Property-Seite für benutzerdefinierte Build-Tools.
  2. Erstellen Sie das Projekt. Dadurch wird die libAssmeblyCodeLinkObjects.so-Datei: <ph type="x-smartling-placeholder">
      </ph>
    1. Öffnen Sie die Datei AssemblyCode-Link-Objects.sln.
    2. Klicken Sie im Menü auf Build > Lösung entwickeln.
  3. Um zu bestätigen, dass die Funktionen korrekt in den Android- Bibliothek das NDK-Tool nm.exe an: <ph type="x-smartling-placeholder">
      </ph>
    1. Wechseln Sie in der Befehlszeile zum Beispielverzeichnis.
    2. 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.
    3. 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