Проблемы с зависимостями при навигации с помощью 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 ко всем моим действиям и услугам.

Другие вопросы по тегам