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
Ответы
Ответ 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>"