【问题标题】:Link dependencies for specific flavors with dimensions将特定风格的依赖关系与维度联系起来
【发布时间】:2018-04-26 12:40:43
【问题描述】:

我正在开发一个有两种类型的安卓应用程序:免费和高级。每层有 2 个版本:轻量级和重型。 这是 Gradle 的实现:

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

我正在尝试为高级层添加.jar 依赖项。添加方法很简单:

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

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

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

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

但我得到一个 gradle 错误:

找不到参数的方法 premiumLightweightImplementation() [目录'libs']

当然,这也适用于 premiumHeavyImplementation。

我确信有一种 gr​​adle 方式来完成我的要求。 我找到了两种方法来处理这个问题:

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

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

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

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

非常感谢!

【问题讨论】:

  • 如果您明确声明相应的配置,您首选的解决方案是否有效,例如configurations { premiumLightweightImplementation }
  • @PeterLedbrook OMG 这真的有效!!!请将此写为答案,以便我可以将其标记为已解决。我认为 gradle 不会理解配置名称和我正在组装的变体之间的联系。谢谢。

标签: android gradle android-gradle-plugin


【解决方案1】:

我是通过 Android Studio 手册的this section 进行的,该手册指出您需要明确声明任何用于风味/构建类型组合的配置。在这种情况下,这意味着您需要在 dependencies {} 块之前将以下内容添加到构建脚本中:

configurations {
    freeLightweightImplementation
    freeHeavyImplementation
    premiumLightweightImplementation
    premiumHeavyImplementation
}

【讨论】:

  • 如果我添加的是模块或库项目而不是 jar 怎么办。我正在尝试像下面那样使用但不工作。实施项目(':图书馆')正在工作。现在换成freeDebugImplementation project(path:':Library') 和paidDebugImplementation project(path:':Library') 库模块还有其他规则吗?
  • @ParmeshwarC 你不需要为库指定调试/发布,它会自动完成
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 2011-06-27
  • 1970-01-01
相关资源
最近更新 更多