Как сохранить значение в определении аромата Android в Gradle и получить к нему доступ в цикле applicationVariants.all? - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь установить пользовательское значение в блоке productFlavors и получить доступ к нему внутри applicationVariants.all в приложении Android * build.gradle.

В app/build.gradle Я определяю 2 варианта:

android {
    compileSdkVersion rootProject.ext.compileSdkVersion

    defaultConfig {
        applicationId ...
    }
    buildTypes {
        debug {...}

        release {...}
    }

    flavorDimensions "project"
    productFlavors {

        project1 { 
            dimension "project"
            manifestPlaceholders.put('appName', 'Project 1')
            ext.someVar = "someValue1"
            // ext is a DefaultExtraPropertiesExtension
        }

        project2 { 
            dimension "project"
            manifestPlaceholders.put('appName', 'Project 2')
            ext.someVar = "someValue2"
        }
    }
}

И в какой-то момент у меня есть блок, в котором я заинтересован в доступе к значению:

afterEvaluate {
    applicationVariants.all { def variant ->
        def flavor = variant.mergedFlavor;
        // MergedFlavor does not seem to have a reference to `ext`.
        // how do I get the value of `someVar`?
    }
}

Я знаю, что можно добавить другое свойство к manifestPlaceholders и получить доступон использует flavor.manifestPlaceholders.get("someVar"), но мне это кажется немного грязным, так как я не использую это значение вне рамок Gradle, и предпочел бы использовать ext или какой-то другой, более чистый подход.

Есть ли здесьболее общий, менее навязчивый способ сделать это?

...