La maldición de minCompileSdk (31): cómo vencer el error AAR en Kotlin

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Tu proyecto no se compila? No estás solo

\n\n

Imagina: 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.

\n\n

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\n

Empecemos 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.

\n\n

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!".

\n\n

Escenarios típicos de ocurrencia

\n
    \n
  • Añadiste una nueva librería (por ejemplo, androidx.compose o Firebase) 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
\n\n

Cómo corregir el error minCompileSdk (31) en AAR: 3 métodos comprobados

\n\n

Aquí 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\n

Método 1: Aumentar compileSdk (recomendado)

\n

La 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).

\n\n

Pasos:

\n
    \n
  1. Abre el archivo build.gradle.kts (nivel de módulo app).
  2. \n
  3. Busca la sección android.
  4. \n
  5. Cambia compileSdk al valor requerido.
  6. \n
\n\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\n

Método 2: Reducir la versión de la librería

\n

Si 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.

\n\n

Ejemplo: En lugar de implementation("androidx.compose:compose-bom:2023.10.01"), usa una versión más antigua, como 2022.10.00.

\n\n
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\n

Esta 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\n

Método 3: Sobrescribir minCompileSdk mediante Gradle (exótico)

\n

Existe 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\n
andr                

Blogs

Book Recommendations