gradle 中的多风格编译依赖项

2023-11-21

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

我有 2 个风味组,每组有 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 开发者网站,如果您想声明特定组合的依赖关系产品风味和构建类型您需要首先声明该配置。

例如对于free风味和debug type:

configurations {
    freeDebugImplementation {}
}

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

进阶:多种风味维度

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

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'
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gradle 中的多风格编译依赖项 的相关文章

随机推荐

  • Erlang 节点无法看到彼此

    我是 Erlang 新手 尝试在我的笔记本电脑上设置两个节点 在一个终端中我输入 eli elimayost erlang apps gt erl sname foo setcookie secret 在第二个终端中 eli elimayo
  • 由 gcc 检查的 printf() 包装参数

    当Cprintf 它的家族是由gcc and Wall在命令行上使用时 编译器会根据正在使用的格式字符串警告错误放置的参数 例如 下面的代码会收到一条错误消息 指出格式指定了 3 个参数 但实际上您只传递了两个 printf d d d 1
  • LLDB 在启动时似乎没有读取我的 .lldbinit 文件

    我有一个带有单个别名的文件 lldbinit command alias pi print int 但是当我从 Xcode 运行我的应用程序时 别名不起作用 但是 如果我手动输入别名 则别名确实有效 lldb pi 6 error pi i
  • 在嵌套字典 python 中搜索值

    搜索一个值并获取父字典名称 键 Dictionary dict1 part1 wbxml application vnd wap wbxml rl application resource lists xml part2 wsdl appl
  • Jenkins Kubernetes 插件无法配置 jnlp-slave pod

    我在 Ubuntu 17 04 VM 上运行 Kubernetes 1 10 0 Docker 17 03 2 ce 和 Jenkins 2 107 1 并在 Jenkins 中安装了 Kubernetes Plugin 1 5 我有另外
  • load() 函数如何允许用户提供回调?

    在 javascript 中 库 框架非常流行让我们定义用于数据后处理的回调函数 eg load 5 function element alert element name 我想知道 load 函数如何能够让用户提供回调 有这方面好的教程吗
  • 如何在 jupyter 笔记本上单独冻结单元及其输出

    使用 Jupyter 笔记本时 执行单元的输出 包括错误消息 可能很有用 所以我想freeze细胞本身及其输出 或者换句话说 失活单元以保持输出 这可行吗 这会冻结单元格 但不会冻结输出 在编辑器中打开笔记本 查找您要锁定的单元格 将以下行
  • 从字符向量创建函数列表

    提前致谢 如果这个问题之前已经得到回答 我很抱歉 我已经进行了相当广泛的研究 我有一个数据集 其中包含一行串联信息 特别是 名称 颜色代码 一些函数表达式 例如 一个值可能是 成本 FF0033 log x 6 我拥有提取信息的所有代码 最
  • 如何反转 Django 模板中的 for 循环,然后对结果进行切片

    在 Django 模板中 我迭代一组照片 并一张一张地显示它们 具体来说 现在我只有一张照片集 包含 6 个物体 我像这样显示这 6 个对象 for pic in picstream photo set all reversed img s
  • 如何在具有动态键值对的javascript中解析json? [复制]

    这个问题在这里已经有答案了 我想在 JavaScript 中解析 JSON 字符串 响应是这样的 var response 1 10 2 10 如何从这个 json 中获取每个键和值 我正在这样做 var obj parseJSON res
  • 在 php 中取消设置变量

    我刚刚通过 php 手册阅读了有关 unset 变量的内容 php手册说 unset 销毁指定的变量 这个 def 看起来很完美 直到我遇到静态变量 如果在函数内部 unset 静态变量 则 unset 仅在函数其余部分的上下文中销毁该变量
  • 我可以使用 link_to 链接图像和文本吗

    好吧 我正在使用 font awesome rails gem 我已经习惯了 Rails 之外的很棒的字体 但我想它在 Rails 社区中并不那么受欢迎 安装后 它会使用以下格式创建图标 i class nameoftheicon i 我想
  • 将流步骤添加到在 AWS EMR 5.0 上运行的 boto3 中的 MR 作业

    我正在尝试将用 python 编写的几个 MR 作业从 AWS EMR 2 4 迁移到 AWS EMR 5 0 到目前为止 我使用的是 boto 2 4 但它不支持 EMR 5 0 所以我正在尝试转向 boto3 早些时候 在使用 boto
  • Spring 4 - addResourceHandlers 不解析静态资源

    我的maven spring项目目录结构如下所示 我正在使用基于 Spring 4 注释的配置 我如下配置资源 我尝试了许多 Stackoverflow 问题和其他网站中建议的方法 Spring 4加载静态资源 http imwill co
  • 在 Symfony/SonataUserBundle 设置中调用 setCurrentUri 方法失败

    我正在尝试使用 SonataUserBundle 设置 Symfony 用户注册和登录工作正常 当我尝试拨打电话时 profile查看 但是我收到以下错误 Attempted to call method setCurrentUri on
  • pytest中的测试用例执行顺序

    我正在使用 pytest 我的目录中有两个文件 在其中一个文件中 有一个长时间运行的测试用例 会生成一些输出 在另一个文件中 有一个读取该输出的测试用例 如何保证两个测试用例的正确执行顺序 除了按照正确的顺序将测试用例放在同一个文件中之外
  • lambda 中的“变量阴影”警告(未捕获时)

    让我们考虑一下这段代码 int main int a 1 auto f1 a int a 10 return a auto f2 int a 100 return a return a f1 f2 使用标志时 Wshadow使用 gcc 在
  • svg 超出屏幕,渲染了吗?

    场景 我有可以放大和缩小的 SVG 图像 根据缩放 我将在可见部分显示更多 更少的细节 问题是 我应该照顾吗 not显示当前不可见 屏幕外 的部分的详细信息 或者渲染引擎足够智能 可以跳过 剪辑 这些部分before它们被渲染了吗 是的 浏
  • 使用 Python 将 Geojson 转换为 shapefile

    我正在尝试将 geojson 文件转换为 shapefile 我正在尝试这种方式 我对Python很陌生 所以它可能是不正确的 import urllib geojson gdal url http ig3is grid unep ch i
  • gradle 中的多风格编译依赖项

    有没有办法在 Android Studio build gradle 中通过多种风格编译依赖项 我有 2 个风味组 每组有 2 个变体 在 4 种可能的组合中 我希望仅当我既是最新版本又是免费版本时才能依赖库 latestCompile 或