Gradle buildConfigField BuildConfig无法parsing符号

我正在使用Gradle构buildAndroid应用程序。 我想基于构buildtypes(释放或debugging)使用一些标志。

我的Gradle文件如下所示:

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

如果我尝试调用BuildConfig.PREPRODBuildConfig.STAGING我得到一个“无法parsing符号”的错误。 Gradle同步是成功的,所以我不知道我是否忘了一些步骤才能使用这个function?

生成的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 = ""; } 

确保你的文件正在导入正确的BuildConfig类。 有时如果你有其他的项目库或模块,可能会导入错误的buildConfig。 确保你的导入就像这个com.project.app.BuildConfig 。 我有同样的问题,问题是这个,希望它可以帮助别人。

我得到同样的错误。 尝试点击同步 ,在保存的右侧。 在gradle同步后执行此操作

即使您单击顶部的黄色“立即同步”栏,Gradle构build文件中的更改也不刷新BuildConfig类的生成。 完整的清洁将强制产生这个文件。

在Android Studio中:生成 – >清理项目

同样的问题已经让我坚持了一个多星期。 就我而言,这是一个简单的import缺失。 我找了它,但不知何故在文档中,我可以find它提到你需要导入BuildConfig类的任何地方! 然而,这是合乎逻辑的。 我继续相信这可能是自动的。 那么,这不是。

所以请尝试:

  • BuildConfig.上单击一次BuildConfig. 导致错误的代码的一部分。 一个帮助信息应该出现在一个蓝色的泡泡中,如下所示:“ ? uk.co.package.app.BuildConfig? Alt + ENTER ”点击它,Android Studio自动添加缺less的导入。 要么
  • 添加import uk.co.package.app.BuildConfig; 在你的import清单的某处。

重新build立…它的作品! 好吧,无论如何,它为我做了。

希望有助于另一个像我一样的gradle android新手!

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

在构buildgradle文件中使用这个:

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

然后,在代码中使用这个:

 String myParam= BuildConfig.myParameter; 

希望这有助于,麻烦:)

search出现的BuildConfig。 我有一个不存在的BuildConfig和编译器的stream氓导入,而不是捕获指向其他地方的随机代码行。

发生在我身上,因为我没有正确地声明一个string字段。

我忘了逃跑的人物。 从:

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

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

解决了这个问题。

在我的情况下,问题是我刚刚重命名了我的项目模块,但该模块的名称引用不会自动更新在AndroidManifest.xml

手动重命名和重build项目解决了这个问题。