BuildConfig 前面文章有简要提到,这次详细介绍每个命令代表什么。
这个功能非常强大,我们可以通过在这里设置一些key-value对,这些key-value 对在不同编译类型的 apk 下的值不同,比如我们可以为debug 和release 两种环境定义不同的服务器
先来看下简单的release模式
buildTypes {
release {
//是否开启混淆
minifyEnabled true
//混淆文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
对应的build是这样的:
你可能会问,没有设置debug版本,为啥有一个assembleDebug,其实你不设置release配置,assembleRelease也存在,因为debug,release是默认的配置。
我们可以加一些其他type。比如beta用于平时开发,这个命令打出来的包,日志开关开着,并且没有混淆,方便定位错误。proguard用于测试即将发布的版本,日志开关开着,加代码混淆,主要验证代码混淆后是否有异常,并且可以根据日志定位错误。
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
beta {
minifyEnabled true
}
proguard{
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
再次查看我们的task,发现多了这些task
发布apk包,需要签名,非常简单只需要在对应的buildType下设置signingConfig
signingConfigs {
release {
keyAlias 'keystore'
keyPassword '111111'
storePassword '111111'
storeFile file('/Users/keystore/Documents/app/stone.keystore')
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
beta.initWith(buildTypes.debug)
beta {
minifyEnabled true
signingConfig signingConfigs.release
}
proguard{
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
signingConfig这个没什么说的gradle的api,signingConfigs.release中的signingConfigs对应signingConfigs task,这名称也不能修改,照着写就行了;signingConfigs.release中的release是自定义的,你可以随意定义,也可以根据buildType定义多套签名,一般为了方便,使用一套签名就ok
其他关于buildType的属性请查阅官网