在我们开发APP时可能会配置信息很多乱七八糟的东西,并且这些都是死的
比如:
三方的appke或者我们的测试或者生产域名,都可以写在一个配置表单里面统一去管理会非常的方便
1.使用及原理
我们可以在主工程中的build.gradle文件中添加以下代码
buildTypes {
debug {
buildConfigField "String", "BASE_UTL", "\"https://xxxx.com\""
resValue "string", "app_name", "base"
}
}
这里我们使用到了buildConfigField和 resValue
buildConfigField关键字:
可以在编译时build\generated\source\buildConfig\变体\包名目录下面生成对应的变量直接在类中引用
如下:在类中引用:
BuildConfig.BASE_UTL(注意导入对应的包名)
resValue 关键字:
可以在编译时build\generated\res\resValues\变体\values,目录下面生成对应的String资源
如下:跟平常直接使用资源文件的String是一样的
2.优化
了解了大概原理之后,我们稍微优化一下封装成一个表单
步骤:
- 在工程的根目录创建一个config.gradle文件
- 引用gradle脚本文件
- 在变体中对应并且类中引用
第一步:
- 在工程的根目录创建一个config.gradle文件,格式可以直接按照这种处理
ext{
//域名
baseUrl = "https://xxxx.com"
//包名
applicationId = "com.shell.base"
//App名称
app_name = "base"
//App版本信息
version = [
versionCode:1,
versionName:"1.0.1"
]
}
第二步:
- 在工程根目录的build.gradle中添加
apply from: './config.gradle'
第三步:
- 在变体中对应并且类中引用
defaultConfig { applicationId rootProject.ext.applicationId versionCode rootProject.ext.version.versionCode versionName rootProject.ext.version.versionName } buildTypes { debug { buildConfigField "String", "BASE_UTL", "\"${rootProject.ext.baseUrl}\"" resValue "string", "app_name", "${rootProject.ext.app_name}" } release{ buildConfigField "String", "BASE_UTL", "\"${rootProject.ext.baseUrl}\"" resValue "string", "app_name", "${rootProject.ext.app_name}" } }
注意:最好两种变体都要一样,以免打包时出现某些环境编译生成失败
至此就完成了表单的简单封装,这种方式也可以用来管理依赖