Projekte konfigurieren

Konfigurieren Sie ein Projekt für die Verwendung der Android Game Development Extension.

Die Android Game Development Extension ruft MSBuild auf, um C/C++-Quellcode in gemeinsam genutzten Bibliotheken (.so) und statischen Bibliotheken (.a) zu erstellen. Im Rahmen des Build-Prozesses ruft eine benutzerdefinierte MSBuild-Aufgabe Gradle auf, um Java- und Kotlin-Quellcode zu kompilieren, Assets zu verpacken und eine APK-Datei für die Bereitstellung zu generieren. Achten Sie bei der Konfiguration Ihres Projekts darauf, dass MSBuild über die Informationen verfügt, die zum Erstellen für die Android-Plattform erforderlich sind.

C/C++ mit MSBuild erstellen

Ein typisches Android-Projekt wird mit Gradle erstellt. Der native Code innerhalb des Projekts wird mit einem Gradle-Pass erstellt, der entweder CMake oder ndk-build ausführt. Bei der Android Game Development Extension für Visual Studio ist der Build-Prozess invertiert. MSBuild ist jetzt der Ausgangspunkt des Build-Prozesses. Der gesamte C/C++-Quellcode wird von MSBuild zuerst für die neuen Android-Plattformen erstellt, die im Rahmen der Erweiterung auf Ihrem System installiert werden (z. B. „Android-x86_64“). MSBuild ruft dann Gradle auf, um die Dateien der gemeinsam genutzten Bibliothek, die Ihre C/C++-Logik enthalten, in einem APK zu verpacken.

Sie sollten zuerst die vorhandene Build-Logik Ihres Projekts in CMake oder „ndk-build“ in MSBuild replizieren. Legen Sie als Zielplattformen folgende Optionen fest:

  • Android x86
  • Android x86_64
  • Android-Armeabi-V7a
  • Android-Arm64-V8a

Diese Plattformen werden alle von der Android Game Development Extension bereitgestellt.

Android-Plattform hinzufügen

Das Teekannen-Beispielprojekt umfasst Android-Plattformen, aber Sie müssen einem vorhandenen Projekt manuell eine Android-Plattform hinzufügen. So fügen Sie eine neue Plattform in Visual Studio hinzu:

  1. Wählen Sie Build > Configuration Manager (Build > Konfigurationsmanager) aus.
  2. Wählen Sie unter Aktive Lösungsplattform die Option <Neu> aus.
  3. Geben Sie einen der folgenden Werte für die neue Plattform ein:

    • Android-armeabi-v7a
    • Android-arm64-v8a
    • Android x86
    • Android x86_64
  4. Wählen Sie im Feld Einstellungen kopieren von eine andere vorhandene Android-Plattform aus oder klicken Sie auf <Empty>, wenn Sie noch keine Android-Plattformen haben. Die Option Neue Projektplattformen erstellen muss aktiviert sein.

Android-APK-Element hinzufügen

Wählen Sie Hinzufügen > Neues Element > Visual C++ > Android > Android APK aus und klicken Sie auf Hinzufügen. Konfigurieren Sie die Android-App im folgenden Dialogfeld.

  • Anwendungsname: Der visuell lesbare Name Ihrer Android-App.
  • Anwendungs-ID: Die eindeutige Kennung für Ihre Android-App.
  • Speicherort des Projektmappen-Explorers: Speicherort des virtuellen Ordners, der die hinzugefügten Dateien zur Unterstützung für das Android-Paketerstellung enthält. Standardmäßig werden diese Dateien auch im Projekt in einem Ordner mit demselben Namen gespeichert. Sie können den Speicherort anpassen, indem Sie das Kästchen Supportdateien an einem benutzerdefinierten Speicherort ablegen anklicken und einen benutzerdefinierten Speicherort angeben. Der virtuelle Ordner befindet sich im Lösungs-Explorer weiterhin unter dem aktuellen Projekt.

MSBuild zum Aufrufen von Gradle veranlassen, um ein APK zu erstellen

MSBuild kann Gradle nur aufrufen, wenn der Speicherort des Gradle-Projekts bekannt ist. Legen Sie diesen Speicherort mit dem Attribut Gradle Build Directory (Gradle Build Directory) fest, wie in Abbildung 1 gezeigt.


Abbildung 1: Gradle Build Directory-Attribut

Legen Sie außerdem die Attribute Anwendungsmodul, Anwendungsvariante und APK-Name fest (wie in der vorherigen Abbildung gezeigt), damit MSBuild weiß, was erstellt werden soll.

  • Anwendungsmodul: Der Name des Gradle-Unterprojekts. Dies ist das in der Datei settings.gradle festgelegte Hauptprojekt. Bei Projekten, die direkt mit Android Studio erstellt wurden, wird sie normalerweise app genannt.
  • Anwendungsvariante: Die zu erstellende Android-Variante. Dieser Wert sollte gemäß den MSBuild-Konfigurationen festgelegt werden. Bei einem Debug-Build sollte beispielsweise ein Wert auf die Debug-Variante festgelegt sein. Wenn der MSBuild-Konfigurationsname Ihres Projekts mit den Namen der Gradle-Varianten übereinstimmt, verwenden Sie einfach den Standardwert $(Configuration).
  • APK-Name: Der Name der generierten APK-Datei, die für die Fehlerbehebung und Profilerstellung auf Ihrem Entwicklungscomputer verwendet wird. Dieser Name wird an Gradle übergeben und Ihr Gradle-Build-Skript sollte dies berücksichtigen (siehe Attribut MSBUILD_ANDROID_OUTPUT_APK_NAME im folgenden Abschnitt).

Gradle-Build-Skripts ändern

Während des Builds übergibt MSBuild die folgenden Informationen als Projektattribute an das Gradle-Skript. Ändern Sie die vorhandenen Build-Skripts Ihres Projekts (normalerweise namens build.gradle), sodass diese Attribute gelesen werden.

  • MSBUILD_MIN_SDK_VERSION: Die SDK-Mindestversion zum Erstellen des APKs. Legen Sie diesen Wert auf der Seite der Projekteigenschaften (siehe Abbildung 2) im Feld Mindestversion des Android SDK fest.


    Abbildung 2: Property Mindestversion des Android SDK

    Im Gradle-Build-Skript sollte minSdkVersion auf diesen Wert festgelegt werden, wie unten gezeigt.

    Groovig

    android {
      // ...
    
      defaultConfig {
          applicationId "com.yourcompany.yourapp"
          minSdkVersion MSBUILD_MIN_SDK_VERSION
          // ...
      }
    
      // ...
    }
    

    Kotlin

    android {
      // ...
    
      defaultConfig {
          applicationId = "com.yourcompany.yourapp"
          minSdkVersion(MSBUILD_MIN_SDK_VERSION)
          // ...
      }
    
      // ...
    }
    
  • MSBUILD_ANDROID_OUTPUT_APK_NAME: Der erwartete Name des von Gradle erstellten APK. Die Android Game Development Extension sucht nach einem APK mit diesem Namen und stellt es dann auf verbundenen Geräten bereit, um Fehler zu beheben und ein Profil zu erstellen. Legen Sie diesen Wert auf der Seite mit den Projekteigenschaften (siehe Abbildung 3) im Feld APK Name (APK-Name) fest.


    Abbildung 3: Eigenschaft APK Name

    Diese Eigenschaft muss im Gradle-Build-Skript berücksichtigt werden. Im folgenden Beispiel wird der Name des Ausgabe-APKs für alle Varianten auf den von MSBuild ausgewählten Namen festgelegt.

    Groovig

    android {
      // ...
    
      applicationVariants.all { variant ->
          variant.outputs.all {
              outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME
          }
      }
    
      // ...
    }
    

    Kotlin

    android {
      // ...
    
      applicationVariants.all { variant ->
          variant.outputs.all {
              outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME
          }
      }
    
      // ...
    }
    
  • MSBUILD_JNI_LIBS_SRC_DIR: Das Verzeichnis, das die von MSBuild erstellten gemeinsam genutzten Bibliotheken (.so-Dateien) enthält. Legen Sie diesen Wert im Feld Ausgabeverzeichnis auf der unten gezeigten Seite der Projekteigenschaften fest. Dieser Wert ist standardmäßig die Eigenschaft des Ausgabeverzeichnisses für das Visual Studio-Projekt, wie in Abbildung 4 dargestellt.


    Abbildung 4: Attribut Ausgabeverzeichnis

    Gradle sollte die Dateien der gemeinsam genutzten Bibliothek in diesem Ordner im APK verpacken, damit die Android-App sie zur Laufzeit laden kann.

    Groovig

    android {
      // ...
    
      sourceSets {
          main {
              jniLibs.srcDirs += [MSBUILD_JNI_LIBS_SRC_DIR]
          }
      }
    
      // ...
    }
    

    Kotlin

    android {
      // ...
    
      sourceSets.getByName("main") {
          jniLibs.srcDir(MSBUILD_JNI_LIBS_SRC_DIR)
      }
    
      // ...
    }
    

    Da jeder C/C++-Code jetzt von MSBuild erstellt wird, müssen Sie außerdem die externalNativeBuild-Abschnitte in Ihren Gradle-Build-Skripts entfernen. Diese Abschnitte wurden verwendet, um CMake oder ndk-build aufzurufen, um Ihren C/C++-Code zu kompilieren, werden aber nicht mehr benötigt.

  • MSBUILD_NDK_VERSION: Die Version des NDK, mit dem Ihr Projekt erstellt werden soll. Legen Sie diesen Wert auf der Seite der Projekteigenschaften (siehe Abbildung 5) im Feld Android NDK Version (Android-NDK-Version) fest.


    Abbildung 5: Eigenschaft Android-NDK-Version

    Im Gradle-Build-Skript sollte ndkVersion auf diesen Wert festgelegt werden, wie hier gezeigt:

    Groovig

    android {
      // ...
    
      ndkVersion MSBUILD_NDK_VERSION
    
      // ...
    }
    

    Kotlin

    android {
      // ...
    
      ndkVersion = MSBUILD_NDK_VERSION
    
      // ...
    }
    

    Weitere Informationen finden Sie im Android Studio-Thema NDK und CMake installieren und konfigurieren.