Подтвердить что ты не робот

Android Studio Update 0.4.0 не удалось найти buildConfig()

После обновления Android Studio до версии 0.4.0 у меня появилась новая ошибка:

Я обновил до gradle 1.9 через gradle -wrapper.properties

distributionUrl=http\://services.gradle.org/distributions/gradle-1.9-all.zip

и обновил версию gradle в файле build.gradle

dependencies {
    classpath 'com.android.tools.build:gradle:0.7.+'
}

Теперь мой проект снова строится.

У меня есть некоторые константы String, определенные для разных productFlavors:

productFlavors {
    local {
        buildConfig "public static final String MY_KEY = \"\";"
    }

    alpha {
        buildConfig "public static final String MY_KEY = \"XXXXX-XXXXX-XXX\";"
    }

    beta {
        buildConfig "public static final String MY_KEY = \"YYYYY-YYYYY-YYY\";"
    }
}

И вот новая ошибка

Не удалось найти метод buildConfig() для аргументов [public static final String MY_KEY = "";] для GroupableProductFlavorDsl_Decorated {name = local, minSdkVersion = -1, targetSdkVersion = -1, renderscriptTargetApi = - 1, renderscriptSupportMode = null, renderscriptNdkMode = null, versionCode = -1, versionName = null, packageName = null, testPackageName = null, testInstrumentationRunner = null, testHandleProfiling = null, testFunctionalTest = null, signedConfig = null, resConfig = null}.

Все работает с Android Studio 3.7

4b9b3361

Ответ 1

Я не могу использовать комментарий (слишком долго). Вы можете найти его в том, что нового в gradle 1.9.

Изменения DSL: buildConfigLine заменяется на buildConfigField:

buildConfigField "boolean", "MY_FLAG", "true"

Вы можете переопределять поля, определенные в конфигурации по умолчанию, в виде вкусов или типов сборки. См. "Базовый" образец.

Build Config также теперь автоматически содержит больше констант для PACKAGE_NAME, VERSION_CODE, VERSION_NAME, BUILD_TYPE, FLAVOR, а также FLAVOR_<group>, если имеется несколько параметров аромата.

Итак, если у вас есть строка вроде этого:

buildConfig "public static final boolean MY_FLAG = true;"

Теперь вы должны заменить его на что-то вроде этого:

buildConfigField "boolean", "MY_FLAG", "true"

В вашем случае:

buildConfigField "String" , "MY_KEY" ,  "\"XXXXX-XXXXX-XXX\""

ОБНОВЛЕНИЕ 12/09/2015:

С новым экспериментальным плагином (0.2.1) вы должны использовать:

buildConfigFields.with {
                create() {
                    type = "String"
                    name = "MY_KEY"
                    value = "MY_VALUE"
                }
            }

Ответ 2

В этой версии внесено изменение:

buildConfigField "<type>", "<name>", "<value>"

Если у вас есть такая строка:

buildConfig "public static final boolean FLAG = true;"

Теперь вы должны использовать:

buildConfigField "boolean", "FLAG", "true"

Для значений String вы можете использовать:

buildConfigField "String", "FOO", "\"foo\""

Примечание: Предыдущее предложение DSL:

buildConfigLine "<value>"

изменился на

buildConfigField "<type>", "<name>", "<value>"