如何在Android项目中配置BuildConfig常量

在AndroidStudio中构建项目的时候,可以通过build.gradle来配置一些常量,用于全局使用,比如说APP的版本号、作者名、公司名等等。那么怎么实现这些配置呢?

首先我们打开android项目app目录下的build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.xing.app.xxx"
        minSdkVersion 17
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
}

dependencies {
    //省略部分代码
}

如果没有意外的话,打开应该是这个样子的

重点我们看

    defaultConfig {
        applicationId "com.xing.app.xxx"
        minSdkVersion 17
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        
        //配置APP变量
        buildConfigField ("boolean", "isOpen", "false")
        buildConfigField ("String", "str", "\"测试字符\"")
        buildConfigField ("int", "inin", "18")
        
    }

当我们加入buildConfigField语句之后,rebuild一下项目,就可以在该项目中的任何一个地方应用这个isOpen变量啦,比如

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //就像这样
        boolean isOpen = BuildConfig.isOpen;
        String str = BuildConfig.str;
        int tmp = BuildConfig.inin;

    }
}

可能眼睛尖的小伙伴已经发现了,为什么定义String类型的时候,要用转义字符加双引号呢?因为字符串类型较为特殊,在你编译完成之后如果不加双引号,就会发现BuildConfig类报错。。。原因就是字符串在定义的时候没有双引号

与此同时,BuildConfig类的情况是这样的

public final class BuildConfig {

  //下面就是我们通过field添加进来的变量
  // Fields from default config.
  public static final int inin = 18;
  public static final boolean isOpen = false;
  public static final String str = "测试字符";//如果不加转义字符就会使这里报错
}

 

你可能感兴趣的:(笔记,BuildConfig,android,gradle,Field)