我正在开发一个 android 应用程序,它有两种类型:免费和高级。每层有 2 个版本:轻量级和重型。这是 Gradle 的实现:
flavorDimensions "tier", "distro"
productFlavors {
free {
dimension "tier"
}
premium {
dimension "tier"
}
lightweight {
dimension "distro"
}
heavy {
dimension "distro"
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试仅为.jar高级层添加依赖项。添加它的方法很简单:
premiumImplementation fileTree(dir: 'libs', include: ['*.jar']) // Works
Run Code Online (Sandbox Code Playgroud)
问题是我有两个版本的 this .jar。上面提到的每个颠覆一个:lightweight和heavy。
我试图将简单的解决方案应用于这种类型的依赖:
premiumLightweightImplementation fileTree(dir: 'libs', include: ['*lightweight.jar'])
premiumHeavyImplementation fileTree(dir: 'libs', include: ['*heavy.jar'])
Run Code Online (Sandbox Code Playgroud)
但我收到一个gradle错误:
找不到参数的方法 premiumLightweightImplementation() [目录“libs”]
当然,这也适用于 premiumHeavyImplementation。
我确定有一种 gradle-way 可以做我要问的事情。我找到了两个选项来处理这个问题:
实现一个函数来检索我正在尝试组装的当前风格,并在目录路径中使用其返回值。例如:
def组合 = getCurrentFlavorCombination()
premiumImplementation fileTree(dir: "libs/$combination", …