在 gradle 和 Android Studio 中调试和发布的不同依赖项

我有一个Android项目,它依赖于纯Java项目。它们都依赖于另一个Java库,也在我的Android Studio中的多项目级别中。我有两个版本的库,并希望Android和Java项目在调试模式下依赖于其中一个,另一个 - 在发布中。

安卓项目有可能吗?对于纯Java项目?如何?


答案 1

生成类型(调试、发布或自定义)可以有自己的依赖项。

若要指定特定于生成类型的依赖项,请执行以下操作:

dependencies {
    debugCompile "mydebugdependency"
    releaseCompile "myreleasedependency"
}

如果你的java项目和Android项目都使用gradle,你可以在他们的两个build.gradle文件中执行上述操作。


答案 2

我的依赖性也被忽略了。我的设置是应用程序模块和库模块,我需要将构建类型从应用程序传播到库模块,即,当我在应用程序上编译调试类型时,我也想获取库调试类型。buildDebug

如前所述,我尝试对文件中的每个构建类型具有特定的依赖项,但无济于事:app gradle

buildTypes {
    debug {
        debuggable true
        applicationIdSuffix ".debug"

        dependencies {
            debugCompile project(":library")
        }
    }
}

最终,对我来说,诀窍是:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication

因此,现在库依赖项在文件的全局依赖项范围内进行管理(像往常一样):app gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    releaseCompile project(path: ':library', configuration: 'release')
    debugCompile project(path: ':library', configuration: 'debug')
}

并且必须将其添加到库的 gradle 构建文件中:

android {
    publishNonDefault true
}

这将发布依赖项的所有生成类型。请注意,如果编译依赖项需要花费大量时间,则此解决方案可能不适合您。


推荐