Introducción: ¿Tu proyecto no se compila? No estás solo
\n\nImagina: estás escribiendo en Kotlin, todo va perfecto, pero de repente —¡pum!— la compilación falla con un mensaje misterioso: The minCompileSdk (31) specified in a dependency's AAR metadata. ¿Un dolor familiar? Este error es uno de los "rastrillos" más populares en Stack Overflow (miles de visitas y cientos de comentarios). Ocurre cuando usas una librería que requiere una versión de compileSdk más reciente que la configurada en tu proyecto.
En este artículo, analizaremos cómo corregir el error minCompileSdk (31) en metadatos AAR para proyectos en Kotlin y Java. Conocerás las causas, obtendrás soluciones listas y entenderás cómo evitar este problema en el futuro. ¡Allá vamos!
\n\n¿Qué es minCompileSdk y por qué rompe la compilación?
\n\nEmpecemos con la teoría. Cada proyecto Android tiene su propio compileSdk —la versión del SDK de Android con la que se compila. Las librerías (AAR) también pueden indicar un compileSdk mínimo que necesitan. Si tu versión es inferior, Gradle muestra un error. Esto es una protección contra la incompatibilidad: la librería puede usar APIs que no existen en SDK antiguos.
El error The minCompileSdk (31) specified in a dependency's AAR metadata literalmente dice: "Oye, esta librería requiere compilación con SDK 31 (Android 12) o superior, ¡y tú tienes una versión inferior!".
Escenarios típicos de ocurrencia
\n- \n
- Añadiste una nueva librería (por ejemplo,
androidx.composeoFirebase) que se actualizó a requisitos de SDK 31+. \n - Usas una plantilla de proyecto antigua con
compileSdk = 30. \n - Olvidaste actualizar Gradle y las SDK Tools. \n
Cómo corregir el error minCompileSdk (31) en AAR: 3 métodos comprobados
\n\nAquí tienes soluciones paso a paso para Kotlin y Java. Ten en cuenta: el código está en Kotlin (DSL), pero la lógica es la misma para Groovy.
\n\nMétodo 1: Aumentar compileSdk (recomendado)
\nLa forma más correcta es actualizar compileSdk a la versión requerida por la librería. Normalmente es 31 (Android 12) o 33 (Android 13).
Pasos:
\n- \n
- Abre el archivo
build.gradle.kts(nivel de móduloapp). \n - Busca la sección
android. \n - Cambia
compileSdkal valor requerido. \n
android {\n compileSdk = 33 // O 31, 32 — según los requisitos\n\n defaultConfig {\n minSdk = 21\n targetSdk = 33\n // ...\n }\n}\n\n\n¿Por qué funciona? Simplemente cumples con los requisitos de la dependencia. Si la librería pide SDK 31, dale SDK 31. No olvides instalar también el SDK correspondiente en Android Studio (SDK Manager → Android 12.0 (API 31)).
\n\nMétodo 2: Reducir la versión de la librería
\nSi no quieres aumentar compileSdk (por ejemplo, por compatibilidad con dispositivos antiguos), puedes revertir la librería a una versión que no requiera SDK 31.
Ejemplo: En lugar de implementation("androidx.compose:compose-bom:2023.10.01"), usa una versión más antigua, como 2022.10.00.
dependencies {\n // Era (causa el error)\n // implementation("androidx.compose:compose-bom:2023.10.01")\n\n // Ahora (versión estable sin requisito de SDK 31+)\n implementation("androidx.compose:compose-bom:2022.10.00")\n}\n\n\nEsta es una solución temporal, pero ayuda si estás atascado en un SDK antiguo. La principal desventaja es que pierdes nuevas funciones y correcciones de seguridad.
\n\nMétodo 3: Sobrescribir minCompileSdk mediante Gradle (exótico)
\nExiste un método astuto pero no documentado: sobrescribir los metadatos AAR a través de la configuración de Gradle. Este método no se recomienda para producción, pero puede salvar el día si la librería no se actualiza.
\n\nandr