New error after update to gradle-tool to 3.1.0-beta3 or 3.2.0-alpha03

徘徊边缘 提交于 2019-12-21 11:27:42

问题


Just a normal project with "prod" and "mock" flavors

in app/build.gradle:

 sourceSets {
        main.java.srcDirs += "blabla bla"
        test.java.srcDirs += "blabla bla"
        androidTest.java.srcDirs += "blabla bla"

        prodDebug.java.srcDirs += "blabla bla"
        mockDebug.java.srcDirs += "blabla bla"

        prod.java.srcDirs += "blabla bla"
        testProd.java.srcDirs += "blabla bla"
        androidTestProd.java.srcDirs += "blabla bla"

        mock.java.srcDirs += "blabla bla"
        testMock.java.srcDirs += "blabla bla"
        androidTestMock.java.srcDirs += "blabla bla"
    }

click "run" in Android Studio :

something goes wrong:

Error:org.gradle.api.GradleException: The SourceSet 'mockDebug' is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?

However, I can do "./gradlew clean build" or "./gradlew assembleProd installProdDebug" etc.

But, if I do it in command-line, the app cannot be built completely, it can install the app on the target device, but the app will crash like "xxxx.dex" problem.

issue


回答1:


Encountered the same problem after updating the Gradle Plugin from 3.0.1 to 3.1.0. Seems like Gradle now only finds the source set for the variant that is selected in Android Studio.

A workaround that fixes it for now is to remove the sourceSets {} block and add this instead:

def customSourceSets = [
    myFirstBuildVariant: 'src/myFirstBuildVariant',
    mySecondBuildVariant: 'src/mySecondBuildVariant',
]

android.applicationVariants.all { 
    if (customSourceSets.containsKey(name)) {
        sourceSets.find { it.name == name }.setRoot(customSourceSets.get(name))
    }
}


来源:https://stackoverflow.com/questions/48846879/new-error-after-update-to-gradle-tool-to-3-1-0-beta3-or-3-2-0-alpha03

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!