0

我已将一个功能从app模块中分离到一个动态功能模块(名为dfm)中。

该模块在我遵循所有最佳实践和要求的情况下完美运行。但是 androidTest 中使用 Espresso 的测试用例之一在AndroidJUnit4构建任务时不起作用并且失败并中断:mergeLibDexDebugAndroidTest。该项目包括:

  • app模块:主模块
  • testlib库模块包含几个用于单元测试的类(不被不运行的 espresso 测试用例使用)
  • dfm: espresso 测试用例所在的 动态功能模块
    没有具体错误,但它只是给出以下错误消息:
2020-07-15 20:40:42.705:INFO:oejs.ServerConnector:Daemon worker Thread 34: Stopped ServerConnector@eda0043{HTTP/1.1}{localhost:0}
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':dfm:**mergeLibDexDebugAndroidTest**'.
    > Could not resolve all files for configuration ':dfm:debugAndroidTestRuntimeClasspath'.
       > Failed to transform classes.jar (project :testlib) to match attributes {artifactType=android-dex, com.android.build.api.attributes.BuildTypeAttr=debug, com.android.build.api.attributes.VariantAttr=debug, dexing-enable-desugaring=true, dexing-incremental-desugaring-v2=false, dexing-is-debuggable=true, dexing-min-sdk=21, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime, org.jetbrains.kotlin.platform.type=androidJvm}.
          > No variants of project :app match the consumer attributes:
              - Configuration ':app:debugRuntimeElements' variant android-navigation-json:
                  - Incompatible attribute:
                      - Required artifactType 'android-classes-jar' and found incompatible value 'android-navigation-json'.
                  - Other attributes:
                      - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
                      - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required.
                      - Required dexing-enable-desugaring 'true' but no value provided.
                      - Required dexing-incremental-desugaring-v2 'false' but no value provided.
                      - Required dexing-is-debuggable 'true' but no value provided.
                      - Required dexing-min-sdk '21' but no value provided.
                      - Found org.gradle.usage 'java-runtime' but wasn't required.
                      - Found org.jetbrains.kotlin.platform.type 'androidJvm' but wasn't required.
              - Configuration ':app:debugRuntimeElements' variant android-packaged-dependencies:
                  - Incompatible attribute:
                      - Required artifactType 'android-classes-jar' and found incompatible value 'android-packaged-dependencies'.
                  - Other attributes:
                      - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
                      - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required.
                      - Required dexing-enable-desugaring 'true' but no value provided.
                      - Required dexing-incremental-desugaring-v2 'false' but no value provided.
                      - Required dexing-is-debuggable 'true' but no value provided.
                      - Required dexing-min-sdk '21' but no value provided.
                      - Found org.gradle.usage 'java-runtime' but wasn't required.
                      - Found org.jetbrains.kotlin.platform.type 'androidJvm' but wasn't required.
              - Configuration ':app:debugRuntimeElements' variant apk:
                  - Incompatible attribute:
                      - Required artifactType 'android-classes-jar' and found incompatible value 'apk'.
                  - Other attributes:
                      - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
                      - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required.
                      - Required dexing-enable-desugaring 'true' but no value provided.
                      - Required dexing-incremental-desugaring-v2 'false' but no value provided.
                      - Required dexing-is-debuggable 'true' but no value provided.
                      - Required dexing-min-sdk '21' but no value provided.
                      - Found org.gradle.usage 'java-runtime' but wasn't required.
                      - Found org.jetbrains.kotlin.platform.type 'androidJvm' but wasn't required.
              - Configuration ':app:debugRuntimeElements' variant bundle-apks:
                  - Incompatible attribute:
                      - Required artifactType 'android-classes-jar' and found incompatible value 'bundle-apks'.
                  - Other attributes:
                      - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
                      - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required.
                      - Required dexing-enable-desugaring 'true' but no value provided.
                      - Required dexing-incremental-desugaring-v2 'false' but no value provided.
                      - Required dexing-is-debuggable 'true' but no value provided.
                      - Required dexing-min-sdk '21' but no value provided.
                      - Found org.gradle.usage 'java-runtime' but wasn't required.
                      - Found org.jetbrains.kotlin.platform.type 'androidJvm' but wasn't required. 

我无法获取特定错误并了解它是否是 Gradle 文件或我的代码中的问题,因为任何地方都没有编译错误。请帮助我理解错误。谢谢

4

1 回答 1

1

在错误日志中,我们看到以下行:

Failed to transform classes.jar (project :testlib) to match attributes {artifactType=android-dex, com.android.build.api.attributes.BuildTypeAttr=debug, com.android.build.api.attributes.VariantAttr=debug, dexing-enable-desugaring=true, dexing-incremental-desugaring-v2=false, dexing-is-debuggable=true, dexing-min-sdk=21, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime, org.jetbrains.kotlin.platform.type=androidJvm}.

testlib因此,在研究了上述消息并暗示它dfm/build.gradleandroidTestImplementation project(":testlib"). 由于目前没有对androidTestsfrom 的依赖testlib,这是不必要的,因此失败了。androidTestImplementation project(":testlib")因此,我删除了使测试构建成功的不必要的东西。

于 2020-07-24T01:05:51.540 回答