优雅地处理缺少的gradle定义(如果缺少定义,请使用默认值)

时间:2018-11-19 06:48:09

标签: android gradle

我通常在我的项目中做以下事情:

1)定义一个versions.gradle文件,例如:

ext {

    setup = [
        compileSdk: 28,
        enableDataBinding: true,
        minSdk    : 16,
        targetSdk : 28
    ]

    androidx = [
        supportv4: "1.0.0",
        appcompat: "1.0.0",
        cardview: "1.0.0",
        viewpager: "1.0.0",
        material: "1.0.0"
    ]

}

2)我将此版本文件添加到我的 projects gradle文件中:

apply from: './versions.gradle'

3)我将所有项目gradle文件中文件的版本用于一致的库版本,例如:

implementation "androidx.appcompat:appcompat:${androidx.appcompat}"

问题

如何在我使用的开源库中优雅地处理此问题?我希望如果有人签出我的库并将该库直接添加到他的项目中,那么将提供一些默认版本,以便该行implementation "androidx.appcompat:appcompat:${androidx.appcompat}"不会引发任何错误(${androidx.appcompat}应该替换为{ {1}},例如在这种情况下。

有什么方法可以轻松解决此问题吗?我希望使用版本文件(如果可用),否则使用后备版本...

1 个答案:

答案 0 :(得分:2)

尝试使用 Elvis运算符放置默认值可以解决这个问题,因此可以使用以下运算符替换它:

implementation "androidx.appcompat:appcompat:${androidx.appcompat ?: 'default value here'}"

来自here的更多内容。