Невозможно выбрать один из следующих вариантов проекта:features:myDynamicFeatureModule:
Я экспериментирую с модулями динамических функций Android (также известными как модули по запросу) на стороне проекта, над которым я работаю.
В моем проекте PoC (доказательство концепции) модули динамических функций (DFM) работают нормально, и gradle без проблем создает проект. Закончив с PoC, я решил применить его к существующему проекту. Однако gradle не удалось построить проект с помощью:
Could not determine the dependencies of task ':my-app:checkSomeBuildFlavorDebugLibraries'.
> Could not resolve all task dependencies for configuration ':my-app:someBuildFlavorDebugMetadataValues'.
> Could not resolve project :features:myDynamicFeatureModule.
Required by:
project :my-app
> Cannot choose between the following variants of project :features:myDynamicFeatureModule:
- anotherBuildFlavorDebugAndroidTestCompile
- anotherBuildFlavorDebugAndroidTestRuntime
- ...
All of them match the consumer attributes:
- Variant 'anotherBuildFlavorDebugAndroidTestCompile' capability myproject.features:myDynamicFeatureModule:unspecified:
- Unmatched attributes:
- Required com.android.build.api.attributes.BuildTypeAttr 'debug' but no value provided.
- Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Metadata' but no value provided.
- Required endpoint 'someBuildFlavor' but no value provided.
- Found org.jetbrains.kotlin.localToProject 'local to :features:myDynamicFeatureModule' but wasn't required.
- Found org.jetbrains.kotlin.platform.type 'androidJvm' but wasn't required.
- Variant ...
Обратите внимание, что эта ошибка довольно длинная и повторяется по всем возможным вариантам.
Что я пробовал, но не сработало:
- Я добавил те же самые вкусы, что и базовый модуль (my-app) в моем динамическом модуле.
- В build.gradle моего DFM я попытался явно указать конфигурацию, например:
implementation project(path: ':my-app', configuration: 'default')
а также конфигурация:'someFlavor'
- В build.gradle базового модуля (my-app) я использовал
missingDimensionStrategy 'mydimension', 'myflavor'
- Сборка из Android Studio, а также из терминала
- Удаление зависимостей и другого кода из файлов build.gradle
Что я пробовал, и это сработало:
- Удаление зависимости базового приложения (my-app) от DFM (т.е. удаление проекта реализации (':my-app',)), но оно мне нужно. Чтобы уточнить, DFM применяет следующие плагины gradle:
com.android.dynamic-feature
а такжеkotlin-android
- Удаление всех разновидностей из базового приложения и DFM - но они мне нужны в базовом приложении.
- PoC, который я сделал, отлично работает, и gradle компилирует проект даже с теми же ароматами, которые я использую в своем реальном проекте.
Примечания:
- Я использую DexGuard (но я отключил его, чтобы убедиться, что он не мешает)
- У меня нет никаких пользовательских типов сборки, только отладка и выпуск
- Версия Gradle - 3.5.2
- Обертка Gradle - 5.5.1
- И PoC, и мой реальный проект используют одни и те же версии gradle, gradle wrapper, типов сборки и вкусов.
К сожалению, мне не удалось воспроизвести проблему в отдельном проекте. Я попытался удалить из своего проекта как можно больше вещей, но не смог решить проблему.
У вас есть идеи, что может вызвать эту проблему и как я могу ее исправить? Спасибо!
1 ответ
У меня была эта проблема из-за того, что я не удалил implementation project(':features:myDynamicFeatureModule')
строка из моего файла градиента модуля приложения.