Gradle之BuildConfig自定义常量

注意:本篇文章是本人阅读相关文章的总结,方便以后查阅,所有内容非原创,侵权删。

本篇文章内容来自于
Gradle之使用BuildConfig自定义常量
Android Studio之BuildConfig类

目录

  1. 什么是BuildConfig
  2. 使用BuildConfig自定义常量
  3. 在哪里可以配置BuildConfig
  4. BuildConfig+gradle.properties配合使用

1. 什么是BuildConfig

BuildConfig是android studio在打包时自动生成的一个java类

BuildConfig在哪里?
BuildConfig类在项目工程的build/generated/source/buildConfig/androidTest或debug或release中,这些目录中的BuildConfig类中有相同的常量字段。

《Gradle之BuildConfig自定义常量》

但这里BuildConfig中的常量字段的值是完全可以自定义的,
这样我们就可以通过定义一些常量使其在debug以及release中生成不同的字段,

2. 使用BuildConfig自定义常量

第一步:使用buildConfigField用于给BuildConfig文件添加一个字段
在app/build.gradle中的buildTypes下,我们可以为release以及debug定义我们所需要的常量:

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
            //buildConfigField用于给BuildConfig文件添加一个字段
            //三个参数:1.要定义的常量的类型 2.该常量的命名 3.该常量的值
            buildConfigField("String", "HTTP_BASE", '"https://www.baidu.com/api/release/"')
            buildConfigField("String","HAHA","\"haahahah\"")
        }
        debug{
            buildConfigField("String", "HTTP_BASE", '"https://www.baidu.com/api/debug"')
            buildConfigField("String","HAHA","\"haahahah\"")
        }
    }
    ...
}

第二步:rebuild项目
添加好这些值后,rebuild一下项目,然后在BuildConfig类中,这些我们刚刚定义的值就会显示出来,这些值就可以在整个module中使用了。

第三步:使用BuildConfig常量

Log.d("xl",BuildConfig.HTTP_BASE);
Log.d("xl",BuildConfig. HAHA);

3. 在哪里可以配置BuildConfig

来自Android 与gradle 4 –gradle配置之BuildConfig与resValue

defaultConfig {
  ...
    buildConfigField("String","testKey","\"testValue\"")
}

buildTypes {
...
    debug {
        buildConfigField("String","debugtestKey","\"debugtestValue\"")
    }
}
productFlavors{
    Flavortest{
        buildConfigField("String","testFlavorKey","\"testFlavorValue\"")
    }
}

4. BuildConfig+gradle.properties配合使用

我们可以将敏感信息存放在BuildConfig文件,同时通过将敏感信息存放在工程中的gradle.properties中,可以避免将其上传到版本控制系统(svn或者git上),从而将敏感信息控制在少数人手里,而不是暴露给所有svn或者git权限的人
但是安全级别也是很低的,我们可以对生成的APK反编译,查看BuildConfig.class文件,还是可以看到API Key的取值

第一步:在app/build.gradle设置BuildConfig

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //buildConfigField用于给BuildConfig文件添加一个字段
            buildConfigField("String","KEY","\"${AppKey}\"")
        }
        debug{
            buildConfigField("String","KEY","\"${AppKey}\"")
        }
    }
    ...
}

第二步:””${AppKey}””取值定义在gradle.properties文件中。

AppKey=123456

第三步:使用

Log.d("xl",BuildConfig.KEY);
    原文作者:Amy_LuLu__
    原文地址: https://www.jianshu.com/p/274c9d95cf76
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞