首页 > 解决方案 > 如何在 build.gradle 中使用不同的依赖项?

问题描述

(与我的问题有关

我想为我的应用程序发布一次更新 minSdk < 14(与当前的 minSdk = 15 相比。我正在考虑创建我的应用程序的两种风格 - 一种支持低于 14 的 API 级别和 android 支持库25.4.0,对于使用最新支持库 27.1.1 的 API 级别 14 和更新版本,仅支持 API 14 及更高版本。

build.gradle 部分可以dependencies支持不同风格的不同包导入吗?

我的第一次尝试是这样的:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 27
    flavorDimensions "standard", "oldApi"

    defaultConfig {
        versionCode 37
        versionName "2.1.3"
        applicationId "org.app"
    }

    productFlavors {
        standard {
            dimension "standard"
            targetSdkVersion 27
            minSdkVersion 15
        }

        oldApi {
            dimension "oldApi"
            versionNameSuffix "X" //for old devices
            targetSdkVersion 14
            minSdkVersion 8
            maxSdkVersion 14
        }
    }

    signingConfigs {...}
    }

    buildTypes {
        release {...}
        debug {...}
    }
}

dependencies {
    standardImplementation project(path: ':MyappLibrary', configuration: 'standard')
    oldApiImplementation project(path: ':MyappLibrary', configuration: 'oldApi')
}

和:

apply plugin: 'com.android.library'
android {
    compileSdkVersion 27
    flavorDimensions "standard", "oldApi"

    productFlavors {
        standard {
            dimension "standard"
        }

        oldApi {
            dimension "oldApi"
        }
    }
}

dependencies {
    api 'com.dropbox.core:dropbox-core-sdk:3.0.6'
    standardApi "com.android.support:appcompat-v7:$package_version"
    standardApi "com.android.support:support-v4:$package_version"
    oldApiApi 'com.android.support:appcompat-v7:25.4.0'
}

错误(注意粗体部分):

无法解析“:app@ standardOldApiDebug /compileClasspath”的依赖关系:无法解析项目:MyappLibrary。

无法解析“:app@ standardOldApiDebugAndroidTest /compileClasspath”的依赖关系:无法解析项目:MyappLibrary。打开文件显示详细信息

标签: androidgradleandroid-gradle-plugindependenciesbackwards-compatibility

解决方案


build.gradle 部分可以dependencies支持不同风格的不同包导入吗?

您可以指定:

productFlavors {
        f1 {
           //..
        }
        f2 {
           //..
        }
   }

dependencies{         
    f1Implementation 'com.android.support:appcompat-v7:XX.2.1'
    f2Implementation 'com.android.support:appcompat-v7:27..1'
}

更多信息在这里


推荐阅读