android - gradle中的多口味编译依赖

标签 android gradle dependencies android-gradle-plugin android-productflavors

有没有办法在 Android Studio (build.gradle) 中通过多种风格编译依赖项?

我有 2 个 flavorGroup,每组有 2 个变体。在 4 种可能的组合中,我希望仅当我既是最新版本又是免费版本时才能够依赖一个库。 latestCompile 或 freeCompile 有效,但 latestFreeCompile 无效。这是我的 build.gradle 的相关部分:

android {
    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
        versionCode 15
        versionName "1.9." + versionCode
    }

    flavorGroups 'sdk', 'cost'

    productFlavors {
        latest {
            flavorGroup 'sdk'
            minSdkVersion 8
        }
        sdk7 {
            flavorGroup 'sdk'
            minSdkVersion 7
            versionName android.defaultConfig.versionName + ".sdk7"
        }
        free {
            flavorGroup 'cost'
        }
        pro {
            flavorGroup 'cost'
        }
    }
}
dependencies {
    // this works:
    freeCompile files('libs/StartAppInApp-2.2.1.jar')

    // and I would like something like this:
    latestFreeCompile 'com.google.android.gms:play-services:4.1.32' // minSdkVersion:8
}

如果我会使用:

latestCompile 'com.google.android.gms:play-services:4.1.32'

然后它也会包含在 latestPro 中(不需要) 如果我使用:

freeCompile 'com.google.android.gms:play-services:4.1.32'

然后它也会包含在 sdk7Free 中(尽管它需要 SDK 8)

最佳答案

如官方Android Developers website上所述,如果您想为产品风格和构建类型的特定组合声明依赖项,您需要先声明该配置。

例如对于 free 风格和 debug 类型:

configurations {
    freeDebugImplementation {}
}

dependencies {
    freeDebugImplementation 'com.google.firebase:firebase-ads:9.8.0'
}

高级:多个 flavor 维度

请注意,如果您的应用具有多个 flavor 维度,您必须创建与完整构建变体(所有 flavor ,然后是构建类型)相对应的配置,如下所示:

flavorDimensions "money", "image" 
productFlavors {
    free { dimension "money" }
    paid { dimension "money" }

    picasso { dimension "image" }
    glide { dimension "image" }
}

configurations {
    freePicassoDebugImplementation {}
    freeGlideDebugImplementation {}
}

dependencies {
    freePicassoDebugImplementation 'com.google.firebase:firebase-ads:9.8.0'
    freeGlideDebugImplementation 'com.google.firebase:firebase-ads:9.8.0'
}

关于android - gradle中的多口味编译依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22313632/

相关文章:

android - 按包显示 dex 方法计数

android - Cardview没有在底部显示阴影

android-studio - Android Studio 中的 Gradle 同步错误,找不到方法 android()

java - 从 Gradle 导入项目时 IntelliJ 中的依赖项错误

使用已弃用的 API 时,Android Studio 无法编译

gradle - 由于pom依赖性,无法创建我的JDA项目的JAR

生成文件 : can 'canned recipes' have parameters?

java - 带有部分的 Recyclerview,但每个部分仅带有页脚

android - 在 Android 中防止 RTL

javascript - 以自动方式合并多个 bower.json 依赖项