Gradle buildConfigField BuildConfig 无法解析符号

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

我的格拉德尔档案是这样的:

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


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

如果我尝试调用 BuildConfig.PREPRODBuildConfig.STAGING,我会得到一个“无法解析符号”错误。 格拉德尔同步是成功的,所以我不知道我是否忘记了一些步骤,以便能够使用这个功能?

生成的 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 = "";
}
116230 次浏览

我也感染了同样的病毒。 Try to click on synchronize, on the right side of save. 同步之后再做。

同样的问题已经让我抓狂一个多星期了。对我来说,只是一个简单的进口丢失。我查找了一下,但是不知道为什么在文档中找不到它提到您需要在任何地方导入 BuildConfig 类!然而,这是合乎逻辑的。我还以为是自动的。不是的。

所以,你可以选择:

  • 单击一次导致错误的代码的 BuildConfig.部分。一个帮助信息应该出现在一个蓝色的泡泡中,说类似于: “ ? 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.

- 重建... 成功了!-至少对我来说成功了。

希望这能帮助另一个像我一样的高级机器人新手!

确保您的文件导入了正确的 BuildConfig类。有时,如果您有其他项目库或模块,它可能会导入错误的 buildConfig。 确保你的进口是这样的 App. BuildConfig。我也有同样的问题,问题是,希望能帮到别人。

渐变构建文件的更改不会刷新 BuildConfig 类的生成,即使您单击顶部的黄色“现在同步”条也是如此。 完全清除将强制生成此文件。

在 Android Studio 中: Build-> Clean Project

在我的例子中,问题是我刚刚重命名了我的项目的一个模块,但是该模块的名称引用没有在 AndroidManifest.xml上自动更新。

手动重命名这些项目并重新构建项目解决了这个问题。

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

在 build gradle 文件中使用以下代码:

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

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

String myParam= BuildConfig.myParameter;

希望这对你有帮助, 文学硕士:)

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

发生在我身上是因为我没有正确地声明 String 字段。

I forgot the escaping characters. Changing from :

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

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

solved the problem.

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

enter image description here

我的包裹在清单上没有更新。 我检查了文件 AndroidManifest.xml 并更正了包的名称。 This is how i solved this problem.

我的建议是:

我有一个正确的 import xxx.BuildConfig,因为会指向那条线和那些我有 BuildConfig.SOME_VARIABLE的线,所以我删除了 import线,重建了它,得到一个错误,说 BuildConfig is unrecognised reference blah blah,然后我导入它,再重建它。

我在 Android 工作室构建(调试)旧项目时遇到了同样的错误。 当我调查错误时,我发现 BuildConfig 类是在2个文件中定义的。第一个是 BuildConfig.java,第二个是 BuildConfig2.java。

我删除了其中一个文件,并且我正确地工作了。

在 Android Studio 中, - 单击 Build then Clean Project - 清理后,单击“重建项目”。 完成后,关闭你的项目。 - Open your project again and run it, the error should not appear again, it has cleared.

在我的情况下,我做了一个愚蠢的错误 COPYING AND PASTING THE SAME VARIANT.我只是重命名其他变体,它工作。

enter image description here

同样的情况也发生在我身上,在项目根目录中运行时修复了这个问题:

./gradlew assembleDebug

可能的解决方案: 如果您使用的是 Android X 计费库,也许可以在 build.gradle文件中添加以下代码行:

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

请注意,Android 计费库还包括其 own BuildConfig类,这可能会混淆 Android Studio 的代码编辑器。如果发生这种情况,它可能会自动将以下 import语句添加到您的类中:

import com.android.billingclient.BuildConfig;

那不是你想用的那个,对吧?您想要使用的(如果您正在进行调试构建)可能在这里:

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

因此,要修复此问题,请删除导入语句行,然后重新构建,以查看它是否可以解析到正确的 BuildConfig.java。如果不能,您可能需要通过一个 import com.example.myapp.BuildConfig.java显式命名它,使其超级清楚地显示您希望从您的软件包而不是任何其他文件的版本。

希望这个能帮上忙!

如果这种类型的问题发生只是清理和重建您的项目。

谢谢。

在 Android X 上使用这个

import androidx.multidex.BuildConfig;

这是我的工作。

以我为例,在 Android Studio 中:

  1. 建造-> 清洁工程;

  2. 文件-> 无效缓存/重新启动..。

  3. 建造-> 重建计划

右键单击模块并选择 Rebuild Module 'module name'重新构建模块

or use short key : Ctrl+Shift+F9

我想为这个问题增加另一个解决方案。我已经尝试了这篇文章的每一个答案,但没有人提到重新启动他们的机器后,你更新了你的系统变量。非常有效!

如果构建配置没有在 Gradle 文件中得到解决,使用下面的代码并同步,它将按预期工作

android{
buildFeatures{
buildConfig = true
}}

在 build.gradle (Module: App)和 Rebuild Project 中添加以下内容

android {
buildFeatures {
buildConfig = true
}
}

我什么都试过了,都没用。最初,我遇到了一个问题,我提到的 BuildConfig 的一个方法没有被检测到,所以我在这里尝试了一些解决方案。这只会让我的项目更糟糕(至少我是这么认为的)。我尝试改变我的构建类型,结果遇到了 OP 提到的问题(这是我没有遇到的问题)。我来到这里寻找另一个问题的解决方案,最终为自己创建了作业问题 手掌)。

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

Build > Make Module 'app'.

不管我有多少红色标记,它只是为我修复了一切。我甚至不能导入我的项目的 BuildConfig,因为我在这里尝试解决一个我没有的问题(我是哑巴,是的,我想我正在做什么)。我认为做一个干净的建设进一步打破了东西。但这解决了我的一切。

资料来源: https://tinaciousdesign.com/blog/buildconfig-debug-always-returns-false-android/

BuildConfig 是项目中生成的类。如果 Android Studio 找不到它,它会提示您导入它。不要进口它,否则你会得到线头警告。像往常一样运行项目,忽略红色。你的问题应该得到解决

对我来说,问题来自

import com.android.volley.BuildConfig;

确保从包中导入了正确的 BuildConfig,而不是从 volley导入。

一旦您的文件导入了正确的 BuildConfig 类,请检查是否正确,如果正确,请清除或 File-> InvalidateCache 并重新启动。

在我的例子中,它发生在我向包中添加了一个额外的级别/文件夹之后,我更改了 com.xxx。BuildConfig 到 com.xxx.mynewfoldername。然后 BuildConfig 就可以正常工作了

确保您的软件包名称与 Build.Gradle 文件中的应用程序 ID 相匹配

只要改变它 & 同步,它将为你做必要的导入。

祝你好运