如何使用GradleAPI获取Android Studio主源代码集?

如何使用GradleAPI获取Android Studio主源代码集?,gradle,android-gradle-plugin,gradle-plugin,Gradle,Android Gradle Plugin,Gradle Plugin,我正在为Android Studio开发一个gradle插件。这是我的问题如何使用gradle API获取Android Studio主源代码集? 我想用java源目录做一些复制工作。 在问这个问题之前,我发现了一些有用但不管用的东西 SourceSet main = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_N

我正在为Android Studio开发一个gradle插件。这是我的问题如何使用gradle API获取Android Studio主源代码集?

我想用java源目录做一些复制工作。 在问这个问题之前,我发现了一些有用但不管用的东西

SourceSet main = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME)
我收到此错误消息

原因:org.gradle.api.UnknownDomainObjectException:找不到名为“main”的源集。

首先,代码不起作用,因为它仅适用于带有java gradle插件的java项目。所以我在谷歌上搜索,找到了一些有用的东西。 这是我的密码

project.afterEvaluate {
    ...
    def sets;
    if (Utils.is140orAbove()) {
        sets = project.android.sourceSets;
    } else {
        sets = project.android.sourceSetsContainer;
    }
    sets.all { AndroidSourceSet sourceSet ->
        if(sourceSet.name.startsWith("main"))
            for(File file:sourceSet.java.getSrcDirs())
                if(file.exists()) {
                    mainSource = file;
                    break;
                }
    }
    ...
}
我的代码不漂亮。正在等待更好的答案

project.android.sourceSets.main
工作。请注意,它具有类型,而不是
SourceSet
。不过,它的API基本相同,并添加了与Android相关的内容

android.sourceSets.main.java.getSrcDirs()[0].path

在Android Studio 3.1和更高版本中,这对我很有用

你到底想在这里做什么?