安卓项目实战之:gradle配置中BuildConfig自定义字段的妙用

前言

众所周知,Android应用版本有debug测试版本和release正式版本之分,在平时的开发和调试中,有一些变量需我们要根据版本的不同去做相应的改变,例如服务器ip的设置,测试阶段我们一般使用测试服务器,正式上线之后我们必须使用正式服务器,很多人的做法都是在产品上线的时候手动的去改变这个变量的值,还有比如debug状态的boolean识别用来动态控制log日志的打印,很多人的做法都是在自定义的aplication中定义全局的变量,其实根本不用这么麻烦,studio为了使我们更加简单方便的管理这些字段和变量,已经为我们提供了BuildConfig这个类,这个类是项目编译的时候自动生成的,路径为:app/build/generated/source/BuildConfig/debug(或者release)/package name/BuildConfig.class,下面便是我创建一个新项目的时候自动生成的代码(debug模式下):

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.gpf.mvp";
  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";
}

BuildConfig.DEBUG

在Gradle脚本中默认的debug和release两种模式BuildCondig.DEBUG字段分别为true和false,而且不可更改,该字段在项目创建后自动生成,且会随着应用版本的不同自动进行值的切换。

但是在实际开发中,如果有测试和正式环境外还包含其他环境,那么要区分的话,默认生成的BuildCondig.DEBUG字段就无能为力了,这时我们可以通过自定义BuildConfig字段的方式来进行不同环境的区分。

自定义BuildConfig字段

自定义字段的语法如下:

buildConfigField "boolean", "LOG_DEBUG", "true"

上述语法就定义了一个boolean类型的LOG_DEBUG字段,值为true,此时再去查看自动生成的BuildConfig类我们就能看到自定义字段被成功添加了。

之后我们就可以在程序中使用BuildConfig.LOG_DEBUG字段来判断我们所处的api环境。

不仅如此,如果遇到复杂的环境,你也可能自定义一个String类型的字段,这种方式免去了发布之前手动更改环境的麻烦,减少出错的可能性,只需要在Gradle配置好debug、release等模式下的环境就好了,打包之后毫无顾虑。

buildTypes {
        release {
            ...
            buildConfigField "String" , "API_SERVER_URL" , '"http://gank.io/api/"'
            buildConfigField "boolean" , "LOG_DEBUG" , "false"
            ...
        }
        debug {
            ...
            buildConfigField "String" , "API_SERVER_URL" , '"http://baidu.com/api/"'
            buildConfigField "boolean" , "LOG_DEBUG" , "true"
            ...
        }
    }

然后在我们的代码中使用就可以直接使用,直接将我们的基本地址写成BuildConfig.API_SERVER_URL就可以了。

注意:定义String类型的变量不能直接使用双引号,应该’ " string " ',或者:

BuildConfigField "String", "key", "\"value\"" 

如果直接一个双引号,生成的BuildConfig会是这样
public static final String key = value;
自动生成的String类型的属性的值没有双引号,这样就会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智玲君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值