Динамический аромат Gradle

Я хотел бы создать динамические ароматы из дерева каталогов. Это прекрасно работает!

Но Android Studio использует gradle в своем файле tmp, например:

/home/svirch_n/.IntelliJIdea14/система/сервер компиляции

и мой скрипт больше не работает, потому что он использует такие относительные пути:

Closure getFlavors = { rootDir, basePackage ->
    def result = [:]
    new File("$rootDir").eachDir() { dir ->
        def name = dir.getName()
            if ("$name" != "main")
                result.put("$name", "$basePackage.$name")
        }
    return result
}

// This is an ugly closure.
// If I can get rid of this, my problem will be solved
Closure getSrcPath = {
    if (System.getProperty("user.dir").split("/").last() == "app") {
        return "src"
    } else {
        return "app/src"
    }
}

android {

    ...

    def myFlavors = getFlavors(getSrcPath(), "com.example.app")

    productFlavors {

        myFlavors.each { flavorName, flavorPackage ->
            "$flavorName" {
                applicationId "$flavorPackage"
            }
        }
    }

}

У вас есть идеи, как это решить? Заранее спасибо за помощь

P.S: Мне нужны динамические варианты, потому что мой проект git имеет общедоступные и частные репозитории, и не каждый может иметь все варианты, но я все равно хочу, чтобы они компилировались.


person nsvir    schedule 09.07.2015    source источник


Ответы (1)


Предполагая, что я нахожусь в подпроекте "приложение", я могу использовать:

project(":app").getProjectDir().getPath()
person nsvir    schedule 04.08.2015