如何在 gradle 脚本中获取正在运行的 Android 风格名称

2024-03-26

这次我遇到了这个问题,我试图在 gradle 脚本中获取当前的风格。我已经尝试过这里给出的答案如何在 gradle 中获取当前的风味 https://stackoverflow.com/questions/30621183/how-to-get-current-flavor-in-gradle没有运气。

我在他们使用的一些答案中没有看到

// Get all flavors
android.productFlavors.all { flavor ->
if (flavor.name.equals("flavorName")) {
    // do what you like
}
// ...
}

但我也没有任何运气,因为我收到以下错误:>无法获取任务的未知属性“android”

所以我不知道如何获得当前的味道,任何帮助将非常感谢,谢谢!

编辑:我需要做的是执行一段针对每种风格不同的代码,我当前的想法是知道在任务中执行此操作所选择的构建变体,但如果有任何其他方法可以做到这一点完美的。


我已经发布了一个工作解决方案here https://stackoverflow.com/a/34679933/4350967, 那是:

以下函数准确返回当前口味名称:

def getCurrentFlavor() {
    Gradle gradle = getGradle()
    String  tskReqStr = gradle.getStartParameter().getTaskRequests().toString()

    Pattern pattern;

    if( tskReqStr.contains( "assemble" ) )
        pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
    else
        pattern = Pattern.compile("generate(\\w+)(Release|Debug)")

    Matcher matcher = pattern.matcher( tskReqStr )

    if( matcher.find() )
        return matcher.group(1).toLowerCase()
    else
    {
        println "NO MATCH FOUND"
        return "";
    }
}

你还需要

import java.util.regex.Matcher
import java.util.regex.Pattern

在开头或你的脚本中。 在 Android Studio 中,这是通过使用“Make Project”或“Debug App”按钮进行编译来实现的。

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

如何在 gradle 脚本中获取正在运行的 Android 风格名称 的相关文章

随机推荐

  • 反应式编程和函数式反应式编程之间的区别

    我最近一直在对反应式编程进行一些研究 我发现很难找到反应式编程和反应式编程之间差异的良好描述 功能性 反应性的 反应式编程是否只是使用函数式方法 范式而不是使用声明式或面向对象范式来实现 函数式响应式编程 FRP 是一种具有特定语义的特定编
  • 扩展 React.js 组件

    我最欣赏 Backbone js 的事情之一是继承的工作方式简单而优雅 我开始掌握 React 但在 React 中找不到任何类似于此 Backbone 代码的内容 var Vehicle Backbone View extend meth
  • 使用 pdfbox 调用 acroform.getFields() 时获取 null

    我试图以 pdf 形式获取所有可用字段 但遇到了NullPointerException打电话时acroform getFields 使用 PDFBox Sample pdDoc PDDocument load fileName PDAcr
  • // doxygen 中的注释

    我有一个 C 项目 需要使用 doxygen 进行记录 它拾取由 Visual Studio 自动生成的评论 但不幸的是它没有正常显示 评论 是否有我缺少的配置设置 或者这是不可能的 被称为XML 文档注释 http msdn micros
  • 无法对非静态方法进行静态引用

    我已经搜索了这个问题并找到了很多关于它的答案 但是我不理解它们 我想对我自己的代码进行澄清 所以希望它有意义 我正在尝试在 main 方法中调用 PrintList 方法 但我收到这个错误 无法从 Stack 类型对非静态方法 PrintL
  • 如何在 webgram 中监听 Telegram 消息/推送通知

    我需要通过 Telegram API 接收最新的 telegram 更新 看来 webogram 是该任务唯一最新的 javascript 库 我之前使用的是 telegram link 它通过 TCP 很好地完成了任务 我想知道 webo
  • 如何在不使用 for 循环或 try 语句的情况下有效地拆分一个字符串中的货币符号和数字

    我有一个像这样的字符串 200 000 000 or Yan300 000 000 我想拆分货币和数字 并输出一个元组 200000000 没有 在数字字符串中 目前我正在使用以下脚本 该脚本正在运行 def splitCurrency c
  • 语义词法分析器谓词性能

    我有一个词法分析器为传递给词法分析器的宏字符串的动态列表创建 MACRO 标记 我在最顶层的词法分析器规则中使用了语义谓词来实现此功能 MACRO macros null tryMacro Where tryMacro 只是检查是否有任何宏
  • Getopt 移位 optarg

    我需要这样调用我的程序 program hello r foo bar 我从 argv 1 中打招呼 但我在值栏上遇到问题 我还应该将 r 更改为其他内容吗 while c getopt argc argv r 1 switch i cas
  • 使用 mplot3d 绘制二维数组

    我有一个 2D numpy 数组 我想以 3D 形式绘制它 我听说过 mplot3d 但我无法正常工作 这是我想做的一个例子 我有一个尺寸为 256 1024 的数组 它应该绘制一个 3D 图表 其中 x 轴从 0 到 256 y 轴从 0
  • 将 jquery datepicker 创建的日期转换为标准 mysql 日期格式

    我在日记页面上使用以下 jquery 日期和时间选择器 http trentrichardson com examples timepicker rest examples http trentrichardson com examples
  • 如何以编程方式访问数据网格行详细信息控件

    我有一个数据网格 其中包含一些定义的列 然后是行详细信息模板 如何在隐藏代码中访问行详细信息模板中的控件 我有一个按钮 我想以编程方式启用 禁用 但我不知道如何在后面的代码中访问它 我在MSDN上看到过这个 http msdn micros
  • Roo - 添加自定义查找器

    我使用 Roo 创建了一个使用现有数据库的项目 我能够创建动态查找器 但我想实现自定义查找器 它将接收 4 个参数并使用其中一些参数创建 Like 条件 其他参数创建 equals 条件 对 Roo 来说 最好的方法是什么 推荐的模式是编辑
  • 仅当验证成功时如何提交表单

    我尝试在提交请求之前验证表单 我正在使用 jquery 验证 我期望当页面完成加载时 表单将自动提交 并且我将在 div 中看到 正在加载 但什么也没发生 这是我的代码 但似乎不起作用
  • Android应用程序数据存储不断增加

    我正在开发一个 Android 应用程序 它基本上加载新闻文章列表 并在用户单击时在网络视图中打开它们 我想知道的是 当我在 设置 gt 应用程序 gt 管理应用程序 中查看应用程序详细信息时 总存储大小不断增加 特别是 数据存储规模不断增
  • jquery dataTable 过滤器/搜索不起作用

    我是 jquery 新手 我使用了 jqueryData 表 我在搜索过程中遇到问题 搜索适用于前两列 例如 如果我使用 QE5855 或 3453457 进行搜索 则工作正常 但它不搜索第三列 例如 如果我输入 美国 或 美国 表未排序
  • Flutter Firebase 错误(任务“:app:mergeExtDexDebug”执行失败)

    我是编程新手 对 flutter 和 firebase 也很陌生 我正在尝试这段代码 https github com tattwei46 flutter login demo https github com tattwei46 flut
  • Google Places API 为什么每次都会在不同的变量下返回纬度和经度?

    这让我抓狂 出于某种原因 API 用于返回纬度和经度 如下所示 我认为是这样的 place geometry location y作为纬度 place geometry location z作为经度 然后它开始像这样返回 place geo
  • 抛硬币问题的Python代码

    我一直在用 python 编写一个程序 模拟 100 次抛硬币并给出抛硬币的总数 问题是我还想打印正面和反面的总数 这是我的代码 import random tries 0 while tries lt 100 tries 1 coin r
  • 如何在 gradle 脚本中获取正在运行的 Android 风格名称

    这次我遇到了这个问题 我试图在 gradle 脚本中获取当前的风格 我已经尝试过这里给出的答案如何在 gradle 中获取当前的风味 https stackoverflow com questions 30621183 how to get