不同 API 级别的 Gradle 依赖项

Gradle dependencies for different api levels

提问人:sockeqwe 提问时间:11/7/2014 更新时间:8/4/2015 访问量:1822

问:

不幸的是,我必须支持 Android 2.3,但我想使用具有 min-sdk 14 (Android 4.0) 的第三方 ui 小部件。

有没有办法将依赖项包含在 min-sdk 14 中?

在代码中,我会检查以确定是将 ui 小部件与 min SDK 14 一起使用还是使用后备 UI 小部件。Build.SDK_INT

安卓 android-studio android-gradle-插件

评论


答:

0赞 roiberg 8/4/2015 #1

这是不可能的......如果你有一个依赖项,它就在你的编译中。在你的apk中。您可以选择是否要将此第三方库与 if(SDK_INT) 一起使用,但该库将被编译并放入您的应用程序中。

0赞 Andrea Thacker 8/4/2015 #2

不幸的是,由于您必须包含依赖项,因此它将始终被编译到您的项目中。

您可以将项目分解为单独的项目。如果您创建了类似 a 和 a 的东西,您可以为每个设置不同的依赖项以及一组不同的依赖项。BaseAppIceCreamSandwichAppminSdkVersions

因此,您必须在应用中设置模块:

your-app/BaseApp

your-app/IceCreamSandwichApp

您的 gradle 文件将如下所示:

你的应用/settings.gradle

include ':BaseApp', ':GingerbreadApp'

你的应用程序/BaseApp/build.gradle

android {
    buildToolsVersion '22.0.1'

    defaultConfig {
        minSdkVersion 9
        compileSdkVersion 21
        targetSdkVersion 21
    }

...

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
    }

}

your-app/IceCreamSandwichApp/build.gradle

android {
    buildToolsVersion '22.0.1'

    defaultConfig {
        minSdkVersion 14
        compileSdkVersion 21
        targetSdkVersion 21
    }

...

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile project(":BaseApp")
        compile 'the.third.party:lib:here:1.0.0'
    }

}