Plug-in do Android para Gradle 8.1.0 (julho de 2023)

O Plug-in do Android para Gradle 8.1.0 é uma versão principal que inclui vários novos recursos e melhorias.

Compatibilidade

Versão mínima Versão padrão Observações
Gradle 8.0 8.0 Para saber mais, consulte Como atualizar o Gradle.
Ferramentas de build do SDK 33.0.1 33.0.1 Instale ou configure as Ferramentas de build do SDK.
NDK N/A 25.1.8937393 Instale ou configure uma versão diferente do NDK.
JDK 17 17 Para saber mais, consulte Como configurar a versão do JDK.

A DSL do Kotlin é o padrão para configuração do build

Novos projetos agora usam a DSL do Kotlin (build.gradle.kts) por padrão para configuração do build. Isso oferece uma experiência de edição melhor do que a DSL do Groovy (build.gradle), com destaque de sintaxe, preenchimento de código e navegação para declarações. Se você estiver usando o AGP 8.1 e a DSL do Kotlin para configuração do build, use o Gradle 8.1 para ter a melhor experiência. Para saber mais, consulte o guia de migração de DSL do Kotlin.

Suporte automático ao idioma por app

No Android Studio Giraffe Canary 7 e no AGP 8.1.0-alpha07 e versões mais recentes, é possível configurar seu app para oferecer suporte a seleção de idioma por app automaticamente. Com base nos recursos do projeto, o Plug-in do Android para Gradle gera o arquivo LocaleConfig e adiciona uma referência a ele no arquivo de manifesto final. Assim, não é mais necessário fazer isso manualmente. O AGP usa os recursos nas pastas res dos módulos do app e qualquer dependência de módulos de biblioteca para determinar as localidades que serão incluídas no arquivo LocaleConfig.

O recurso automático de idioma por app tem suporte de apps com o Android 13 (nível 33 da API) ou mais recente. Para usar o recurso, defina compileSdkVersion como 33 ou maior. Para configurar a seleção de idioma por app em versões anteriores do Android, ainda é necessário usar as APIs e os seletores de idioma no app.

Para ativar o suporte automático ao idioma por app, especifique uma localidade padrão:

  1. Na pasta res do módulo do app, crie um novo arquivo chamado resources.properties.
  2. No arquivo resources.properties, defina a localidade padrão com o rótulo unqualifiedResLocale. Para formar os nomes de localidade, combine o código do idioma com o script opcional e os códigos de região, separando cada um com um traço:

    • Idioma: use o código ISO 639-1 de duas ou três letras.
    • Script (opcional): use o código ISO 15924 (link em inglês).
    • Região (opcional): use o código ISO 3166-1-alpha-2 de duas letras ou o código UN_M.49 (link em inglês) de três dígitos.

    Por exemplo, se a localidade padrão for inglês dos EUA:

        unqualifiedResLocale=en-US
        

O AGP adiciona a localidade padrão e qualquer outra localidade alternativa que você tenha especificado (usando diretórios values-* na pasta res) ao arquivo LocaleConfig gerado automaticamente.

O suporte automático ao idioma por app fica desativado por padrão. Para ativar o recurso, use a configuração generateLocaleConfig no bloco androidResources {} do arquivo build.gradle.kts do módulo (arquivo build.gradle, se você estiver usando Groovy):

Kotlin

android {
  androidResources {
    generateLocaleConfig = true
  }
}

Groovy

android {
  androidResources {
    generateLocaleConfig true
  }
}

O Android Lint contém bytecode direcionado à JVM 17

A partir do AGP 8.1.0-alpha04, o Android Lint contém bytecode direcionado à JVM 17. Se você escrever verificações de lint personalizadas, precisará compilar com o JDK 17 ou versão mais recente e especificar jvmTarget = '17' nas opções do compilador Kotlin.

Para saber mais sobre a ferramenta lint, consulte Melhorar seu código com verificações de lint.

A configuração de compactação da biblioteca nativa foi movida para DSL

A partir do AGP 8.1.0-alpha10, você vai receber um aviso se não configurar a compactação da biblioteca nativa usando a DSL em vez do manifesto. A orientação a seguir explica como atualizar sua configuração para usar a DSL. Para receber ajuda com essas atualizações, use o Assistente de upgrade do AGP (Tools > AGP Upgrade Assistant).

Para usar bibliotecas nativas descompactadas, remova o atributo android::extractNativeLibs do manifesto e adicione o seguinte código ao arquivo build.gradle.kts no módulo (arquivo build.gradle, se você estiver usando o Groovy):

Kotlin

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging = false
    }
  }
}

Groovy

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging false
    }
  }
}

Sinalizações de build experimentais

Estas são flags experimentais para configurar seu build disponível no AGP 8.1.

Sinalização Adicionado em Valor padrão Observações
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes AGP 8.0 false Ativar essa opção sem configurações de assinatura especificadas faz com que o AGP use a configuração padrão de assinatura de depuração ao executar um build com perfil ou depurável. Essa sinalização está desativada por padrão para incentivar os autores da compilação a declarar configurações de assinatura de criação de perfil específicas.
android.experimental.library.desugarAndroidTest AGP 8.0 false Essa flag permite que os builders de biblioteca ativem a simplificação da biblioteca principal para APKs de teste sem afetar o AAR produzido, por exemplo, por meio de inspeção. Planejamos oferecer compatibilidade com esse comportamento na API Variant.
android.experimental.testOptions.managedDevices.customDevice AGP 8.0 false Se ativados, os dispositivos gerenciados pelo Gradle permitem um tipo de dispositivo personalizado definido pelo usuário que pode ser fornecido por um plug-in. Essa sinalização precisará estar ativada se você quiser usar o plug-in do Firebase Test Lab.
android.lint.printStackTrace AGP 8.0 false Se ativado, o lint do Android vai mostrar um stack trace em caso de falha. Essa sinalização tem os mesmos recursos da variável de ambiente LINT_PRINT_STACKTRACE.
android.experimental.testOptions.managedDevices.maxConcurrentDevices AGP 8.0 Nenhum Especifica o número máximo de dispositivos gerenciados pelo Gradle (AVDs) simultâneos a serem ativos em qualquer momento. Se o valor for 0 ou negativo, não haverá um número máximo de dispositivos.
android.experimental.testOptions.installApkTimeout AGP 8.0 Nenhum A duração do tempo limite em segundos para instalar um APK. Se o valor for 0 ou negativo, ele será definido como um valor padrão pelo UTP.