Configurare un progetto

Configura un progetto per l'utilizzo dell'estensione Android Game Development.

L'estensione per lo sviluppo dei giochi Android richiama MSBuild per creare il codice sorgente C/C++ in librerie condivise (.so) e librerie statiche (.a). Come parte del processo di compilazione, un'attività MSBuild personalizzata richiama Gradle per compilare il codice sorgente Java e Kotlin, creare pacchetti di asset e generare un file APK per il deployment. Quando configuri il tuo progetto, devi assicurarti che MSBuild abbia le informazioni necessarie per creare per la piattaforma Android.

Crea C/C++ con MSBuild

Un tipico progetto Android viene creato con Gradle, in cui il codice nativo all'interno del progetto viene creato da un passaggio Gradle che esegue CMake o ndk-build. Con l'estensione Android Game Development for Visual Studio, il processo di compilazione viene invertito. MSBuild è il punto di partenza del processo di compilazione. Tutto il codice sorgente C/C++ viene creato prima da MSBuild per le nuove piattaforme Android installate nel sistema come parte dell'estensione (ad esempio "Android-x86_64"). MSBuild richiama quindi Gradle per pacchettizzare i file della libreria condivisa che contengono la tua logica C/C++ in un APK.

Devi prima replicare la logica di build esistente del tuo progetto in CMake o ndk-build in MSBuild. Imposta le piattaforme di destinazione come segue:

  • Android x86
  • Android-x86_64
  • Android-Armeabi-v7a
  • Android-Arm64-v8a

Queste piattaforme sono tutte fornite dall'estensione Android Game Development.

Aggiungi una piattaforma Android

Anche se il progetto di esempio contiene piattaforme Android, devi aggiungere manualmente una piattaforma Android a un progetto esistente. Per aggiungere una nuova piattaforma, segui questa procedura in Visual Studio:

  1. Seleziona Build > Configuration Manager.
  2. In Piattaforma soluzione attiva, seleziona <Nuova>.
  3. Digita uno dei seguenti valori per la nuova piattaforma:

    • Android-armeabi-v7a
    • Android-arm64-v8a
    • Android x86
    • Android-x86_64
  4. Nella casella Copia impostazioni da, seleziona un'altra piattaforma Android oppure <Vuoto> se non disponi ancora di piattaforme Android. Assicurati di aver attivato l'opzione Crea nuove piattaforme di progetto.

Aggiungere un elemento APK Android

Seleziona Aggiungi > Nuovo elemento > Visual C++ > Android > APK Android e fai clic su Aggiungi. Configura l'applicazione Android nella finestra di dialogo seguente.

  • Nome applicazione. Il nome leggibile della tua applicazione Android.
  • ID applicazione: l'identificatore univoco dell'applicazione Android.
  • Posizione Esplora soluzioni: posizione della cartella virtuale che contiene i file di supporto per la pacchettizzazione di Android aggiunti. Per impostazione predefinita, questi file vengono anche trovati nel progetto in una cartella con lo stesso nome. Puoi personalizzare la posizione selezionando la casella di controllo Metti i file di supporto in una posizione personalizzata e specificando una posizione personalizzata. La cartella virtuale continuerà a essere sotto il progetto corrente in Esplora soluzioni.

Fare in modo che MSBuild richiami Gradle per creare un APK

MSBuild non può richiamare Gradle a meno che non conosca la posizione del progetto Gradle. Imposta questa località utilizzando la proprietà Gradle Build Directory, come mostrato nella Figura 1.


Figura 1. Proprietà Gradle Build Directory

Inoltre, imposta le proprietà Modulo di applicazione, Variante dell'applicazione e Nome APK (come mostrato nell'immagine precedente) in modo che MSBuild sappia cosa creare.

  • Modulo di applicazione: il nome del sottoprogetto Gradle. Questo è il progetto principale impostato nel file settings.gradle. Di solito viene chiamato app per i progetti creati direttamente con Android Studio.
  • Variante dell'applicazione: la variante Android da creare. Questo valore deve essere impostato in base alle configurazioni di MSBuild. Ad esempio, una build di debug deve avere un valore impostato sulla variante di debug. Se il nome della configurazione MSBuild del progetto corrisponde ai nomi delle varianti Gradle, utilizza semplicemente il valore predefinito $(Configuration).
  • Nome APK: il nome del file APK generato, utilizzato per il debug e la profilazione sul computer di sviluppo. Questo nome viene passato a Gradle e lo script di build Gradle deve rispettarlo (consulta la proprietà MSBUILD_ANDROID_OUTPUT_APK_NAME nella sezione seguente).

Modificare gli script di build Gradle

Durante la build, MSBuild passa le seguenti informazioni come proprietà di progetto allo script Gradle. Modifica gli script di build esistenti del tuo progetto (in genere denominati build.gradle) per leggere queste proprietà.

  • MSBUILD_MIN_SDK_VERSION: la versione minima dell'SDK per la creazione dell'APK. Imposta questo valore nella casella Versione minima dell'SDK Android nella pagina della proprietà del progetto mostrata nella Figura 2.


    Figura 2. Proprietà Versione minima dell'SDK Android

    Lo script di build Gradle deve impostare minSdkVersion su questo valore, come mostrato di seguito.

    Trendy

    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: il nome previsto dell'APK creato da Gradle. L'estensione Android Game Development cerca un APK corrispondente a questo nome, quindi lo implementa sui dispositivi connessi (per il debug e la profilazione). Imposta questo valore nella casella Nome APK sulla pagina della proprietà del progetto mostrata nella figura 3.


    Figura 3. Proprietà Nome APK

    Lo script di build Gradle deve rispettare questa proprietà. Ad esempio, nell'esempio seguente il nome dell'APK di output per tutte le varianti viene impostato sul nome scelto da MSBuild.

    Trendy

    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: la directory contenente le librerie condivise (.so file) create da MSBuild. Imposta questo valore nella casella Directory di output nella pagina della proprietà del progetto mostrata di seguito. Per impostazione predefinita, questo valore è la proprietà della directory di output per il progetto Visual Studio, come mostrato nella Figura 4.


    Figura 4. Proprietà Directory di output

    Gradle deve pacchettizzare i file delle librerie condivise in questa cartella all'interno dell'APK in modo che l'applicazione Android li carichi in fase di runtime.

    Trendy

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

    Kotlin

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

    Inoltre, poiché ora qualsiasi codice C/C++ viene creato da MSBuild, rimuovi le sezioni externalNativeBuild negli script di build per Gradle. Queste sezioni erano utilizzate per richiamare CMake o ndk-build per compilare il tuo codice C/C++, ma non sono più necessarie.

  • MSBUILD_NDK_VERSION: la versione dell'NDK da utilizzare per creare il progetto. Imposta questo valore nella casella Versione NDK Android nella pagina della proprietà del progetto mostrata nella Figura 5.


    Figura 5. Proprietà Versione NDK di Android

    Lo script di build Gradle deve impostare ndkVersion su questo valore, come mostrato di seguito:

    Trendy

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

    Kotlin

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

    Per ulteriori informazioni, consulta l'argomento Android Studio Installare e configurare NDK e CMake.