未解决的引用:Kotlin中的BuildConfig

43

因此,我开始了一个新的Android应用程序,
这是我的Android Studio信息

Android Studio 3.6.1
Build #AI-192.7142.36.36.6241897, built on February 27, 2020
Runtime version: 1.8.0_212-release-1586-b04 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 7 6.1

我也添加了

buildConfigField "String", "MODE", "FREE"

在我的产品风味中。

当我现在在我的MainActivity的onCreate方法中得到这个,

BuildConfig

未解决的引用。

12个回答

72

如果您在2023年遇到了这个问题,请添加以下内容

android.defaults.buildfeatures.buildconfig=true

添加到你的gradle.properties文件中。


5
关于此的博客文章:https://medium.com/androiddevelopers/5-ways-to-prepare-your-app-build-for-android-studio-flamingo-release-da34616bb946 - JonasVautherin

39

从Android Studio Flamingo版本和Android Gradle插件(AGP)8.0开始,默认情况下禁用生成BuildConfig文件,仅应为需要它的模块手动启用。

将此添加到所需模块的build.gradle中:

android {
  ...
  buildFeatures {
    buildConfig = true
  }
}

如果您需要所有模块的旧行为,请在gradle.properties文件中设置android.defaults.buildfeatures.buildconfig=true


3
谢谢,这正是我的问题所在。 - Rohit Singla
2
好消息-它成功了。 坏消息-现在我渴望暴力。 - Alpha

25

以下是一些解决此问题的简单步骤:

  1. 转到“文件”菜单 > “构建” > “清理项目”
  2. 现在转到“文件”菜单 > “构建” > “重新构建项目”

(若上述步骤无法解决问题,请执行第3步)

  1. 现在转到您遇到此问题的文件(在我的情况下为RetrofitClient.kt),并手动添加行 import com.example.myapplication.BuildConfig

(用您的包名替换“com.example.myapplication”)

就这些。


对于仍然在第三步之后遇到问题的人,请尝试使您的IDE缓存失效(文件->使缓存无效...)。如果后者不起作用,您的最后选择将是在项目中注释掉(暂时删除)任何对BuildConfig的引用,进行成功构建,然后再取消注释引用。 - chromaticnoob

13

未解决的引用

  • 确保选择正确的构建变体,例如DEBUG模式。
  • 最后清除-重建-重新启动IDE。

不要:

buildConfigField("String", "MODE", "FREE")

buildConfigField("String", 'MODE', '"FREE"')

输入图像描述


为什么使用单引号而不是双引号会有所不同? - IgorGanapolsky
我不知道,但我只是这样做。 - Raul Lucaciu
重要的细节是'"FREE"':双引号字符串包裹在单引号中。这就是您在build.gradle中定义字符串的方式。 - arkascha

6
如果你在模块代码中调用BuildConfig类,你必须在模块的build.gradle.kts文件的android {}块中启用buildConfig,从AGP v8.0开始。 否则,BuildConfig文件将不再自动生成。
android {
  buildFeatures {
    buildConfig = true
  }
}

更多关于如何为Android Studio Flamingo准备您的应用程序构建的详细信息可以在这篇来自Android开发者的文章中找到。

0
从Android Studio 3.5开始,BuildConfig.APPLICATION_ID已被弃用,取而代之的是BuildConfig.LIBRARY_PACKAGE_NAME
或者您可以使用Context.getPackageName()

0
我有两个不同的Android Studio项目,都存在BuildConfig.APPLICATION_ID未解决的问题。 第一个通过清理和构建序列得到了解决。 而另一个则没有。 区别在于后者有一个 import androidx.viewbinding.BuildConfig 将其删除后,再进行清理+构建,问题就被解决了。 我不记得为什么会有这个导入,可能在某个时候使用过。

你的答案可以通过添加更多支持信息来改进。请[编辑]以添加更多细节,例如引用或文档,以便他人可以确认您的答案是否正确。您可以在帮助中心中找到有关如何编写好答案的更多信息。 - Community

0

我知道已经过了一段时间,但我找到了一个可重现的解决方案来解决这个问题...

尽管IDE中出现了"未解决的引用"错误,但一切都可以正常编译。正如许多人提到的那样,清理和重新构建项目并不能解决这个问题。在Android Studio中也无法使用"Invalidate Caches"选项。

有效的方法是在应用gradle的defaultConfig部分暂时添加一个新的BuildConfig变量。例如:

buildConfigField "boolean", "TEST", "false"

然后重新构建,"未解决的引用"错误就会消失,您可以删除添加的BuildConfig变量,但错误仍不会再次出现。

我还应该提到,每当我清理项目时,错误都会再次出现,我必须重复这个过程。


0
对我来说,仅仅清理项目是不够的。我必须删除生成的BuildConfig文件并重新构建。在那之后,BuildConfig自动被解决了。

0

我遇到了这个问题已经有3周了,所有的建议都没有起作用。

  • 清理&重建
  • 无效缓存&重启
  • 更改flavors
  • 更改/添加buildConfigFields
  • 尝试所有引号的组合 " ' '"'
  • 在平行中安装全新的Android Studio版本

当我意识到这不仅是我的主要项目,而且包括我的1-Screen-Test应用程序时,我选择像这里描述的那样重置Android Studio: 如何重置Android Studio

完成设置后,一切恢复正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接