如何生成字符串类型的 buildConfigField

新手上路,请多包涵

在我的 Android Studio 项目中有两个 build configuration 和一些 buildConfigField

     buildTypes {
    def SERVER_URL = "SERVER_URL"
    def APP_VERSION = "APP_VERSION"

    debug {
        buildConfigField "String", SERVER_URL, "http://dev.myserver.com"
        buildConfigField "String", APP_VERSION, "0.0.1"
    }

    release {
        buildConfigField "String", SERVER_URL, "https://myserver.com"
        buildConfigField "String", APP_VERSION, "0.0.1"

        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

我得到如下错误:

 /path/to/generated/BuildConfig.java
    Error:(14, 47) error: ';' expected
    Error:(15, 47) error: ';' expected

生成的 BuildConfig.java 如下:

 public final class BuildConfig {
    public static final boolean DEBUG = Boolean.parseBoolean("true");
    public static final String APPLICATION_ID = "com.mycuteoffice.mcoapp";
    public static final String BUILD_TYPE = "debug";
    public static final String FLAVOR = "";
    public static final int VERSION_CODE = 1;
    public static final String VERSION_NAME = "1.0";
    // Fields from build type: debug
    public static final String APP_VERSION = 0.0.1;
    public static final String SERVER_URL = http://dev.mycuteoffice.com;
}

我认为 APP_VERSIONSERVER_URL 没有正确生成,因为它们是没有引号的字符串类型。

我不确定为什么它会以这种方式生成。请让我知道如何解决此问题。

原文由 Abdullah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 770
2 个回答

字符串类型构建配置字段应该这样声明:

 buildConfigField "String", "SERVER_URL", "\"http://dev.myserver.com\""

引号中的字段名称,转义引号中的字段值。

原文由 Vladyslav Matviienko 发布,翻译遵循 CC BY-SA 4.0 许可协议

我需要 buildConfigField 和 manifestPaceholder 中的变量。为了解决这个问题,我做

def appAuthScheme= "appauth.myscheme"
buildConfigField 'String', 'APP_AUTH_SCHEME',"\"$appAuthScheme\""

manifestPlaceholders = [lowerApplicationId : applicationId.toLowerCase(),
                        appAuthRedirectScheme : appAuthScheme]

BuildConfig.APP_AUTH_SCHEME 是一个字符串!

原文由 Gugelhupf 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题