如何从gradle插件向android项目源集中添加文件夹

如何从gradle插件向android项目源集中添加文件夹,android,gradle,plugins,gradle-plugin,Android,Gradle,Plugins,Gradle Plugin,我正在为gradle编写一个插件,为Android项目生成一些类 我在projectssrc/gen/java文件夹中生成这些类,因为我不希望它们与真正的源代码混合 从项目的build.gradleconfig中,我可以添加以下内容,使构建工具可以看到生成的类: android { sourceSets { main { java { srcDir 'src/gen/java' }

我正在为gradle编写一个插件,为Android项目生成一些类

我在projects
src/gen/java
文件夹中生成这些类,因为我不希望它们与真正的源代码混合

从项目的
build.gradle
config中,我可以添加以下内容,使构建工具可以看到生成的类:

android {
    sourceSets {
        main {
            java {
                srcDir 'src/gen/java'
            }
        }
    }
} 
问题是我想让我的插件自动设置。从我的插件中,我尝试了以下方法:

公共类MyPlugin实现插件{

@Override
public void apply(Project project) {
    // ... 
    // TEST 1 : doesnt work
    project.android.sourceSets.main.java.srcDirs += "src/gen/java"

    // TEST 2 : doesnt work
    project.android.sourceSets {
        main {
            java {
                srcDir 'src/gen/java'
            }
        }
    }
}
}


每次插件运行时,编译器仍然看不到该文件夹,并且在编译时也找不到生成的类。有人知道从插件中执行此操作的其他方法吗?

如果您将文件移动到插件当前正在为您生成代码的应用程序模块的
生成/生成/源目录,则不必将其添加到源代码集中

您还可以看看哪个是gradle插件,它可以生成代码或

编辑:


您还需要在生成源代码的BuildVariant上调用,对吗?非
来源
复数。当我使用该设置在单元测试和平板测试之间共享测试装置时,Android Studio会看到所有装置,但总是抱怨一个导入行(只有一行),并将共享文件夹涂成红色。嘘。。。这是对我在Android Studio的盒子之外思考的惩罚。。。