Chapter4:创建构建Variant
- Variant 英文翻译:变体。
4.1 构建类型
在Gradle的Android插件中,构建类型用来定义如何构建一个应用或依赖库。可以在 buildTypes代码块 中定义:
android { buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
minifyEnabled :清除无用资源。
创建构建类型:除了debug/release构建类型外,可以自定义构建类型,只需要在 buildTypes代码块 中新增一个类似debug/release的对象即可。
android { buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } staging{ applicationIdSuffix ".staging" versionNameSuffix "-staging" } } }
自定义构建类型staging定义了一个新的applicationId后缀,表示相同设备可以同时安装release版本和staging版本。版本名也添加了新的后缀,用于在同一设备上区分多个应用版本。
//另一种创建方式,复制一个已存在的构建类型并在其基础上覆写或定义额外属性。 staging.initWith(buildTypes.release) staging{ applicationIdSuffix ".staging" versionNameSuffix "-staging" }
源集:**一个源集(sorce set)就是一组源文件,他们会被一起执行和编译。**当创建一个新的构建类型时,Gradle会创建一个新的源集。
在Android Studio中需要手动创建源集的目录。
源集使得我们可以针对特定的构建类型覆写某些属性,为某些构建类型添加自定义代码,以及为不同的构建类型添加自定义布局或字符串。
注意:添加Java类到构建类型时时互相排斥的。比如添加了example.java到staging源集,可以往debug和release源集中加入example.java,但是不能添加example.java到main源集。
使用不同源集时,资源文件会被特殊处理。Drawables 和 layout 文件将完全覆盖在 main 源集中有相同名称的资源;values文件夹中的文件不会被覆盖,而是整合到main资源中,同一子属性会被非main源集中的替代。
<!--