我正在开发一个 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。
我确信有一种 gradle 方式可以完成我所要求的事情。
我找到了两个选项来处理这个问题:
- 完全停止使用维度(糟糕的解决方案,我必须自己编写所有风味组合)。
-
实现一个函数,该函数检索我正在尝试组装的当前风味,并在目录路径中使用其返回值。例如:
def 组合 = getCurrentFlavorCombination()
premiumImplementation fileTree(dir: "libs/$combination", include: ['*.jar'])
这些是实现这个简单要求的丑陋且不可靠的方法:
高级层应该有一个链接到它的 .jar - 该 .jar 的版本取决于另一个维度 - 发行版。
我并没有要求太多,但在 Gradle 文档中找不到一个很好的方法来做到这一点。我只找到了将库编译成罐子的方法,但我的库已经装在罐子里了,我只想适当地链接它。也许你们可以在这里帮助我。
太感谢了!