Introduction : Votre projet ne se compile pas ? Vous n'êtes pas seul
\n\nImaginez : vous codez en Kotlin, tout se passe bien, mais soudain — boum ! — la compilation échoue avec un message mystérieux : The minCompileSdk (31) specified in a dependency's AAR metadata. Une douleur familière ? Cette erreur est l'un des « pièges » les plus courants sur Stack Overflow (des milliers de vues et des centaines de commentaires). Elle survient lorsque vous utilisez une bibliothèque qui nécessite une version plus récente de compileSdk que celle configurée dans votre projet.
Dans cet article, nous allons voir comment corriger l'erreur minCompileSdk (31) dans les métadonnées AAR pour les projets Kotlin et Java. Vous découvrirez les causes, obtiendrez des solutions prêtes à l'emploi et comprendrez comment éviter ce problème à l'avenir. C'est parti !
\n\nQu'est-ce que minCompileSdk et pourquoi casse-t-il la compilation ?
\n\nCommençons par la théorie. Chaque projet Android a son propre compileSdk — la version du SDK Android avec laquelle il est compilé. Les bibliothèques (AAR) peuvent également spécifier un compileSdk minimum dont elles ont besoin. Si votre version est inférieure, Gradle génère une erreur. C'est une protection contre l'incompatibilité : la bibliothèque peut utiliser des API qui n'existent pas dans les anciens SDK.
L'erreur The minCompileSdk (31) specified in a dependency's AAR metadata dit littéralement : « Hé, cette bibliothèque nécessite une compilation avec le SDK 31 (Android 12) ou supérieur, alors que le tien est inférieur ! ».
Scénarios typiques d'apparition
\n- \n
- Vous avez ajouté une nouvelle bibliothèque (par exemple,
androidx.composeouFirebase) qui a été mise à jour pour exiger le SDK 31+. \n - Vous utilisez un ancien modèle de projet avec
compileSdk = 30. \n - Vous avez oublié de mettre à jour Gradle et les SDK Tools. \n
Comment corriger l'erreur minCompileSdk (31) dans AAR : 3 méthodes éprouvées
\n\nVoici des solutions étape par étape pour Kotlin et Java. Notez que le code est en Kotlin (DSL), mais la logique est la même pour Groovy.
\n\nMéthode 1 : Augmenter compileSdk (recommandée)
\nLa voie la plus correcte est de mettre à jour compileSdk vers la version requise par la bibliothèque. Généralement, c'est 31 (Android 12) ou 33 (Android 13).
Étapes :
\n- \n
- Ouvrez le fichier
build.gradle.kts(niveau du moduleapp). \n - Trouvez la section
android. \n - Modifiez
compileSdkavec la valeur requise. \n
android {\n compileSdk = 33 // Ou 31, 32 — selon les exigences\n\n defaultConfig {\n minSdk = 21\n targetSdk = 33\n // ...\n }\n}\n\n\nPourquoi cela fonctionne-t-il ? Vous vous conformez simplement aux exigences de la dépendance. Si la bibliothèque demande le SDK 31, donnez-lui le SDK 31. N'oubliez pas d'installer également le SDK correspondant dans Android Studio (SDK Manager → Android 12.0 (API 31)).
\n\nMéthode 2 : Abaisser la version de la bibliothèque
\nSi vous ne souhaitez pas augmenter compileSdk (par exemple, pour des raisons de compatibilité avec d'anciens appareils), vous pouvez revenir à une version de la bibliothèque qui ne nécessite pas le SDK 31.
Exemple : Au lieu de implementation("androidx.compose:compose-bom:2023.10.01"), utilisez une version plus ancienne, par exemple 2022.10.00.
dependencies {\n // Avant (provoque l'erreur)\n // implementation("androidx.compose:compose-bom:2023.10.01")\n\n // Après (version stable sans exigence du SDK 31+)\n implementation("androidx.compose:compose-bom:2022.10.00")\n}\n\n\nC'est une solution temporaire, mais elle aide si vous êtes bloqué sur un ancien SDK. Le principal inconvénient est que vous perdez les nouvelles fonctionnalités et les correctifs de sécurité.
\n\nMéthode 3 : Surcharger minCompileSdk via Gradle (exotique)
\nIl existe une méthode astucieuse mais non documentée : surcharger les métadonnées AAR via la configuration Gradle. Cette méthode n'est pas recommandée pour la production, mais peut sauver la mise si la bibliothèque n'est pas mise à jour.
\n\nandr