Plug-in do Android para Gradle 4.2.0 (março de 2021)
Compatibilidade
Versão mínima | Versão padrão | Observações | |
---|---|---|---|
Gradle | 6.7.1 | N/A | Para saber mais, consulte Como atualizar o Gradle. |
Ferramentas de build do SDK | 30.0.2 | 30.0.2 | Instale ou configure as Ferramentas de build do SDK. |
NDK | N/A | 21.4.7075529 | Instale ou configure uma versão diferente do NDK. |
Novos recursos
Esta versão do Plug-in do Android para Gradle inclui os novos recursos a seguir.
Versão 8 da linguagem Java como padrão
A partir da versão 4.2, o AGP usará o nível de linguagem Java 8 por padrão. O Java 8 oferece acesso a vários recursos de linguagem mais recentes, incluindo lambda. expressões, referências de método e métodos de interface estática. Para acessar a lista completa de recursos compatíveis, consulte a documentação do Java 8.
Para manter o comportamento antigo, especifique o Java 7 explicitamente no nível do módulo
Arquivo build.gradle.kts
ou build.gradle
:
// build.gradle
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
// build.gradle.kts
android {
...
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
Novo compilador de recursos do JVM
Um novo compilador de recursos da JVM na ferramenta do Plug-in do Android para Gradle 4.2 substitui partes do compilador de recursos AAAPT2, possivelmente melhorando o desempenho do build, especialmente em máquinas Windows. A nova JVM o compilador de recursos está ativado por padrão.
A assinatura de v3 e v4 agora é compatível
O Plug-in do Android para Gradle 4.2 agora é compatível com o APK v3.
e de assinatura do APK v4.
Para ativar um ou ambos os formatos na sua
build, adicione as seguintes propriedades ao nível do módulo build.gradle
ou arquivo build.gradle.kts
:
// build.gradle
android {
...
signingConfigs {
config {
...
enableV3Signing true
enableV4Signing true
}
}
}
// build.gradle.kts
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}
A assinatura do APK v4 permite implantar rapidamente APKs grandes usando o adb Instalação incremental de APK no Android 11 Essa nova flag cuida da etapa de assinatura do APK na implantação de desenvolvimento de software.
Configurar a assinatura de apps por variante
Agora é possível ativar ou desativar a assinatura de apps no Android para Gradle. por variante.
Este exemplo demonstra como definir a assinatura de apps por variante usando o
onVariants()
no Kotlin ou no Groovy:
androidComponents {
onVariants(selector().withName("fooDebug"), {
signingConfig.enableV1Signing.set(false)
signingConfig.enableV2Signing.set(true)
})
Nova propriedade do Gradle:
android.native.buildOutput
Para reduzir a sobrecarga na saída do build, o AGP 4.2 filtra as mensagens.
de builds nativos que usam CMake e ndk-build
mostrando apenas a saída do compilador C/C++ por padrão. Antes, uma linha de saída
foi gerada para cada arquivo que foi criado, resultando em uma grande quantidade de
mensagens informativas.
Se você quiser ver toda a saída nativa, defina o novo
a propriedade android.native.buildOutput
do Gradle como verbose
.
É possível definir essa propriedade no arquivo gradle.properties
ou pelo
linha de comando.
gradle.properties
android.native.buildOutput=verbose
Linha de comando
-Pandroid.native.buildOutput=verbose
O valor padrão dessa propriedade é quiet
.
Mudança de comportamento para arquivos gradle.properties
A partir do AGP 4.2, não é mais possível substituir as propriedades do Gradle.
de subprojetos. Em outras palavras, se você declarar uma propriedade em um
Arquivo gradle.properties
em um subprojeto em vez da raiz
projeto, ele será ignorado.
Por exemplo, em versões anteriores, o AGP iria ler valores de
<var>projectDir</var>/gradle.properties
,
<var>projectDir</var>/app/gradle.properties
,
<var>projectDir</var>/library/gradle.properties
,
Para módulos de apps, se a mesma propriedade do Gradle estiver presente nos dois
<var>projectDir</var>/gradle.properties
e
<var>projectDir</var>/app/gradle.properties
,
o valor de
<var>projectDir</var>/app/gradle.properties
teriam precedência.
No AGP 4.2, esse comportamento mudou, e o AGP não carrega valores de
gradle.properties
em subprojetos (por exemplo,
<var>projectDir</var>/app/gradle.properties
).
Essa mudança reflete
novo comportamento do Gradle e oferece suporte
armazenamento de configuração em cache
Para mais informações sobre como definir valores em gradle.properties
, consulte a
Documentos do Gradle (link em inglês).
Mudanças na configuração e compatibilidade do Gradle
Quando a ferramenta de build do Gradle é executada no Android Studio, ela usa o JDK empacotado no Studio. Em versões anteriores, o JDK 8 era incluído no Studio. No entanto, na versão 4.2, o JDK 11 agora é incluído. Ao usar o novo JDK incluído para executar o Gradle, isso pode resultar em alguma incompatibilidade ou afetar a performance do JVM devido a mudanças no coletor de lixo. Esses problemas estão descritos abaixo.
Observação:embora seja recomendado executar o Gradle com o JDK 11, é alterar o JDK usado para executar o Gradle no Estrutura do projeto caixa de diálogo. Alterar essa configuração só mudará o JDK usado para executar o Gradle. não alterará o JDK usado para executar o Studio.
Compatibilidade do Studio com o Android Plug-in do Gradle (AGP)
O Android Studio 4.2 pode abrir projetos que usam o AGP 3.1 e desde que o AGP esteja executando o Gradle 4.8.1 ou mais recente. Para mais informações sobre a compatibilidade do Gradle, consulte Atualize o Gradle.
Como otimizar os builds do Gradle para o JDK 11
Essa atualização do JDK 11 afeta a configuração padrão do lixo da JVM coletor, já que o JDK 8 usa o coletor de lixo paralelo, enquanto o JDK 11 usa as Coletor de lixo G1 (link em inglês).
Para melhorar o desempenho do build, recomendamos
testar os builds do Gradle com a
coletor de lixo paralelo. Em gradle.properties
, defina:
org.gradle.jvmargs=-XX:+UseParallelGC
Se já houver outras opções definidas nesse campo, adicione uma nova opção:
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC
Para medir a velocidade do build com diferentes configurações, consulte Criar perfil para seu build.
Arquivos DEX descompactados em APKs quando o valor de minSdk
for igual a 28 ou mais
Por padrão, o AGP agora empacota arquivos DEX descompactados em APKs quando minSdk
= 28 ou
mais alto. Isso causa um aumento no tamanho do APK, mas resulta em um tamanho menor
o tamanho da instalação no dispositivo, e o tamanho do download é praticamente o mesmo.
Para forçar o AGP a empacotar os arquivos DEX compactados, adicione o
seguinte ao seu arquivo build.gradle
:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
Usar a DSL para empacotar bibliotecas nativas compactadas
Recomendamos empacotar bibliotecas nativas em formato descompactado, porque isso
resulta em um tamanho de instalação do aplicativo menor, um tamanho de download do aplicativo menor e um aplicativo mais rápido
tempo de carregamento
para seus usuários. No entanto, se você quiser que o Plug-in do Android para Gradle
empacotar bibliotecas nativas compactadas ao criar o app, definir
useLegacyPackaging
para true
no arquivo build.gradle
do seu app:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
A sinalização useLegacyPackaging
substitui o atributo de manifesto extractNativeLibs
. Para mais informações, consulte a nota da versão
Bibliotecas nativas empacotadas descompactadas por padrão.