Gradle buildConfigField BuildConfig не может разрешить символ
Я использую Gradle для создания приложения для Android. Я пытаюсь использовать некоторые флаги на основе типа сборки (выпуск или отладка).
Мой файл Gradle выглядит следующим образом:
android {
buildTypes {
debug {
buildConfigField 'boolean', 'PREPROD', 'true'
buildConfigField 'boolean', 'STAGING', 'false'
}
release {
buildConfigField 'boolean', 'PREPROD', 'false'
buildConfigField 'boolean', 'STAGING', 'false'
}
}
}
И если я попытаюсь позвонить BuildConfig.PREPROD
или BuildConfig.STAGING
, я получу ошибку "Не могу разрешить символ".
Синхронизация Gradle прошла успешно, поэтому я не знаю, забыл ли я некоторые шаги, чтобы иметь возможность использовать эту функцию?
Сгенерированный файл BuildConfig.java
следующий (в build/source/buildConfig/debug/com.example.myapp
):
package com.example.myapp;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String PACKAGE_NAME = "com.example.myapp";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 400;
public static final String VERSION_NAME = "";
}
Ответы
Ответ 1
Убедитесь, что ваш файл импортирует правильный класс BuildConfig. Иногда, если у вас есть другие библиотеки проектов или модули, он может импортировать неверный buildConfig.
Убедитесь, что вы импортируете его как com.project.app.BuildConfig. У меня была такая же проблема, и проблема была в этом, надеюсь, это может помочь кому-то.
Ответ 2
Я получал ту же ошибку.
Попробуйте нажать синхронизировать, с правой стороны сохранить.
Сделайте это после gradle синхронизации.
Ответ 3
Случилось со мной, потому что я не объявил строковое поле правильно.
Я забыл об экранирующих персонажах. Изменение:
buildConfigField "String", "FOO", "foo"
к
buildConfigField "String", "FOO", "\"foo\""
решил проблему.
Ответ 4
Убедитесь, что вы добавили свой параметр также в файл по умолчаниюConfig.
Вероятно, вы используете defaultVarient по умолчанию, в то время как ваш параметр определен в specisticic buildVariant.
в файле build gradle используйте это:
defaultConfig {
buildConfigField('String' , 'myParameter', 'someValue')
}
Затем в коде используйте это:
String myParam= BuildConfig.myParameter;
Надеюсь, это поможет,
M.A:)
Ответ 5
Изменения в файлах сборки gradle не обновляют генерацию класса BuildConfig, даже если вы нажмете желтую панель "sync now" вверху.
Полная очистка приведет к созданию этого файла.
В Android Studio:
Build → Clean Project
Ответ 6
Эта же проблема заставляла меня гать больше недели. В моем случае это был простой импорт. Я искал его, но как-то нигде в документах, которые я мог найти, он упоминает, что вам нужно импортировать класс BuildConfig в любом месте! И все же, это логично. Я продолжал полагать, что это может быть автоматическим. Ну, это НЕ.
Итак, попробуйте либо:
- щелкните один раз на части
BuildConfig.
кода, которая вызывает ошибку. В синем пузыре должно появиться сообщение помощи:
"? uk.co.package.app.BuildConfig? Alt + ENTER
"
Нажмите на нее, и студия Android автоматически добавит недостающий импорт.
или
- добавить
import uk.co.package.app.BuildConfig;
где-то в списке ваших импорта.
перестроить... он работает! ну, это все равно для меня.
Надеюсь, что это поможет еще одному новичку-новичку-новичку вроде w140.
Ответ 7
Сначала вы должны выбрать нужный вариант сборки, чтобы получить доступ к его buildConfigField
![enter image description here]()
Ответ 8
Поиск вхождения BuildConfig. У меня был жуткий импорт несуществующего BuildConfig и компилятора вместо того, чтобы ловить, который указывал на случайную строку кода где-то еще!
Ответ 9
В моем случае проблема заключалась в том, что я только что переименовал модуль моего проекта, но ссылки на имя модуля не были автоматически обновлены на AndroidManifest.xml
.
Вручную переименовать их и восстановить проект решила проблему.
Ответ 10
Мой пакет не был актуален в моем манифесте.
Я проверил файл AndroidManifest.xml и исправил имя моего пакета.
Вот как я решил эту проблему.