Проблемы с зависимостями при навигации с помощью Compose
Я изучаю навигацию по компоновке, как указано в документации .
Добавление зависимости с версией
2.4.0-alpha07
как указано в документации, дает следующую ошибку:
Ошибка 1
При проверке значений метаданных AAR обнаружена одна или несколько проблем:
MinCompileSdk (31), указанный в метаданных AAR зависимости (META-INF / com / android / build / gradle / aar-metadata.properties), больше, чем compileSdkVersion этого модуля (android-30). Зависимость:androidx.navigation:navigation-compose:2.4.0-alpha07. Файл метаданных AAR:/Users/abhimanyu/.gradle/caches/transforms-3/0575ff5712e0a9c15b8d7424501c07b8/transformed/jetified-navigation-compose-2.4.0-alpha07/META-INF/com/android/build/graadata/aar характеристики.
Эта ошибка вынуждает меня обновиться и
targetSdkVersion
моего приложения с 30 до 31.
Обновление версии дает эту ошибку,
Ошибка 2
Не удалось объединить манифесты: приложения, предназначенные для Android 12 и более поздних версий, должны указывать явное значение для
android: exported
когда для соответствующего компонента определен фильтр намерений. Подробнее см. Https://developer.android.com/guide/topics/manifest/activity-element#exported .
Чтобы решить эту проблему, проверьте этот пост .
Даже после добавления
android:exported
, Я получаю ту же ошибку (ошибка 2).
Это
compileSdkVersion
обновление до 31 обязательно?
Если да, как решить ошибку 2. Если нет, как решить ошибку 1?
Лично я предпочитаю по возможности придерживаться SDK 30.
2 ответа
Теперь каждая выпущенная библиотека AndroidX скомпилирована с API 31.
Вы также можете проверить это в примечаниях к выпуску «Аккомпанемент» :
Сопровождающий теперь построен на SDK 31:это означает, что ваши приложения также должны компилироваться с SDK 31. Это было вызвано тем, что последние выпуски AndroidX также были созданы на основе SDK 31.
Просто используйте в своем
build.gradle
compileSdkVersion 31
но вы всегда должны компилировать с использованием последней версии SDK, поскольку это не меняет поведения вашего приложения. Это не имеет отношения к вашему
targetSdkVersion
, вы можете продолжить установку по своему усмотрению.
Единственное правило:
minSdkVersion <= targetSdkVersion <= compileSdkVersion
Подробнее в док.
Проверить
AndroidManifest.xml
чтобы увидеть, покажет ли IDE какие-либо ошибки.
В моем случае мне пришлось добавить
android:exported
ко всем моим действиям и услугам.