Есть ли способ запустить задачу чистой сборки после изменения варианта сборки в Android-студии? - PullRequest
0 голосов
/ 02 октября 2018

Есть ли способ запустить задачу чистой сборки после изменения варианта сборки из окна «Варианты сборки» в Android Studio.Я использую productFlavors и flavorDimensions в своем проекте, который имеет в общей сложности 9 вариантов сборки.Это мой код для создания вариантов сборки в app/build.gradle

flavorDimensions "name", "server"
productFlavors {
    def PROPERTY = { property -> "\"${project.properties.get(property)}\"" }

    flavor1 {
        dimension "name"
        applicationId "com.sample.app.flavorone"

        ext {
            dev = PROPERTY('f1.devServer')
            qa = PROPERTY('f1.qaServer')
            prod = PROPERTY('f1.prodServer')
        }
    }
    flavor2 {
        dimension "name"
        applicationId "com.sample.app.flavortwo"

        ext {
            dev = PROPERTY('f2.devServer')
            qa = PROPERTY('f2.qaServer')
            prod = PROPERTY('f2.prodServer')
        }
    }
    flavor3 {
        dimension "name"
        applicationId "com.sample.app.flavorthree"

        ext {
            dev = PROPERTY('f3.devServer')
            qa = PROPERTY('f3.qaServer')
            prod = PROPERTY('f3.prodServer')
        }
    }

    dev {
        dimension "server"
    }
    qa {
        dimension "server"
    }
    prod {
        dimension "server"
    }

    applicationVariants.all { variant ->
        def flavors = variant.productFlavors
        def name = flavors[0]
        def environment = flavors[1]
        variant.buildConfigField 'String', 'SERVER_URL', "${name[server.name]}"
    }

У меня есть следующая задача чистой сборки в корне build.gradle, но это не очищает все предыдущие сгенерированные папки сборки при измененииварианты сборки.

task clean(type: Delete) {
   delete rootProject.buildDir
}

Теперь, когда я переключаюсь между этими вариантами сборки, он создает папку build/generated/ для каждого варианта сборки и не очищает ранее созданные папки сборки.Когда я запускаю приложение, не выполняя «Чистую сборку», иногда оно выбирает неправильно сгенерированный BuildConfig, и приложение все еще указывает на неправильный сервер.

Мне нужно написать пользовательскую задачу или, если есть какой-то лучший подходзапустить задачу сборки чистых.Таким образом, я могу гарантировать, что существует только один BuildConfig, и приложение указывает на нужный сервер.

Я новичок в productFlavors, поэтому любые предложения приветствуются.

...