我是否需要在 build.gradle 中为 release/debug java 源文件夹添加源集?

Do I need to add source sets in build.gradle for release/debug java source folders?

我为我们的发布 buildType 添加了一个新的 Java 源文件夹 release (app/src/release/java)。为此 Android Studio 自动将此行添加到我的 app/build.gradle:

 sourceSets { release { java.srcDirs = ['src/release/java', 'src/release/java/'] } }

我们的调试 buildType 在 debug 文件夹 (app/src/debug/java) 中已经有一些代码。 app/build.gradle 文件中没有用于调试源集的条目。

无论有没有 sourceSet 条目,我们的发布和调试版本都按预期工作。

那么,是不是gradle在构建时默认在app/src/x/java中寻找构建类型x的源。

如果是,为什么 Android-Studio 为我在 build.gradle 中添加了 sourceSet 行?

据我所知,您可以创建不同的 "sourceSets",这基本上只是帮助您在应用程序的不同变体之间组织代码。除了 "main" 集之外的每个 sourceSet 都是可选的。

您可以在 android developer hub.

上找到有关此主题的更多深入信息

好的,所以 Android Studio 已将 sourceSet 添加到 build.gradle,因为我在为 buildType 'release' 添加文件夹 'release' 时标记了 'Change Folder Location'。

并且默认情况下 Gradle 会在 app/src/x/java.

中查找构建类型 x 的源代码

例如,对于调试构建类型,build.gradle 中没有 sourceSet 条目。在 ./gradlew sourceSets 上它给出:

因此,如果您不使用自定义文件夹结构,则无需将 sourceSet 添加到 build.gradle。