android - Gradle ProductFlavors 引发错误 - 无法添加任务 ':assembleTest',因为具有该名称的任务已存在

标签 android gradle android-gradle-plugin

Gradle 新手,正在尝试创建构建变体。我刚刚向 gradle 文件添加了一个productFlavor,突然我收到了这个奇怪的错误


$ gradle tasks
Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties.
Deprecated dynamic property: "srcDirs" on "source set aild", value: "[src]".

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'SegmentIO'.
> Cannot add task ':assembleTest' as a task with that name already exists.

这是我完整的 build.gradle


buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.8.+'
    }
}

apply plugin: 'android'


dependencies {
    compile files('libs/android-support-v4.jar')
}

android {
    buildToolsVersion "19.0.1"
    compileSdkVersion 17

    productFlavors {
        test {
        }

        prod {
        }
    }

     sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src', 'bundled-src']
            resources.srcDirs = ['src']
            aild.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
        }

        // test.assets.srcDirs = ['$java-project-root/assets/test']
        // prod.assets.srcDirs = ['$java-project-root/assets/test']

        instrumentTest.setRoot('tests')
    }

    dependencies {
        compile fileTree(dir: './libs', include: 'Amplitude.jar')
    }
}

最佳答案

我发现两个问题:

Deprecated dynamic property: "srcDirs" on "source set aild", value: "[src]".

是因为您在构建文件中拼错了 aild.srcDirs - 它应该是 aidl.srcDirs

> Cannot add task ':assembleTest' as a task with that name already exists.

是因为您正在尝试创建一个名为“test”的 flavor ,但它正在被构建中的其他内容使用并且发生冲突。尝试使用不同的名称。

更具体地说,Android 插件根据 flavor 名称执行许多任务(它也使用构建类型执行此操作)。如果您的 flavor 名称为“foo”,assembleFoo 会执行 assemble,但仅针对 foo flavor 。已经有一个 assembleTest 任务,因此当它尝试为您的口味创建一个任务时会发生冲突。

关于android - Gradle ProductFlavors 引发错误 - 无法添加任务 ':assembleTest',因为具有该名称的任务已存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22154973/

相关文章:

android - kotlin 类,我在类外修改了一个列表,它最终修改了类内的值

gradle - Flutter 应用程序无法在 Android 上运行

android - 错误 : unknown tag <:string> in my app

java - NoClassDefFoundError对于灰熊的HTTP服务器

gradle - 使用实现项目时,可传递引用不起作用

android - 使用 Intent 时在库模块中使用应用程序模块依赖

gradle - 我可以将我的依赖项和存储库放在另一个文件中吗?

java - 从文本框传递参数

android - 我可以在 genymotion 中添加任何 mi 设备虚拟设备吗

java - 将 Java .class 文件传递​​给 Delphi Constructor