Introdução: Seu projeto não compila? Você não está sozinho
\n\nImagine: você está programando em Kotlin, tudo indo bem, mas de repente — bum! — a compilação falha com uma mensagem misteriosa: The minCompileSdk (31) specified in a dependency's AAR metadata. Dor familiar? Esse erro é um dos "tropeços" mais populares no Stack Overflow (milhares de visualizações e centenas de comentários). Ele ocorre quando você usa uma biblioteca que requer uma versão mais recente do compileSdk do que a configurada no seu projeto.
Neste artigo, vamos analisar como corrigir o erro minCompileSdk (31) nos metadados AAR para projetos em Kotlin e Java. Você aprenderá as causas, obterá soluções prontas e entenderá como evitar esse problema no futuro. Vamos lá!
\n\nO que é minCompileSdk e por que ele quebra a compilação?
\n\nVamos começar com a teoria. Cada projeto Android tem seu próprio compileSdk — a versão do Android SDK com a qual ele é compilado. As bibliotecas (AAR) também podem especificar um compileSdk mínimo que precisam. Se a sua versão for inferior — o Gradle emite um erro. Isso é uma proteção contra incompatibilidade: a biblioteca pode usar APIs que não existem em SDKs antigos.
O erro The minCompileSdk (31) specified in a dependency's AAR metadata literalmente diz: "Ei, esta biblioteca requer compilação com SDK 31 (Android 12) ou superior, mas você está usando uma versão menor!".
Cenários típicos de ocorrência
\n- \n
- Você adicionou uma nova biblioteca (por exemplo,
androidx.composeouFirebase) que foi atualizada para exigir SDK 31+. \n - Você está usando um modelo de projeto antigo com
compileSdk = 30. \n - Você esqueceu de atualizar o Gradle e as SDK Tools. \n
Como corrigir o erro minCompileSdk (31) em AAR: 3 maneiras comprovadas
\n\nAqui estão as soluções passo a passo para Kotlin e Java. Observe: o código está em Kotlin (DSL), mas a lógica é a mesma para Groovy.
\n\nMétodo 1: Aumentar o compileSdk (recomendado)
\nO caminho mais correto é atualizar o compileSdk para a versão exigida pela biblioteca. Geralmente é 31 (Android 12) ou 33 (Android 13).
Passos:
\n- \n
- Abra o arquivo
build.gradle.kts(nível do móduloapp). \n - Encontre a seção
android. \n - Altere o
compileSdkpara o valor exigido. \n
android {\n compileSdk = 33 // Ou 31, 32 — dependendo dos requisitos\n\n defaultConfig {\n minSdk = 21\n targetSdk = 33\n // ...\n }\n}\n\n\nPor que isso funciona? Você simplesmente atende aos requisitos da dependência. Se a biblioteca pede SDK 31, dê a ela SDK 31. Não se esqueça também de instalar o SDK correspondente no Android Studio (SDK Manager → Android 12.0 (API 31)).
\n\nMétodo 2: Reduzir a versão da biblioteca
\nSe você não quiser aumentar o compileSdk (por exemplo, devido à compatibilidade com dispositivos antigos), pode reverter a biblioteca para uma versão que não exija SDK 31.
Exemplo: Em vez de implementation("androidx.compose:compose-bom:2023.10.01"), use uma versão mais antiga, como 2022.10.00.
dependencies {\n // Era (causa o erro)\n // implementation("androidx.compose:compose-bom:2023.10.01")\n\n // Agora (versão estável sem exigência de SDK 31+)\n implementation("androidx.compose:compose-bom:2022.10.00")\n}\n\n\nEsta é uma solução temporária, mas ajuda se você estiver preso a um SDK antigo. A principal desvantagem é que você perde novos recursos e correções de segurança.
\n\nMétodo 3: Sobrescrever o minCompileSdk via Gradle (exótico)
\nExiste um método engenhoso, mas não documentado — sobrescrever os metadados AAR através da configuração do Gradle. Este método não é recomendado para produção, mas pode salvar se a biblioteca não for atualizada.
\n\nandr