Configurare un progetto

Configura un progetto per utilizzare l'estensione Android Game Development.

L'estensione Android Game Development richiama MSBuild per compilare il codice sorgente C/C++ in librerie condivise (.so) e statiche (.a). Nell'ambito del processo di compilazione, un compito MSBuild personalizzato richiama Gradle per compilare il codice sorgente Java e Kotlin, impacchettare gli asset e generare un file APK per il deployment. Quando configuri il progetto, devi assicurarti che MSBuild disponga delle informazioni necessarie per la compilazione per la piattaforma Android.

Compilare C/C++ con MSBuild

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

Devi prima replicare la logica di compilazione esistente del progetto in CMake o in 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.

AGDE utilizza l'NDK selezionato per determinare le opzioni di compilazione e collegamento predefinite prilikom izgradnje di C/C++ della tua app.

Se devi personalizzare queste opzioni di compilazione o collegamento, puoi impostarle utilizzando Proprietà progetto. Puoi trovare le opzioni più comuni nei gruppi C/C++ (per la compilazione), Librarian (per l'archiviazione delle librerie statiche) e Linker (per il collegamento delle librerie dinamiche). Se devi passare altre opzioni personalizzate, puoi aggiungerle alla sezione della riga di comando. Ad esempio, se utilizzi un NDK precedente alla versione r28, ti consigliamo di impostare il flag del linker per fare in modo che la tua app supporti dimensioni di pagina di 16 KB.

Aggiungere una piattaforma Android

Sebbene il progetto di esempio della teiera includa piattaforme Android, devi aggiungere manualmente una piattaforma Android a un progetto esistente. Per aggiungere una nuova piattaforma, segui la procedura riportata di seguito in Visual Studio:

  1. Seleziona Build > Configuration Manager.
  2. In Piattaforma di soluzioni attive, seleziona <Nuova>.
  3. Digita una delle seguenti opzioni 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 esistente o <Vuoto> se non hai ancora 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 dell'applicazione: il nome leggibile dell'applicazione per Android.
  • ID applicazione: l'identificatore univoco della tua applicazione Android.
  • Posizione di Esplora soluzioni: posizione della cartella virtuale che contiene i file di supporto per il packaging Android aggiunti. Per impostazione predefinita, questi file si trovano anche nel progetto in una cartella con lo stesso nome. Puoi personalizzare la posizione selezionando la casella di controllo Metti i file di assistenza in una posizione personalizzata e specificando una posizione personalizzata. La cartella virtuale rimarrà nel progetto corrente in Esplora soluzioni.

Fai in modo che MSBuild richiami Gradle per compilare un APK

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


Figura 1. Proprietà Gradle Build Directory

Inoltre, imposta le proprietà Application Module, Application Variant e APK Name (come mostrato nell'immagine precedente) affinché MSBuild sappia cosa compilare.

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

Modificare gli script di build di Gradle

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

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


    Figura 2. Proprietà Versione SDK Android minima

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

    Groovy

    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 compilato da Gradle. L'estensione Android Game Development cercherà un APK corrispondente a questo nome e lo implementerà sui dispositivi connessi (per il debug e la profilazione). Imposta questo valore nella casella Nome APK nella 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, il seguente esempio imposta il nome dell'APK di output per tutte le varianti sul nome scelto da MSBuild.

    Groovy

    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 raccolte condivise (file .so) create da MSBuild. Imposta questo valore nella casella Output Directory 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 della libreria condivisa in questa cartella all'interno dell'APK in modo che l'applicazione Android possa caricarli in fase di esecuzione.

    Groovy

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

    Kotlin

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

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

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


    Figura 5. Proprietà Android NDK Version

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

    Groovy

    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.