【问题标题】:How to use different dependencies in build.gradle?如何在 build.gradle 中使用不同的依赖项?
【发布时间】:2018-10-25 02:54:16
【问题描述】:

(与我的问题here有关)

我想针对 minSdk 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。打开文件显示详情

【问题讨论】:

    标签: android gradle android-gradle-plugin dependencies backwards-compatibility


    【解决方案1】:

    build.gradle 的dependencies 部分能否支持不同风格的不同包导入?

    您可以指定:

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

    更多info here.

    【讨论】:

    • 我在该链接中找不到如何执行分离的依赖项调用。
    • 该链接说明了如何使用不同的风格。什么不清楚?还要检查答案。只需使用 实现 xxxx 即可使用不同的依赖项
    • 我并没有说你的答案不清楚......只是我找不到一个具体的例子来说明如何做产品风格的依赖部分。如果我理解正确,我不应该在风味名称和“实现”语法之间加空格?
    • 另外,如何输入适用于所有风格的依赖项和其他任务?
    • 是的,没有空格(当然compileapi DSL 也是一样的)。要为所有风格/构建类型使用依赖项,只需使用简单的 implementationapi 不带前缀的 dsl。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 2019-05-18
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多