将特定风格的依赖关系与维度链接起来

2024-01-12

我正在开发一个 Android 应用程序,它有两种类型:免费和付费。每层都有 2 个版本:轻型和重型。 这是 Gradle 的实现:

flavorDimensions "tier", "distro"
productFlavors {
    free {
        dimension "tier"
    }
    premium {
        dimension "tier"
    }
    lightweight {
        dimension "distro"
    }
    heavy {
        dimension "distro"
    }
}

我正在尝试添加一个.jar对高级层的依赖only。添加它的方法非常简单:

premiumImplementation fileTree(dir: 'libs', include: ['*.jar']) // Works

问题是我有两个版本.jar。上面提到的每一个颠覆都有一个:lightweight and heavy.

我尝试将简单的解决方案应用于这种类型的依赖关系:

premiumLightweightImplementation fileTree(dir: 'libs', include: ['*lightweight.jar'])
premiumHeavyImplementation fileTree(dir: 'libs', include: ['*heavy.jar'])

但我收到一个 gradle 错误:

找不到参数的方法 premiumLightweightImplementation() [目录“库”]

当然这也适用于 premiumHeavyImplementation。

我确信有一种 gr​​adle 方式可以完成我所要求的事情。 我找到了两个选项来处理这个问题:

  1. 完全停止使用维度(糟糕的解决方案,我必须自己编写所有风味组合)。
  2. 实现一个函数,该函数检索我正在尝试组装的当前风味,并在目录路径中使用其返回值。例如:

    def 组合 = getCurrentFlavorCombination()
    premiumImplementation fileTree(dir: "libs/$combination", include: ['*.jar'])

这些是实现这个简单要求的丑陋且不可靠的方法: 高级层应该有一个链接到它的 .jar - 该 .jar 的版本取决于另一个维度 - 发行版。

我并没有要求太多,但在 Gradle 文档中找不到一个很好的方法来做到这一点。我只找到了将库编译成罐子的方法,但我的库已经装在罐子里了,我只想适当地链接它。也许你们可以在这里帮助我。

太感谢了!


我正要经过本节 https://developer.android.com/studio/build/dependencies#dependency-configurationsAndroid Studio 手册指出您需要显式声明风味/构建类型组合的任何配置。在这种情况下,这意味着您需要在构建脚本之前添加以下内容dependencies {} block:

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

将特定风格的依赖关系与维度链接起来 的相关文章

  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • 在 build.gradle 中声明依赖项后如何导入依赖项?

    我刚刚开始在 android studio 工作并开始探索 Gradle 的世界 于是我在Android Studio中创建了一个项目 打开build gradle并添加了如下依赖项 dependencies compile com and
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • Qt .pro 文件:如何检查我是否使用 MSVC 2013 工具集进行编译?

    我已经尝试过这个条件 但它不起作用 如何查看MSVC 2013 win32 msvc2013 QMAKE CXXFLAGS FS 我正在使用 Qt 5 3 Beta 它有msvc 2013 mkspec 抱歉 死亡帖子 但似乎没有可谷歌搜索
  • 将多行合并为一列,不重复

    我正在研究一个将从表中收集数据并显示报告数据的查询 数据如下 Player Score 001 10 001 20 002 20 002 20 001 10 002 10 003 20 002 20 001 10 我希望它像这样显示 Pla
  • 为什么我无法重定向到 grep 用于输入的文件? [复制]

    这个问题在这里已经有答案了 File1 foo bar baz File2 bar patch grep f file1 file2 gt file1 预期结果 file1 包含 bar patch 但它是空的 grep 如何处理输入文件以
  • 如何获取“appname”来构建 t.me URL 以启动 Telegram Web App for Bots

    On the 文档页 https core telegram org bots webapps direct link web apps在 Telegram 的 Web 应用程序中 我们可以读到 直接链接网络应用程序 您可以使用直接链接直接
  • 使用 System.Xml.Serialization.XmlSerializer 反序列化有效 xml 文件时存在差异

    这是一个相当复杂的问题 所以提前致谢 以下两个 xml 文件都针对给定架构进行验证 但在尝试使用 Net 的 XmlSerializer 进行反序列化时 只有第一个文件能够正确执行
  • iOS:如何从数字中获取正确的月份名称?

    我知道 NSDateformatter 功能套件对人类来说是一个福音 但同时它也让我感到非常困惑 我希望你能帮助我 在我的代码中的某个地方 有一个代表月份的 int 所以 1 代表一月 二月 2 日 等等 在我的用户界面中 我想将此整数显示
  • 在 terraform 云中运行的 azure cli $Path 错误

    第一次设置 terraform cloud 并收到此错误 不知道为什么在我的本地计算机上安装了 azure CLI 并设置了路径 但我认为与在 terraform 云平台中设置它有关 Error building AzureRM Clien
  • 在 Doctrine Querybuilder 中使用“DATE()”

    我需要获取所有行DATE a when 匹配字符串2014 09 30 builder this gt em gt createQueryBuilder builder gt select a gt from Entity Appointm
  • 从 C# 应用程序调用 azure powershell cmdlet 失败

    我试图自动化部署到天蓝色云的过程 我的 powershell 脚本可以做到这一点 当从 azure powershell 命令行执行它时 它的工作方式就像一个魅力 当我尝试从 C 应用程序调用相同的脚本时 它失败了 这是我的代码 inter
  • 从命令行使用网络摄像头拍照[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个 Logitech 网络摄像头 适用于笔记本电脑的 QuickCam Pro 我想从命令行使用该摄像头拍摄快照 它有命令行界面吗 如果没有 是
  • 织物密码

    每次结构运行时 它都会要求输入 root 密码 是否可以将其与自动建议一起发送 fab staging test 我知道您已经询问过密码 但是配置系统以便您可以在没有密码的情况下进行结构 即 SSH 不是更好吗 为此 在本地计算机上执行以下
  • Julia 中向量的就地重排?

    是否可以在给定索引列表的情况下重新排列向量中的值 我有两个数组 我想排序arr2基于arr1两者都是预先分配的 indices zeros length arr1 sortperm indices arr1 arr2 indices lt
  • T4 输出到字符串

    我是 T4 的新手 我想生成 CRUD 存储过程 数据访问层 输出到字符串 我正在尝试创建一种对其他程序员也有用的 Web 服务 api 只需输入数据 然后下载 zip 文件 我已经搜索了很多 但找不到一种生成字符串输出的方法 是否可能 任
  • 在 C++ 中禁用复制省略

    免责声明 研究的目标是如何禁用所提供代码部分的复制省略和返回值优化 如果想提及诸如 XY 问题之类的问题 请避免回答 该问题具有严格的技术和研究性质 并且以这种方式明确提出 C 14 中引入了复制省略和返回值优化 如果某个对象已在一个表达式
  • 跨多个文件的 Javascript 中的全局变量

    我的一堆 JavaScript 代码位于名为 helpers js 的外部文件中 在调用此 JavaScript 代码的 HTML 中 我发现自己需要知道是否调用了 helpers js 中的某个函数 我试图通过定义创建一个全局变量 var
  • Log4J:警告无法为 Logger 错误找到 Appender

    下面是我的log4j properties文件内容 文件与eclipse中的src文件夹放在一起 Application Logs log4j rootlogger INFO logg log4j appender logg org apa
  • Facebook 应用程序是使用 PhoneGap 或 Appcelerator 等移动开发框架构建的吗?

    我发现了numerous http venturebeat com 2011 07 08 hybrid mobile apps take off as html5 vs native debate continues sources htt
  • node.js http.get 在对远程站点发出 5 次请求后挂起

    我正在编写一个简单的 api 端点来确定我的服务器是否能够访问互联网 它工作得很好 但是在 5 个请求之后 每次都是 5 个 请求就会挂起 当我将 Google 切换到 Hotmail com 时 也会发生同样的情况 这让我觉得这是我的事情
  • 从另一个应用程序启动时,应用程序将失去记住其堆栈的能力

    现在我已经对此进行了更多研究 我写这篇文章是为了让它更清楚 如果您正在寻找更多信息 可以在旧版本中找到一些信息 怎么了 这是指没有设置任何launchMode的应用程序 设置 因此使用默认值 您可以从市场或安装程序启动应用程序 这 启动应用
  • 将特定风格的依赖关系与维度链接起来

    我正在开发一个 Android 应用程序 它有两种类型 免费和付费 每层都有 2 个版本 轻型和重型 这是 Gradle 的实现 flavorDimensions tier distro productFlavors free dimens