在build.gradle

时间:2018-09-21 19:36:07

标签: android android-studio gradle android-gradle build.gradle

在我的 build.gradle 中(模块:app ),我指定了一个buildConfigField和一个resValue变量。

buildTypes {
    release {
        debuggable false
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        buildConfigField "String", "APP_EXP_DATE", "\"DEC 31 23:59:59 EDT 2018\""
        resValue         "String", "app_exp_date", "\"DEC 31 23:59:59 EDT 2018\""
    }
}

然后,我希望它们像下面这样在我的Java代码中使用:

BuildConfig.APP_EXP_DATE
R.string.app_exp_date

但不幸的是,我遇到以下错误:

  

错误:找不到符号变量APP_EXP_DATE

     

错误:类型非法启动

如何使其能够在我的Java代码中从gradle中访问变量?

2 个答案:

答案 0 :(得分:1)

  

如何使它能够从gradle中访问变量   我的Java代码?

您的代码中的问题似乎正在release buildType中使用,这可能会导致问题(无法解决。)

但是,这应该是这样的:

gradle.properties中:

ExpDate="DEC 31 23:59:59 EDT 2018"

app/Build.gradle中(请注意,它应该在android块代码中):

def APP_EXP_DATE = '"' + ExpDate + '"' ?: '"Define Expire Date"'
android.buildTypes.each { type -> 
    type.buildConfigField 'String', 'APP_EXP_DATE', ExpDate

}

用法:

BuildConfig.APP_EXP_DATE

作为Toast

Toast.makeText(activity, BuildConfig.APP_EXP_DATE, Toast.LENGTH_LONG).show()

答案 1 :(得分:1)

好吧,您有一些选择:

  1. 在defaultConfig下定义您的字符串和值,如下所示:

    android {
        // your code
        defaultConfig {
            // your code
            resValue "string", "<key>", "<value>" 
            buildConfigField "string", "<key>", "<value>"
            // ...
        }
        // your code
    }
    
  2. 您可以将字符串设置为Release和Debug类型

    buildTypes {
        release {
            // your code
            resValue "string", "<key>", "<value>" 
            buildConfigField "string", "<key>", "<value>"
            // ...
        }
        debug {
            // your code 
            resValue "string", "<key>", "<value>" 
            buildConfigField "string", "<key>", "<value>"
            // ...
        }
    }
    

希望获得帮助!