Android Gradle插件无法识别SourceSet'commonTest'。也许您拼错了什么?

Aut*_*pps 5 android source-sets android-gradle-plugin android-sourcesets

看似与该问题相同的根本原因,但那里的答案对我不起作用。我有一个自定义的源集commonTest,用于在testandroidTest源集之间共享某些测试实用程序代码。这是我相关的项目配置:

sourceSets {
    // This lets us write test utility code that can be used by both unit tests and android tests
    commonTest {
        java
    }
    test {
        java.srcDirs += commonTest.java.srcDirs
    }
    androidTest {
        java.srcDirs += commonTest.java.srcDirs
    }
}
Run Code Online (Sandbox Code Playgroud)

这在AGP 3.0.1上可以正常使用,但在AGP 3.1.0上无法使用。不再支持自定义源集吗?

leo*_*eon 6

我讨厌在这里成为死灵法师,但我遇到了这个问题并找到了解决方案,所以我想我会分享。

Android 不再允许您像在常规 gradle 项目中一样定义自定义源集。这可能是因为它会干扰风格、构建类型以及所有与之相关的生成的相互依赖的东西。默认的源集是:,main如果你确实想要另一个源集,你可以添加一个构建类型或一种风格,然后 android 创建一个附带的源集。这里有人举了一个例子debugrelease

然而,就您的情况而言,最好将代码提取到一个单独的(java)库中,并在您的 android 项目中添加对其的依赖项。这也是我在尝试将多个内容放入一个项目(就像常规 java/gradle 项目一样)之后所做的事情。您可以在此处查看如何使用子项目设置单独的库,以防您不了解这些内容。