一般公司开发有许多种环境,至少接口请求前缀会不同,存在测试环境和线上环境,另外可能还有许多不同的配置,如下配置可使app使用不同配置打包。
android{
...
buildTypes {
mytest {//测试环境
manifestPlaceholders = [appname:"app测试版"]
signingConfig signingConfigs.debug
applicationIdSuffix '.mytest'//为applicationId添加后缀,这样可以多个版本一起安装在同一部手机
buildConfigField" String","API_HOST","\"${props['mytest_host']}\""
...
}
debug {//开发环境
manifestPlaceholders = [appname:"app开发版"]
signingConfig signingConfigs.debug
applicationIdSuffix '.debug'
buildConfigField "String","API_HOST","\"${props['debug_host']}\""
...
}
release {
manifestPlaceholders = [appnamee:"营销助手",JPUSH_PKGNAME:"com.ezr.assistant.sellerassistant"]
signingConfig signingConfigs.release
buildConfigField "String","API_HOST","\"${props['release_host']}\""
...
minifyEnabled true//混淆
zipAlignEnabled true //Zipalign优化
shrinkResources true// 移除无用的resource文件
}
}
}
以上例子中的API_HOST使用的话BuildConfig.API_HOST即可在代码中取到其值,另外如果原来有使用BuildConfig.DEBUG的,如果多配了一个其它环境最好给用一个自己定义的量,因为BuildConfig.DEBUG在除debug环境以外是默认为false的