如何使用Gradle API获取Android Studio主要SourceSet?

问题描述 投票:3回答:3

我正在为Android Studio开发gradle插件。这是我的问题如何使用Gradle API获取Android Studio主要SourceSet?

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

SourceSet main = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME)

我收到此错误消息 Caused by: org.gradle.api.UnknownDomainObjectException: SourceSet with name 'main' not found.

gradle android-gradle gradle-plugin
3个回答
1
投票

首先,代码不起作用,因为它只适用于带有java gradle插件的java项目。所以我用Google搜索并找到了解决方法。这是我的代码。

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;
                }
    }
    ...
}

我的代码不漂亮。等待更好的答案。


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

这适用于Android Studio 3.1及更高版本


0
投票
project.android.sourceSets.main

作品。请注意,它的类型为AndroidSourceSet,而不是SourceSet。它具有基本相同的API,与Android相关的附加功能。

© www.soinside.com 2019 - 2024. All rights reserved.