Решение ошибки minCompileSdk (31) “AAR metadata“ в Java/Kotlin

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для быстрого решения проблемы с ошибкой "The minCompileSdk (31) specified in a dependency's AAR metadata", надо увеличить значение compileSdkVersion до 31 или больше в файле build.gradle. Это соответствует зависимостям вашего проекта.

gradle
Скопировать код
android {
    compileSdkVersion 31 
}

Затем выполните синхронизацию проекта. Если появятся дополнительные ошибки, стоит также увеличить targetSdkVersion.

gradle
Скопировать код
android {
    defaultConfig {
        targetSdkVersion 31 
    }
}

Убедитесь, что ваши зависимости обновлены до последних версий, совместимых с SDK версией 31 или выше:

gradle
Скопировать код
dependencies {
    implementation 'androidx.core:core-ktx:1.6.0' 
    implementation 'androidx.core:core:1.6.0'      
}

Если после обновления библиотек обнаруживаются конфликты версий, можно опробовать стратегию принудительного указания версий в разделе dependencies, чтобы указать требуемые версии.

gradle
Скопировать код
configurations.all {
    resolutionStrategy.force 'androidx.core:core-ktx:1.6.0' 
}

Убедитесь, что minSdkVersion соответствует минимальным требованиям ваших зависимостей. Снижение версии зависимости может быть единственным выходом, если нельзя увеличить compileSdkVersion.

Кинга Идем в IT: пошаговый план для смены профессии

Глубокое погружение в метаданные AAR и совместимость версий

Анализ метаданных AAR

Ошибку метаданных AAR вызывает несоответствие между выбранной версией SDK для сборки проекта и требуемой минимальной версией SDK зависимости. Чтобы посмотреть метаданные и узнать значение minCompileSdk, откройте файл '.aar', перейдите в кеш-папку .gradle, затем в каталог META-INF/com.android.build.api.attributes/.

Синхронизация версий в много-модульных проектах

Важно обеспечить согласованность значений compileSdkVersion, targetSdkVersion и dependencies во всех build.gradle файлах много-модульного проекта. Несоответствие может вызывать трудно выявляемые ошибки и усложнить процесс отладки.

gradle
Скопировать код
subprojects {
    afterEvaluate { project ->
        android {
            compileSdkVersion 31 
            defaultConfig {
                targetSdkVersion 31 
            }
        }
    }
}

Разумное управление переопределениями

Иногда сторонние библиотеки могут устаревать и не соответствовать последним версиям SDK. В таких случаях принудительное указание версий может быть временным решением до тех пор, пока библиотека не будет обновлена.

Визуализация

Представьте себе ситуацию, словно ваш проект создан для работы в 21-м измерении, а модуль, от которого он зависит, требует 31-го измерения. Это несоответствие приводит к ошибке при сборке:

Markdown
Скопировать код
Ваш Проект (Ваше Приложение 🛸): Разработан для 21-го измерения
Зависимость (Элемент Головоломки 🧩): Предназначена для 31-го измерения

Ошибка:

Markdown
Скопировать код
🛸--🚫--🧩
Ваше Приложение (minCompileSdk 21) не может интегрировать Зависимость (minCompileSdk 31).

Решением будет обновление проекта до версии, соответствующей требованиям зависимости.

Markdown
Скопировать код
**Этапы обновления:**
1. Поднимите версию minCompileSdk 🆙
2. Пересоберите проект 
3. Успешно интегрируйте зависимость

Повседневные задачи и контрмеры

Поддержание консистентности проекта при обновлениях

Обновление SDK может потребовать адаптацию к устаревшим API и критическим изменениям:

  • Используйте официальную документацию для поиска устаревших функций и изучения нововведений.
  • Проведите тщательное тестирование, чтобы обнаружить и устранить ошибки, вызванные обновлением SDK.
  • Перейдите на библиотеки AndroidX, которые обновляются регулярно и обеспечивают лучшую совместимость с новыми версиями операционных систем.

Приспособление к изменениям в больших проектах

Обновление SDK в больших и немодернизированных проектах требует больше времени и терпения:

  • Если переход к SDK 31 кажется сложным, рекомендуется поэтапное обновление.
  • Используйте адаптеры или библиотеки совместимости для построения моста между старым кодом и новыми технологиями.
  • Обновляйте проект по модулям, чтобы контролировать риски и упростить процесс.

Полезные материалы

  1. Добавление зависимостей к проекту | Android Studio | Разработчики Android – информация о метаданных AAR и управлении ошибками minCompileSdk.
  2. Обновление вашей сборки с Gradle 6.x до 7.0 – советы по обновлению Gradle для поддержания совместимости с новыми SDK.
  3. Переход на AndroidX | Разработчики Android – информация о переходе на AndroidX для предотвращения ошибок совместимости AAR.
  4. <uses-sdk> | Разработчики Android – подробности о Compile Sdk Version в разработке Android.
  5. Обновление IDE и инструментов SDK | Android Studio | Разработчики Android – инструкция по обновлению Compile SDK Version в Android Studio.
  6. Добавление зависимостей к проекту | Android Studio | Разработчики Android – общее руководство по управлению зависимостями и настройкам build.gradle для Android.
  7. Заметки к выпуску плагина Android Gradle 8.2 | Android Studio | Разработчики Android – актуальная информация по плагину Gradle для Android и заметки к релизам.