在我的开源库中,我使用如下代码:

android {
    compileSdkVersion setup.compileSdk
    buildToolsVersion setup.buildTools

    defaultConfig {
        minSdkVersion setup.minSdk
        targetSdkVersion setup.targetSdk
    }
}

我不想强制所有人定义这些常量,但是我想使用它们,并且在所有项目和库中使用相同的常量。因此,我希望能够使用一种对我有用的代码以及对未定义这些变量的其他每个人有用的代码。我正在寻找以下内容:
android {

    // pseudo code line
    if setup is defined
    {
        compileSdkVersion setup.compileSdk
        buildToolsVersion setup.buildTools

        defaultConfig {
            minSdkVersion setup.minSdk
            targetSdkVersion setup.targetSdk
        }
    }
    // default setup, if the user did not define global constants
    else
    {

        compileSdkVersion 24
        buildToolsVersion "24.0.2"

        defaultConfig {
            minSdkVersion 16
            targetSdkVersion 24
        }
    }
}

这样有可能吗?还有其他建议吗?

最佳答案

我想象您的设置变量存储在项目扩展中

project.ext.setup = setup

这样,可以从您的项目和所有子项目中访问它

您可以像这样测试设置的存在
if (project.hasProperty('setup'))

这个想法是创建一个默认的安装变量(如果没有提供的话)
if (!project.hasProperty('setup')){
    project.ext.setup = new Setup()
    project.setup.compileSdk = 24
    project.setup.buildTools = "24.0.2"
    project.setup.minSdk = 16
    project.setup.targetSdk = 24
}


android {
 compileSdkVersion project.setup.compileSdk
    buildToolsVersion project.setup.buildTools

    defaultConfig {
        minSdkVersion project.setup.minSdk
        targetSdkVersion project.setup.targetSdk
    }
}

08-17 17:32