在 build.gradle 中设置变量

Ωme*_*ega 6 android gradle android-studio build.gradle android-gradle-plugin

在我的build.gradle ( Module: 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\""
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我希望它们在我的 Java 代码中使用,如下所示:

BuildConfig.APP_EXP_DATE
R.string.app_exp_date
Run Code Online (Sandbox Code Playgroud)

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

错误:找不到符号变量 APP_EXP_DATE

错误:类型的非法开始

如何才能在 Java 代码中从 gradle 访问变量?

小智 5

好吧,你有一些选择:

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

    android {
        // your code
        defaultConfig {
            // your code
            resValue "string", "<key>", "<value>" 
            buildConfigField "string", "<key>", "<value>"
            // ...
        }
        // your code
    }
    
    Run Code Online (Sandbox Code Playgroud)
  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>"
            // ...
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

希望这有帮助!