Gradle buildConfigField BuildConfig 无法解析符号。

142

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

我的Gradle文件如下所示:

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):
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类吗?它应该位于build/source/buildconfig/debug/...目录下。 - Xavier Ducrohet
我把生成的 BuildConfig.java 添加到了我的问题中。 - Gaëtan
4
虽然Studio会要求您同步(因为它不知道您是否更改了模型),但您不需要进行同步,但您需要构建,因为BuildConfig类是根据build.gradle文件中的内容在构建过程中生成的。 - Xavier Ducrohet
2
嗨,我正在通过配置设置管理应用程序中的两种风格,就像您一样,我正在尝试创建一些配置变量,但是针对不同的风格。我尝试了您的方法,但在风格/BuildConfig.java中没有看到任何更新,因此甚至无法在编译时访问变量。有什么建议! - CoDe
在菜单中,尝试选择“构建” => “生成项目”。 对我来说,就是这么简单 :-) - undefined
显示剩余7条评论
32个回答

0
对于在Android Studio中更新包名后登陆到这里的任何人,自动重构会错过一些需要更新的地方。特别是如果你正在使用React Native。
你需要在整个项目中搜索旧的包名(在VS Code中,默认的快捷键是CMD + SHIFT + F或者CTRL + SHIFT + F,分别适用于Mac和Windows),并将其更新为新的包名。请记住,至少其中一些是区分大小写的,并且你的项目名称的许多实例实际上需要小写,所以不要只是自动替换所有内容。

-3

我想为这个问题添加另一个解决方案。我尝试了这篇帖子中的每个答案,但没有人提到在更新系统变量后立即重新启动计算机。非常有效!


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