Переменные ext со вкусом не работают с несколькими измерениями - PullRequest
0 голосов
/ 20 февраля 2019

У меня та же структура, что и в приведенном ниже коде, и я хочу поставить префикс для applicationId и суффикс без точек и использовать значение applicationId в конце файла Gradle.

Я не хочуиспользуйте applicationIdSuffix, потому что он добавляет точки автоматически, и я не могу получить его значение на gradle, ни полный applicationId.

flavorDimensions "type", "version"

productFlavors.all {
       ext.appIdPrefix = "com.example"
       ext.appId = ""
       ext.appIdSuffix = ""
    }

productFlavors {

        flavor1 {
            dimension "type"
            appId = ".flavor1"
        }

       full {
            dimension "version"
            appIdSuffix = "Full"
        }
}

productFlavors.all  {
     applicationId appIdPrefix + appId + appIdSuffix
}

Теперь, когда я запускаю свое приложение с «flavourfull», applicationId равен «com.exmaple.flavor1»."только и не получает значение appIdSuffix

Как я могу это решить?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Вместо изменения идентификатора приложения для каждого варианта, попробуйте выполнить итерации для вариантов приложения:

applicationVariants.all { variant ->
    def flavors = variant.productFlavors
    variant.mergedFlavor.applicationId = flavors[0].appId + flavors[1].appIdSuffix ;
}

Это будет повторять каждую комбинацию вариантов дважды из-за двух типов сборки.См. Также Идентификатор приложения многомерного вкуса

Также обратите внимание на опечатку в своем вопросе: appIdSuffix "Full" должно быть appIdSuffix="Full"

0 голосов
/ 20 февраля 2019

Предполагая, что вашей конечной целью является создание разных вариантов приложений с разными идентификаторами приложений, вы должны иметь возможность использовать что-то вроде этого:

flavorDimensions "type"

productFlavors.all {
    ext.appIdPrefix = "prefix"
    ext.appId = "hello.world"
}

productFlavors {
    partial {
        dimension "type"
        ext.appIdSuffix = "suffix1"
    }

    full {
        dimension "type"
        ext.appIdSuffix = "suffix2"
    }
}

productFlavors.all {
    applicationId appIdPrefix + "." + appId + "." + appIdSuffix
}

Приведенное выше приведёт к вашим идентификаторам приложений, заканчивающимся суффиксом 1 или суффиксом 2 в зависимости отна выбранном варианте сборки.Не уверен, что понимаю, зачем вам для этого нужно другое измерение.

...