Версии приложений для Android с несколькими измерениями - PullRequest
0 голосов
/ 13 мая 2019

У меня проблема с управлением версиями приложения Android с несколькими вариантами и размерами.Проект настроен так: три измерения:

flavorDimensions "company", "app", "server"

и несколько вариантов:

productFlavors {
    company1 {
        applicationId "com.com1"
        dimension "company"
    }
    company {
        applicationId "com.com2"
        dimension "company"
    }
    app1 {
        applicationId "com.app1"
        dimension "app"
    }
    app2 {
        applicationId "com.app2"
        dimension "app"
    }
    sever1 {
        dimension "server"
    }
    server2 {
        dimension "server"
    }

Чтобы игнорировать некоторые из возможных миксов, все делается с помощью setIgnore в файле Gradle

    variantFilter { variant ->
    def names = variant.flavors*.name
    if (names.contains("app1") && names.contains("sever2") ||
            names.contains("app1") && names.contains("sever1") ||
            names.contains("app2") && names.contains("company1") ||
            names.contains("company") && names.contains("server2")) {
        setIgnore(true)
    }
}

Все основано на Advanced Android Flavors series

Так что с этой конфигурацией я не знаю, как установить разные версии для разных вариантов.Что-то вроде

company1app1 {
        versionCode 2
        versionName "1.0." + versionCode
}
company2app1 {
        versionCode 5
        versionName "1.1." + versionCode
}
company1app2 {
        versionCode 8
        versionName "1.0." + versionCode
}
company1app2 {
        versionCode 2
        versionName "1.0." + versionCode
}

Есть какие-нибудь решения?

1 Ответ

1 голос
/ 13 мая 2019

Возможное решение: в defaultConfig добавить строки

versionCode computeVersionCode()
versionName computeVersionName()

computeVersionCode() и computeVersionName() могут быть произвольными функциями, например:

def computeVersionCode(){
    String flavor = getCurrentFlavor()
    if (flavor.startsWith("company1app1")){
        return 2
    } else if (flavor.startsWith("company2app1")){
        return 5
    } else if (flavor.startsWith("company1app2")){
        return 8
    } else if (flavor.startsWith("company2app2")){
        return 2
    } else {
        return 1
    }
}

getCurrentFlavor() определено здесь https://stackoverflow.com/a/44183316/5312102

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...