android - 将 gradle-tool 更新到 3.1.0-beta3 或 3.2.0-alpha03 后出现新错误

标签 android android-gradle-plugin build.gradle android-gradle-3.0

只是一个具有“prod”和“mock”风格的普通项目

在 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"
    }

在 Android Studio 中点击“运行”:

出了点问题:

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

但是,我可以执行 "./gradlew clean build"或 "./gradlew assembleProd installProdDebug"

但是,如果我在命令行中这样做,应用程序无法完全构建,它可以在目标设备上安装应用程序,但应用程序会像 "xxxx.dex" 问题一样崩溃.

issue

最佳答案

将Gradle Plugin从3.0.1更新到3.1.0后遇到同样的问题。似乎 Gradle 现在只能找到在 Android Studio 中选择的变体的源集。

目前修复它的解决方法是删除 sourceSets {} block 并改为添加:

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

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

关于android - 将 gradle-tool 更新到 3.1.0-beta3 或 3.2.0-alpha03 后出现新错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48846879/

相关文章:

android - Android 上的 Bootstrap 3 长模态滚动背景

android - RelativeLayout 导致动画不起作用?

android - Gradle同步失败:找不到任务 ':cdvPrintProps'上的参数的方法leftShift()

android - Android SDK Canary 4中Gradle构建失败

android - OkHttp SSLHandshakeException SSL 握手中止 SSL 库失败,协议(protocol)错误

java - 如何解决 "Duplicate class com.google.android.gms.common.api.zzb found in modules jetified-play-services-base-11.0.1-runtime.jar"

android - Gradle 同步失败 : Could not find method compile() for arguments [com. android.support :appcompat-v7:25. 3.1]

android - 无法使用 Gradle 找到依赖项

android - 程序类型已经存在 : android. support.v4.app.FrameMetricsAggregator$FrameMetricsApi24Impl$1

android - 如何将可变数量的参数传递给数据绑定(bind)适配器?