Невозможно выбрать один из следующих вариантов проекта: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') строка из моего файла градиента модуля приложения.

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