Gradle buildConfigField BuildConfig cannot resolve symbol

AndroidGradleBuildconfig

Android Problem Overview


I am using Gradle to build my Android application. I am trying to use some flags based on the build type (release or debug).

My Gradle file looks like this:

android {
    buildTypes {
        debug {
            buildConfigField 'boolean', 'PREPROD', 'true'
            buildConfigField 'boolean', 'STAGING', 'false'
        }

        release {
            buildConfigField 'boolean', 'PREPROD', 'false'
            buildConfigField 'boolean', 'STAGING', 'false'
        }
    }
}

And if I try to call BuildConfig.PREPROD or BuildConfig.STAGING I get a "Cannot resolve symbol" error. The Gradle sync was successful, so I don't know if I forgot some steps in order to be able to use this feature?

The generated BuildConfig.java file is the following (in 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 = "";
}

Android Solutions


Solution 1 - Android

Make sure your file is importing the right BuildConfig class. Sometimes if you have other project libraries or modules, it may import the wrong buildConfig. Make sure your import it's like this com.project.app.BuildConfig. I was Having the same issue and the problem was this, Hope it can help somebody.

Solution 2 - Android

I was getting the same bug. Try to click on synchronize, on the right side of save. Do that after gradle sync.

Solution 3 - Android

Changes in gradle build files don't refresh the generation of the BuildConfig class, even if you click the yellow "sync now" bar at the top. A full clean will force generating this file.

In Android Studio: Build -> Clean Project

Solution 4 - Android

Happened to me because I did not declared a String field properly.

I forgot the escaping characters. Changing from :

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

to

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

solved the problem.

Solution 5 - Android

In my case, in Android Studio:

> 1. Build -> Clean Project; > > 2. File -> Invalidate Caches / Restart... > > 3. Build -> Rebuild Project

Solution 6 - Android

Same happened to me, fixed when running this in the project root:

./gradlew assembleDebug

Solution 7 - Android

You have to choose the desired build variant first to be able to access its buildConfigField

enter image description here

Solution 8 - Android

Make sure you add your parameter also to the defaultConfig. You are probably running the default buildVarient while your parameter is defined in a speciffic buildVariant.

in the build gradle file use this:

> defaultConfig { > buildConfigField('String' , 'myParameter', 'someValue') > }

Then, in the code use this:

> String myParam= BuildConfig.myParameter;

Hope this helps, M.A :)

Solution 9 - Android

if this type of problem happens just clean and rebuild you project.

thanks.

Solution 10 - Android

Add below in build.gradle(Module:App) and Rebuild Project

android {
    buildFeatures {
        buildConfig = true
    }
}

Solution 11 - Android

In Android Studio,

  • click Build then Clean Project
  • After cleaning click Rebuild Project.
  • When done, close your project.
  • Open your project again and run it, the error should not appear again, it has cleared.

Solution 12 - Android

I tried everything here and nothing worked for me. I initially had an issue that one of the methods of BuildConfig that I was referring to wasn't being detected, so I tried some of the solutions here. That only broke my project even more (or so I thought). I tried changing my build type and ended up having the problem the OP mentioned (which was a problem I did not have. I came here looking for solution to another problem and ended up creating the OPs problem for myself facepalm).

So the solution that fixed things for me was, just go to

Build > Make Module 'app'.

And regardless of how many red mark indications I had, it just fixed everything for me. I wasn't even able to import the BuildConfig of my project after I broke it by trying the solutions here, to a problem I did not have (I'm dumb yea, idk what I'm doing). I think doing a clean build broke things further. But this solved everything for me.

Source: https://tinaciousdesign.com/blog/buildconfig-debug-always-returns-false-android/

> TLDR: BuildConfig is a generated class in your project. If Android Studio can’t find it, it’ll prompt you to import it. Don’t import it or you’ll get the lint warning. Run the project as usual, ignoring the red. Your problem should be solved

Solution 13 - Android

This same problem has been driving me nuts for over a week. In my case, it was a simple import missing. I looked for it but somehow nowhere in the docs I could find does it mention that you need to import the BuildConfig class anywhere! And yet, it's logical. I went on believing it might be automatic. Well, it ISN'T.

So try either:

  • click once on the BuildConfig. part of code that causes the error. A help message should appear in a blue bubble saying something like: "? uk.co.package.app.BuildConfig? Alt + ENTER" Click on it and Android studio automatically adds the missing import. or
  • add import uk.co.package.app.BuildConfig; somewhere in the list of your imports.

re-build... it works! well, it did for me anyway.

Hope that helps another gradle android newbie like me!

Solution 14 - Android

In my case, the problem was that I had just renamed a module of my project, but that module's name references weren't automatically updated on the AndroidManifest.xml.

Manually renaming those and rebuilding the project solved the issue.

Solution 15 - Android

Search for occurrences of BuildConfig. I had a rogue import of non-existant BuildConfig and the compiler instead of catching that pointed at a random line of code somewhere else!

Solution 16 - Android

Use this for Android X

import androidx.multidex.BuildConfig;

it's work for me.

Solution 17 - Android

Rebuild your module by right clicking on your module and select the Rebuild Module 'module name'

or use short key : Ctrl+Shift+F9

Solution 18 - Android

If Build config is not getting resolved in build Gradle file use the below code and sync it will work as expected

android{
buildFeatures{
	buildConfig = true
}}

Solution 19 - Android

My package wasn't up to date in my manifest. I checked the file AndroidManifest.xml and corrected the name of my package. This is how i solved this problem.

Solution 20 - Android

My 2 cents:

I had a correct import xxx.BuildConfig, AS would point to that line and to those lines where I had BuildConfig.SOME_VARIABLE, so I removed import line, rebuilt it, got an error saying that BuildConfig is unrecognised reference blah blah and after that I imported it and rebuilt it again.

Solution 21 - Android

I encountered same error during build(debugging) the old project in Android studio. When i investigated error i found that BuildConfig class was defined in 2 files. 1st was in BuildConfig.java and 2nd was in BuildConfig2.java.

I removed the one of file and i worked correctly.

Solution 22 - Android

In my case, I did a stupid mistake by COPYING AND PASTING THE SAME VARIANT. I just renamed the other variant and it worked.

enter image description here

Solution 23 - Android

Possible solution: If you're using the Android X billing library, perhaps by adding the following line in your build.gradle file:

implementation 'com.android.billingclient:billing:2.2.0'

Be aware that the Android billing library ALSO includes its own BuildConfig class which can confuse Android Studio's code editor. If this happens, it may auto-add the following import statement to one of your classes:

import com.android.billingclient.BuildConfig;

That's not the one you want to use, right? The one you want to be using (if you were doing a debug build) might be here:

./build/generated/source/buildConfig/debug/com/example/myapp/BuildConfig.java

So to fix, remove that import statement line, and rebuild to see if it can resolve to the right BuildConfig.java. If it can't, you may need to explicitly name it via an import com.example.myapp.BuildConfig.java to make it super clear you want the version of this file from your package and not any other.

Hope this helps!

Solution 24 - Android

In my case, the problem comes from

import com.android.volley.BuildConfig;

Make sure you have import the right BuildConfig from your package not from volley.

Solution 25 - Android

Check once your file is importing the correct BuildConfig class. If it is correct, then clean or File->InvalidateCaches and Restart.

Solution 26 - Android

In my case it happens after I added one extra level/folder to my package, Changed my com.xxx.BuildConfig to com.xxx.mynewfoldername.BuildConfig then works fine

Solution 27 - Android

I would like to add another solution for this issue. I've tried every answer on this post but nobody mentioned to reboot their machine right after you updated your system variables. Works like a charm!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGaëtanView Question on Stackoverflow
Solution 1 - AndroidMRodriguesView Answer on Stackoverflow
Solution 2 - AndroidbrunodlesView Answer on Stackoverflow
Solution 3 - Androiduser465363View Answer on Stackoverflow
Solution 4 - AndroidLouisView Answer on Stackoverflow
Solution 5 - AndroiddjzhaoView Answer on Stackoverflow
Solution 6 - AndroidsvprdgaView Answer on Stackoverflow
Solution 7 - AndroidMohammad AlotolView Answer on Stackoverflow
Solution 8 - AndroidMoranAkView Answer on Stackoverflow
Solution 9 - Androidmehmoodnisar125View Answer on Stackoverflow
Solution 10 - AndroidKetan RamaniView Answer on Stackoverflow
Solution 11 - Androidtshele litabeView Answer on Stackoverflow
Solution 12 - AndroidMaxView Answer on Stackoverflow
Solution 13 - AndroidLitomeView Answer on Stackoverflow
Solution 14 - AndroidRenan FerrariView Answer on Stackoverflow
Solution 15 - AndroidRRKView Answer on Stackoverflow
Solution 16 - AndroidSaurabh GaddelpalliwarView Answer on Stackoverflow
Solution 17 - AndroidAli RezaiyanView Answer on Stackoverflow
Solution 18 - AndroidNithin RajaView Answer on Stackoverflow
Solution 19 - AndroidJack'View Answer on Stackoverflow
Solution 20 - AndroidDraškoView Answer on Stackoverflow
Solution 21 - AndroidAlok KumarView Answer on Stackoverflow
Solution 22 - AndroidRumit PatelView Answer on Stackoverflow
Solution 23 - AndroidfattireView Answer on Stackoverflow
Solution 24 - AndroidYohanimView Answer on Stackoverflow
Solution 25 - AndroidArunLaView Answer on Stackoverflow
Solution 26 - AndroidBenjaBoyView Answer on Stackoverflow
Solution 27 - AndroidJim OvejeraView Answer on Stackoverflow