说BuildConfig类之前,先谈谈通常会遇到的场景:
1.Log打印日志这个需求,通常大家都会写一个LogUtils工具类,暴露一些常用的log.e log.d log.i等方法, 在方法会用到一个静态常量去作为开关。
2.Api接口地址的变换这个需求,通常都是写一个类里面放上一个静态常量表示Api的地址,然后我们是需要debug模式运行时采用测试环境Api接口地址,在打release包上线时则切换为生产环境的Api接口地址。
3.配置一些第三方平台的固定参数,比如微信、QQ、微博的AppKey、AppSecret。
……
以上说到的几个常见的需求,再不借助系统BuildConfig类的情况下是需要自己写常量类,每次不厌其烦地注释、更改内容……
这时候的你肯定希望,能把自己的双手从这些简单繁琐的工作中解放出来。其实咱们就能利用build插件gradle自动生成的BuildConfig类来解决这些问题。

android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion
    buildToolsVersion rootProject.ext.android.buildToolsVersion

    defaultConfig {
        applicationId "com.xxx.android"
        minSdkVersion rootProject.ext.android.minSdkVersion
        targetSdkVersion rootProject.ext.android.targetSdkVersion
        versionCode 1
        versionName "1.0"
        buildConfigField "String", "QQ_APPID", '"xxxxxxxx"'
        buildConfigField "String", "WB_APPID", '"xxxxxxxx"'
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
 buildTypes {

        release {
            buildConfigField "String", "API_SERVER_URL", '"http://test.example.com/api"'
            //混淆
            minifyEnabled true
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true
            //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            // 声明使用的签名配置
            signingConfig signingConfigs.releaseConfig
        }

        debug {
            buildConfigField "String", "API_SERVER_URL", '"http://test.example.com/api"'
            minifyEnabled false
            zipAlignEnabled true
            shrinkResources false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.debug
        }
    }

}

在编译以后, 去查看BuildConfig类发现如下图

image.png

果然看见了我们设置的自定义参数……
其中BuildConfig.DEBUG 表示目前是否debug状态,用到这个变量的地方很多。

最后要说的使用方式那就太简单了,直接BuildConfig.xxxx调用即可。


原文链接https://blog.csdn.net/u012982629/article/details/81088101

文章作者: Jason_2k
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 极客卷毛——我的学习经验记录
Android
喜欢就支持一下吧