Решение ошибки minCompileSdk (31) “AAR metadata“ в Java/Kotlin
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для быстрого решения проблемы с ошибкой "The minCompileSdk (31) specified in a dependency's AAR metadata", надо увеличить значение compileSdkVersion
до 31 или больше в файле build.gradle
. Это соответствует зависимостям вашего проекта.
android {
compileSdkVersion 31
}
Затем выполните синхронизацию проекта. Если появятся дополнительные ошибки, стоит также увеличить targetSdkVersion
.
android {
defaultConfig {
targetSdkVersion 31
}
}
Убедитесь, что ваши зависимости обновлены до последних версий, совместимых с SDK версией 31 или выше:
dependencies {
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.core:core:1.6.0'
}
Если после обновления библиотек обнаруживаются конфликты версий, можно опробовать стратегию принудительного указания версий в разделе dependencies
, чтобы указать требуемые версии.
configurations.all {
resolutionStrategy.force 'androidx.core:core-ktx:1.6.0'
}
Убедитесь, что minSdkVersion
соответствует минимальным требованиям ваших зависимостей. Снижение версии зависимости может быть единственным выходом, если нельзя увеличить compileSdkVersion
.
Глубокое погружение в метаданные AAR и совместимость версий
Анализ метаданных AAR
Ошибку метаданных AAR вызывает несоответствие между выбранной версией SDK для сборки проекта и требуемой минимальной версией SDK зависимости. Чтобы посмотреть метаданные и узнать значение minCompileSdk
, откройте файл '.aar', перейдите в кеш-папку .gradle
, затем в каталог META-INF/com.android.build.api.attributes/
.
Синхронизация версий в много-модульных проектах
Важно обеспечить согласованность значений compileSdkVersion
, targetSdkVersion
и dependencies
во всех build.gradle
файлах много-модульного проекта. Несоответствие может вызывать трудно выявляемые ошибки и усложнить процесс отладки.
subprojects {
afterEvaluate { project ->
android {
compileSdkVersion 31
defaultConfig {
targetSdkVersion 31
}
}
}
}
Разумное управление переопределениями
Иногда сторонние библиотеки могут устаревать и не соответствовать последним версиям SDK. В таких случаях принудительное указание версий может быть временным решением до тех пор, пока библиотека не будет обновлена.
Визуализация
Представьте себе ситуацию, словно ваш проект создан для работы в 21-м измерении, а модуль, от которого он зависит, требует 31-го измерения. Это несоответствие приводит к ошибке при сборке:
Ваш Проект (Ваше Приложение 🛸): Разработан для 21-го измерения
Зависимость (Элемент Головоломки 🧩): Предназначена для 31-го измерения
Ошибка:
🛸--🚫--🧩
Ваше Приложение (minCompileSdk 21) не может интегрировать Зависимость (minCompileSdk 31).
Решением будет обновление проекта до версии, соответствующей требованиям зависимости.
**Этапы обновления:**
1. Поднимите версию minCompileSdk 🆙
2. Пересоберите проект
3. Успешно интегрируйте зависимость
Повседневные задачи и контрмеры
Поддержание консистентности проекта при обновлениях
Обновление SDK может потребовать адаптацию к устаревшим API и критическим изменениям:
- Используйте официальную документацию для поиска устаревших функций и изучения нововведений.
- Проведите тщательное тестирование, чтобы обнаружить и устранить ошибки, вызванные обновлением SDK.
- Перейдите на библиотеки AndroidX, которые обновляются регулярно и обеспечивают лучшую совместимость с новыми версиями операционных систем.
Приспособление к изменениям в больших проектах
Обновление SDK в больших и немодернизированных проектах требует больше времени и терпения:
- Если переход к SDK 31 кажется сложным, рекомендуется поэтапное обновление.
- Используйте адаптеры или библиотеки совместимости для построения моста между старым кодом и новыми технологиями.
- Обновляйте проект по модулям, чтобы контролировать риски и упростить процесс.
Полезные материалы
- Добавление зависимостей к проекту | Android Studio | Разработчики Android – информация о метаданных AAR и управлении ошибками minCompileSdk.
- Обновление вашей сборки с Gradle 6.x до 7.0 – советы по обновлению Gradle для поддержания совместимости с новыми SDK.
- Переход на AndroidX | Разработчики Android – информация о переходе на AndroidX для предотвращения ошибок совместимости AAR.
- <uses-sdk> | Разработчики Android – подробности о Compile Sdk Version в разработке Android.
- Обновление IDE и инструментов SDK | Android Studio | Разработчики Android – инструкция по обновлению Compile SDK Version в Android Studio.
- Добавление зависимостей к проекту | Android Studio | Разработчики Android – общее руководство по управлению зависимостями и настройкам build.gradle для Android.
- Заметки к выпуску плагина Android Gradle 8.2 | Android Studio | Разработчики Android – актуальная информация по плагину Gradle для Android и заметки к релизам.