Gradle build - если тогда еще возможно

В открытой исходной библиотеке я использую что-то вроде следующего:

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
        }
    }
}

Возможно ли подобное? Любые альтернативные предложения?

android,gradle,

0

Ответов: 3


1 принят

Я полагаю, что ваша переменная установки хранится в расширении проекта

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
    }
}

0

Я уверен, но посмотрим, поможет ли это вам (это мне помогло)

Можно ли объявить переменную в Gradle, используемой в Java?


0

Конечно, я пробовал это, и он успешно сработал.

android{
...
    if (someCondition){
        compileSdkVersion 23
        buildToolsVersion "23.0.1"
        ...
    }else {
        compileSdkVersion 24
        buildToolsVersion "24.0.3"
        ...
    }
}
андроид, Gradle,
Похожие вопросы