无法在以下项目变体之间进行选择:features:myDynamicFeatureModule:

8

我正在尝试使用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)完全相同的味道。 - 在我的 DFM 的 build.gradle 中,尝试显式设置配置:implementation project(path: ':my-app', configuration: 'default')和 configuration: 'someFlavor' - 在基础模块(my-app)的 build.gradle 中使用missingDimensionStrategy 'mydimension','myflavor' - 从 Android Studio 和终端构建 - 从 build.gradle 文件中删除依赖项和其他代码
我尝试过并且可以正常工作的方法:
- 从 DFM 中删除基本应用程序(my-app)的依赖关系(即删除 implementation project(':my-app') )-但是我需要它。为了澄清DFM应用以下 Gradle 插件:com.android.dynamic-featurekotlin-android - 从基本应用程序和 DFM 中删除所有口味 - 但我需要它们在基本应用程序中。 - 我制作的 PoC 运行良好,Gradle 可以编译具有我实际项目中使用的相同口味的项目。
注:
- 我使用 DexGuard(但我已禁用它以确保它不会干扰) - 我没有任何自定义的构建类型,只有“debug”和“release” - Gradle 版本为 3.5.2 - Gradle wrapper 是 5.5.1 - PoC 和我的实际项目使用相同的 Gradle 版本、Gradle Wrapper、构建类型和口味
不幸的是,我无法在单独的项目中重现此问题。我尝试从我的项目中尽可能多地删除东西,但是我无法解决这个问题。
你有什么想法是什么导致了这个问题,并且我怎样才能修复它?谢谢!
1个回答

2

我曾经遇到过这个问题,原因是没有从我的应用程序模块的gradle文件中删除implementation project(':features:myDynamicFeatureModule')这一行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接