Einleitung: Ihr Projekt baut nicht? Sie sind nicht allein
\n\nStellen Sie sich vor: Sie programmieren in Kotlin, alles läuft hervorragend, aber plötzlich – bumm! – bricht der Build mit einer rätselhaften Meldung ab: The minCompileSdk (31) specified in a dependency's AAR metadata. Kommt Ihnen das bekannt vor? Dieser Fehler ist einer der beliebtesten "Stolpersteine" auf Stack Overflow (tausende Aufrufe und hunderte Kommentare). Er tritt auf, wenn Sie eine Bibliothek verwenden, die eine neuere Version des compileSdk erfordert, als in Ihrem Projekt eingestellt ist.
In diesem Artikel analysieren wir, wie Sie den Fehler minCompileSdk (31) in AAR-Metadaten für Projekte in Kotlin und Java beheben. Sie erfahren die Ursachen, erhalten fertige Lösungen und verstehen, wie Sie dieses Problem in Zukunft vermeiden. Los geht's!
\n\nWas ist minCompileSdk und warum zerstört es den Build?
\n\nBeginnen wir mit der Theorie. Jedes Android-Projekt hat sein eigenes compileSdk – die Version des Android SDK, mit der es kompiliert wird. Bibliotheken (AAR) können ebenfalls ein minimales compileSdk angeben, das sie benötigen. Wenn Ihre Version niedriger ist, gibt Gradle einen Fehler aus. Dies ist ein Schutz vor Inkompatibilität: Die Bibliothek könnte APIs verwenden, die in älteren SDKs nicht vorhanden sind.
Der Fehler The minCompileSdk (31) specified in a dependency's AAR metadata sagt wörtlich: "Hey, diese Bibliothek erfordert eine Kompilierung mit SDK 31 (Android 12) oder höher, aber bei dir ist eine niedrigere Version eingestellt!".
Typische Szenarien für das Auftreten
\n- \n
- Sie haben eine neue Bibliothek hinzugefügt (z.B.
androidx.composeoderFirebase), die auf Anforderungen von SDK 31+ aktualisiert wurde. \n - Sie verwenden eine alte Projektvorlage mit
compileSdk = 30. \n - Sie haben vergessen, Gradle und die SDK-Tools zu aktualisieren. \n
So beheben Sie den Fehler minCompileSdk (31) in AAR: 3 bewährte Methoden
\n\nHier sind die Schritt-für-Schritt-Lösungen für Kotlin und Java. Beachten Sie: Der Code ist durchgängig in Kotlin (DSL), aber die Logik ist für Groovy identisch.
\n\nMethode 1: compileSdk erhöhen (empfohlen)
\nDer korrekteste Weg ist, das compileSdk auf die von der Bibliothek geforderte Version zu aktualisieren. Normalerweise ist dies 31 (Android 12) oder 33 (Android 13).
Schritte:
\n- \n
- Öffnen Sie die Datei
build.gradle.kts(Modulebeneapp). \n - Suchen Sie den Abschnitt
android. \n - Ändern Sie
compileSdkauf den erforderlichen Wert. \n
android {\n compileSdk = 33 // Oder 31, 32 – je nach Anforderung\n\n defaultConfig {\n minSdk = 21\n targetSdk = 33\n // ...\n }\n}\n\n\nWarum funktioniert das? Sie erfüllen einfach die Anforderungen der Abhängigkeit. Wenn die Bibliothek SDK 31 verlangt, geben Sie ihr SDK 31. Vergessen Sie nicht, das entsprechende SDK auch in Android Studio zu installieren (SDK Manager → Android 12.0 (API 31)).
\n\nMethode 2: Bibliotheksversion herabstufen
\nWenn Sie das compileSdk nicht erhöhen möchten (z.B. wegen Kompatibilität mit älteren Geräten), können Sie die Bibliothek auf eine Version zurücksetzen, die kein SDK 31 erfordert.
Beispiel: Verwenden Sie anstelle von implementation("androidx.compose:compose-bom:2023.10.01") eine ältere Version, z.B. 2022.10.00.
dependencies {\n // War (verursacht Fehler)\n // implementation("androidx.compose:compose-bom:2023.10.01")\n\n // Ist (stabile Version ohne Anforderung von SDK 31+)\n implementation("androidx.compose:compose-bom:2022.10.00")\n}\n\n\nDies ist eine temporäre Lösung, hilft aber, wenn Sie auf einem alten SDK feststecken. Der Hauptnachteil ist, dass Sie neue Funktionen und Sicherheitsupdates verlieren.
\n\nMethode 3: minCompileSdk über Gradle überschreiben (exotisch)
\nEs gibt eine knifflige, aber undokumentierte Methode – die AAR-Metadaten über die Gradle-Konfiguration überschreiben. Diese Methode wird für die Produktion nicht empfohlen, kann aber retten, wenn die Bibliothek nicht aktualisiert wird.
\n\nandr