Configurar um projeto

Configure um projeto para usar a Android Game Development Extension.

A Android Game Development Extension invoca o MSBuild para criar o código-fonte em C/C++ como bibliotecas compartilhadas (.so) e estáticas (.a). Como parte do processo de compilação, uma tarefa MSBuild personalizada invoca o Gradle para compilar o código-fonte Java e Kotlin, empacotar os recursos e gerar um arquivo APK para implantação. Ao configurar seu projeto, você precisa garantir que o MSBuild tenha as informações necessárias para criar para a plataforma Android.

Criar em C/C++ com o MSBuild

O Gradle é usado para criar projetos típicos do Android, em que o código nativo do projeto é criado por uma transmissão do Gradle que executa o CMake ou o ndk-build. Com a Android Game Development Extension para Visual Studio, o processo de compilação é invertido. O MSBuild passa a ser o ponto de partida do processo de compilação. Todo o código-fonte C/C++ é criado primeiro pelo MSBuild para as novas plataformas Android instaladas no sistema como parte da extensão (por exemplo, "Android-x86_64"). Em seguida, o MSBuild invoca o Gradle para empacotar os arquivos da biblioteca compartilhada que contêm a lógica C/C++ em um APK.

Primeiro, é preciso replicar a lógica de build já existente do seu projeto no CMake ou do ndk-build no MSBuild. Defina as plataformas de destino da seguinte maneira:

  • Android x86
  • Android x86_64
  • Android-armeabi-v7a
  • Android arm64-v8a

Todas essas plataformas são fornecidas pela Android Game Development Extension.

Adicionar uma plataforma Android

Embora o exemplo de projeto Teapot esteja incluído em plataformas Android, é necessário adicionar manualmente uma plataforma Android a um projeto existente. Para adicionar uma nova plataforma, faça o seguinte no Visual Studio:

  1. Selecione Compilação > Configuration Manager.
  2. Em Plataforma de solução ativa, selecione <Nova>.
  3. Digite uma das seguintes opções para a nova plataforma:

    • Android-armeabi-v7a (link em inglês)
    • Android-arm64-v8a
    • Android x86
    • Android-x86_64 (link em inglês)
  4. Na caixa Copy settings from, selecione outra plataforma Android ou <Empty> se você ainda não tiver nenhuma plataforma Android. Verifique se você ativou a opção Criar novas plataformas de projeto.

Adicionar um item do APK do Android

Selecione Add > New Item > Visual C++ > Android > Android APK e clique em Add. Configure o app Android na caixa de diálogo a seguir.

  • Nome do aplicativo: o nome legível por humanos do seu app Android.
  • ID do aplicativo: o identificador exclusivo do seu app Android.
  • Local do Explorador de Soluções: local da pasta virtual que contém os arquivos de compatibilidade de empacotamento do Android que você adicionou. Por padrão, esses arquivos também estão localizados em uma pasta com o mesmo nome no projeto. Para personalizar o local, marque a caixa de seleção Colocar arquivos de suporte em um local personalizado e especifique um local. A pasta virtual ainda estará no projeto atual no Solution Explorer.

Fazer o MSBuild invocar o Gradle para criar um APK

O MSBuild não pode invocar o Gradle, a menos que saiba em qual local o projeto Gradle está armazenado. Defina esse local usando a propriedade do Diretório de Build do Gradle, conforme mostrado na figura 1.


Figura 1. Propriedade do Diretório de Build do Gradle.

Além disso, defina as propriedades do Módulo do aplicativo, da Variante do aplicativo e do Nome do APK (como mostrado na imagem anterior) para que o MSBuild saiba o que será criado.

  • Módulo do aplicativo: o nome do subprojeto do Gradle. Essa é a configuração principal do projeto definida no arquivo settings.gradle. Geralmente, ela é chamada de app em projetos criados usando o Android Studio diretamente.
  • Variante do app: a variante do Android a ser criada. Esse valor precisa ser definido de acordo com as configurações do MSBuild. Por exemplo, um build de depuração precisa ter um valor definido para a variante de depuração. Se o nome da configuração do MSBuild do projeto for igual aos nomes das variantes do Gradle, use apenas o valor padrão $(Configuration).
  • Nome do APK: o nome do arquivo APK gerado para depuração e criação de perfil no computador de desenvolvimento. Esse nome é transmitido ao Gradle, e seu script de build do Gradle precisa respeitá-lo. Consulte a propriedade MSBUILD_ANDROID_OUTPUT_APK_NAME na seção a seguir.

Modificar os scripts de build do Gradle

Durante a criação, o MSBuild transmite as seguintes informações como propriedades do projeto para o script do Gradle. Mude os scripts de build atuais do seu projeto (geralmente chamados de build.gradle) para ler estas propriedades.

  • MSBUILD_MIN_SDK_VERSION: a versão mínima do SDK para criar o APK. Defina esse valor na caixa Versão mínima do SDK do Android na página de propriedades do projeto, conforme mostrado na figura 2.


    Figura 2. Propriedade da Versão mínima do SDK do Android.

    O script de build do Gradle precisa definir a minSdkVersion com esse valor, conforme mostrado abaixo.

    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: o nome esperado do APK que o Gradle criará. A Android Game Development Extension procurará um APK que corresponda a esse nome e o implantará nos dispositivos conectados (para depuração e criação de perfil). Defina esse valor na caixa Nome do APK na página de propriedades do projeto, conforme mostrado na figura 3.


    Figura 3. Propriedade Nome do APK.

    O script de build do Gradle precisa respeitar essa propriedade. O exemplo a seguir define o nome do APK de saída de todas as variantes como o nome escolhido pelo 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: o diretório que contém as bibliotecas compartilhadas (arquivos .so) criadas pelo MSBuild. Defina esse valor na caixa Diretório de saída na página de propriedades do projeto, conforme mostrado abaixo. Por padrão, esse valor é a propriedade do diretório de saída para o projeto do Visual Studio, como mostrado na figura 4.


    Figura 4. Propriedade do Diretório de saída.

    O Gradle precisa empacotar os arquivos da biblioteca compartilhada nessa pasta no APK para que o app Android os carregue durante a execução.

    Groovy

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

    Kotlin

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

    Além disso, como todos os códigos C/C++ agora são criados pelo MSBuild, remova as seções externalNativeBuild nos scripts de build do Gradle. Essas seções foram usadas para invocar o CMake ou o ndk-build para compilar o código C/C++, mas não são mais necessárias.

  • MSBUILD_NDK_VERSION: a versão do NDK que será usada para criar o projeto. Defina esse valor na caixa Versão do NDK do Android na página de propriedades do projeto, conforme mostrado na figura 5.


    Figura 5. Propriedade da Versão do NDK do Android.

    O script de build do Gradle precisa definir ndkVersion como esse valor, conforme mostrado:

    Groovy

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

    Kotlin

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

    Para saber mais, consulte o tópico do Android Studio Instalar e configurar o NDK e o CMake.