关于android:Gradle buildConfigField BuildConfig无法解析符号

Gradle buildConfigField BuildConfig cannot resolve symbol

我正在使用Gradle构建我的Android应用程序。 我试图基于构建类型(发布或调试)使用一些标志。

我的Gradle文件如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
android {
    buildTypes {
        debug {
            buildConfigField 'boolean', 'PREPROD', 'true'
            buildConfigField 'boolean', 'STAGING', 'false'
        }

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

而且,如果我尝试调用BuildConfig.PREPRODBuildConfig.STAGING,则会收到"无法解析符号"错误。
Gradle同步成功,所以我不知道是否忘记了一些步骤才能使用此功能?

生成的BuildConfig.java文件如下(在build/source/buildConfig/debug/com.example.myapp中):

1
2
3
4
5
6
7
8
9
10
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 ="";
}


确保您的文件正在导入正确的Bui??ldConfig类。有时,如果您有其他项目库或模块,则可能会导入错误的buildConfig。
确保您的导入类似于com.project.app.BuildConfig。我当时遇到了同样的问题,问题是这个,希望它能对某人有所帮助。


我遇到了同样的错误。
尝试单击"保存"右侧的"同步"。
在gradle同步后执行该操作。


发生这种情况是因为我没有正确声明String字段。

我忘记了转义字符。从更改:

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

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

解决了问题。


确保将参数也添加到defaultConfig中。
在特定的buildVariant中定义参数时,您可能正在运行默认的buildVarient。

在构建gradle文件中使用以下命令:

1
2
3
 defaultConfig {
        buildConfigField('String' , 'myParameter', 'someValue')
    }

然后,在代码中使用以下代码:

1
String myParam= BuildConfig.myParameter;

希望这可以帮助,
嘛 :)


gradle构建文件中的更改不会刷新BuildConfig类的生成,即使您单击顶部的黄色"立即同步"栏也是如此。
完全清除将强制生成此文件。

在Android Studio中:
构建->清洁项目


同样的问题使我疯了一个多星期。就我而言,这是一个简单的导入丢失。我一直在寻找它,但是在文档中我找不到的任何地方都提到您需要在任何地方导入BuildConfig类!然而,这是合乎逻辑的。我继续相信这可能是自动的。好吧,这不是。

因此,请尝试:

  • 在导致错误的代码的BuildConfig.部分中单击一次。帮助消息应显示在蓝色气泡中,内容如下:
    " ? uk.co.package.app.BuildConfig? Alt + ENTER"
    单击它,Android Studio会自动添加丢失的导入。
    要么
  • 在导入列表的某处添加import uk.co.package.app.BuildConfig;

重新构建...有效!好吧,反正对我也有帮助。

希望可以帮助像我这样的另一位gradle android新手!


您必须先选择所需的构建变体才能访问其buildConfigField

enter image description here


搜索BuildConfig的出现。我恶意导入了不存在的BuildConfig和编译器,而不是捕获指向其他地方的随机代码行!


就我而言,问题是我刚刚重命名了项目的模块,但是该模块的名称引用未在AndroidManifest.xml上自动更新。

手动重命名并重建项目解决了该问题。


我的2美分:

我有一个正确的import xxx.BuildConfig,AS会指向该行以及我拥有BuildConfig.SOME_VARIABLE的那些行,因此我删除了import行,对其进行了重建,并出现了一个错误,指出BuildConfig is unrecognised reference blah blah,然后导入了它。并再次重建它。


我的包裹不是清单中最新的东西。
我检查了文件AndroidManifest.xml并更正了程序包的名称。
这就是我解决这个问题的方法。