相似点
都叫构建变体,可以通过配置来生成不同的构建,最后生成不同的apk,只是他们的构建变体的区分是基于不同维度。
不同点
从设计目的上看
构建类型(Build Type)
- 构建类型的设计主要为了区分软件不同阶段的配置需求,比如debug/test/pre/release
- 构建类型通常关注构建的相关的性质,例如是否启用代码混淆、是否签名应用等,不同签名密钥配置、是否使用资源压缩配置。
产品风味(Product Flavor)
- 产品风味是为了满足不同市场和用户需求而设计的。
- 产品风味主要关注应用程序的外观和行为,例如不同的应用 ID、图标、版本号、应用名等,可以给每个命名不同的渠道、变种应用,提供不同的外观和行为配置。
对比来看
- buildType致力于在不同软件生命周期(debug/test/release)进行构建配置,更多的是通过配置满足开发/测试/发布的效率和安全需求,原则上不同的构建类型对外产品形态呈现是相同的。
- 产品风味(Product Flavor)致力于为不同用户带来差异化的用户体现,可能这些差异化体现在UI设计/流程/系统版本等
从功能实现上讲
在构建类型(buildType)中可以定义
release {
versionCode rootProject.ext.versionCode
debuggable false
minifyEnabled true
zipAlignEnabled true
shrinkResources true
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
这些跟构建强相关的配置参数都是不能定义在productFlavor中。
而在productFlavor中
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName getSdkVersionName()
这些跟具体用户/设备相关的配置则不能定义的buildType中
网友评论