在使用AS进行开发的时候,我们有时会遇到这样的需求,如果想要在gradle中配置一个变量,
并且想要在app运行的时候得到这个变量的值,这个时候该怎么做呢。
通过配置BuildConfig可以满足需求
Demo1:在defaultConfig中配置BuildConfig
defaultConfig {
... buildConfigField("String","testKey","\"testValue\"") }
Rebuild之后:
BuildConfig.class文件生成了如下成员变量
// Fields from default config. public static final String testKey = "testValue";Demo2:在buildTypes和productFlavors中配置BuildConfig
除了在defaultConfig中之外,buildTypes和productFlavors中也能配置BuildConfigbuildTypes {... debug { buildConfigField("String","debugtestKey","\"debugtestValue\"") } }productFlavors{ Flavortest{ buildConfigField("String","testFlavorKey","\"testFlavorValue\"") } }结果如下:// Fields from build type: debug public static final String debugtestKey = "debugtestValue"; // Fields from product flavor: Flavortest public static final String testFlavorKey = "testFlavorValue"; // Fields from default config. public static final String testKey = "testValue";Demo3: resValue配置
如果说想通过类似getResource().getString()这种方式获取变量的值,要怎么做呢defaultConfig { ... resValue("string", "test1Value", "1") } buildTypes { ... debug { resValue("bool", "test2Value", "true") } } productFlavors{ Flavortest{ resValue("integer", "test3Value", "3") } }Log.i(this.getClass().getSimpleName(),getResources().getString(R.string.test1Value)); Log.i(this.getClass().getSimpleName(), getResources().getBoolean(R.bool.test2Value)+""); Log.i( this.getClass().getSimpleName(),getResources().getInteger(R.integer.test3Value)+"");