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 a nova As plataformas Android instaladas no seu sistema como parte da extensão (para 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:
- Selecione Compilação > Configuration Manager.
- Em Plataforma de solução ativa, selecione <Nova>.
Digite uma das seguintes opções para a nova plataforma:
- Android-armeabi-v7a (link em inglês)
- Android-arm64-v8a (link em inglês)
- Android x86 (link em inglês)
- Android-x86_64 (link em inglês)
Na caixa Copiar configurações de, selecione outro dispositivo Android plataforma ou <Empty> se você ainda não tem plataformas Android. Verifique se você ativou a opção Criar novas plataformas de projeto.
Adicionar um item do APK do Android
Selecione Adicionar > Novo item > Visual C++ > Android > APK do Android e clique em Adicionar. 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. É possível personalizar selecionando Colocar arquivos de suporte em um local personalizado e especificando um local personalizado. 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 deapp
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.