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' } } } |
而且,如果我尝试调用
Gradle同步成功,所以我不知道是否忘记了一些步骤才能使用此功能?
生成的
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
搜索BuildConfig的出现。我恶意导入了不存在的BuildConfig和编译器,而不是捕获指向其他地方的随机代码行!
就我而言,问题是我刚刚重命名了项目的模块,但是该模块的名称引用未在
手动重命名并重建项目解决了该问题。
我的2美分:
我有一个正确的
我的包裹不是清单中最新的东西。
我检查了文件AndroidManifest.xml并更正了程序包的名称。
这就是我解决这个问题的方法。