Android Gradle, как установить переменную в зависимости от текущего buildType - PullRequest
0 голосов
/ 30 мая 2018

Как установить переменную в зависимости от текущего buildType, я пробовал это

String url = "https://dev.myurl.com"
tasks.whenTaskAdded { task ->
    if (task.name == 'generateReleaseBuildConfig' || task.name == 'generateDebugBuildConfig') {
        if (task.name == 'generateReleaseBuildConfig') {
            url = "https://prod.myurl.com"
        }
    }
}

Но независимо от того, является ли текущий buildType выпуском или отладкой, задачи generateReleaseBuildConfig и generateDebugBuildConfig оба выполняются,поэтому я никогда не получаю значение в зависимости от текущего buildType.Я указываю, что эта переменная используется позже в сценарии сборки, а не в коде Java.

Я пробовал несколько решений, найденных в SO , но ни одно из них не помогло мне

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Этот пример из моего собственного приложения.Работает нормально

Поместите следующий код на app\build.gradle

buildTypes {
        debug {
            ...
            buildConfigField "String", "SERVER_URL", '"http://..."'
        }
        release {
            ...
            buildConfigField "String", "SERVER_URL", '"http://..."'
        }
}

ВАЖНО: синхронизируйте gradle

и затем выполните следующий вызовв вашем классе

String URL = BuildConfig.SERVER_URL

0 голосов
/ 30 мая 2018

Вы можете использовать buildConfigField.Это выглядит так:

 buildConfigField('String', 'API_URL', "\"URL\"")

Поместите его в Gradle, под другим buildType.И чтобы получить его, используйте это:

 BuildConfig.API_URL

То, что вернет это значение, зависит от buildType

ОБНОВЛЕНИЕ

Вы уверены, что вы разместили его правильно?

 buildTypes {
         debug {
             //...
             buildConfigField('String', 'API_TEST', "\"URL\"")
         }

         release {
             //...
             buildConfigField('String', 'API_TEST', "\"URL\"")
         }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...