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

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 = "";
}
4b9b3361

Ответ 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 и исправил имя моего пакета. Вот как я решил эту проблему.