Java Android/Gradle:为构建类型的子集指定依赖项

Java Android/Gradle:为构建类型的子集指定依赖项,java,android,groovy,gradle,raygun,Java,Android,Groovy,Gradle,Raygun,我正在处理的android项目有3种构建类型——debug、qa和release: buildTypes { release { ... } qa { ... } debug { ... } } 我希望依赖项(崩溃报告库)仅适用于debug和qa,而不适用于release 我想这可以通过复制构建类型特定的编译行来实现,如下所示: dependencies { ... debugCom

我正在处理的android项目有3种构建类型——
debug
qa
release

buildTypes {
    release {
        ...
    }
    qa {
        ...
    }
    debug {
        ...
    }
}
我希望依赖项(崩溃报告库)仅适用于
debug
qa
,而不适用于
release

我想这可以通过复制构建类型特定的编译行来实现,如下所示:

dependencies {
    ...
    debugCompile 'com.mindscapehq.android:raygun4android:1.3.0:sources'
    qaCompile    'com.mindscapehq.android:raygun4android:1.3.0:sources'
}

有没有办法做到这一点而不重复?

您可以在依赖项中迭代生成类型

dependencies {
    ...
    android.buildTypes.each { type ->
        if(type.name.equals("debug") || type.name.equals("qa")) {
            compile('com.mindscapehq.android:raygun4android:1.3.0:sources')
        }
    }
}

你对复制有什么担心?是不是当版本更改时,您必须在多个位置执行此操作?如果是这样,只需为版本使用一个变量,并将其用作依赖项<代码>ext{raygunVersion='com.mind….:1.3.0:sources'}然后
依赖项{debugCompile raygunVersion}
,这是我们在构建中如何实现的。感谢您的响应,但这似乎没有将依赖项编译到项目中。出现编译错误,表明找不到此库中的源文件。请在没有源文件的情况下尝试编译('com.mindscapehq.android:raygun4android:1.3.0')@user1405990我在项目中尝试过,一切正常。发布您的整个gradle文件,因为这是正确的答案。我尝试过,但在这两种情况下,“发布”和“构建”构建变体Android Studio都尝试使用为“构建”选择的libs:dependencies{Android.buildTypes.each{type->if(type.name==“debug”){compile(name:'library-debug',ext:'aar')}else{compile(name:'library-release',ext:'aar')}错误是:“多个dex文件定义Lcom/my/package/Classname”