3.1使用构建类型
问题
您想要自定义调试和发布构建类型,或创建自己的其他类型。
解
android中的buildTypes块用于配置构建类型。
讨论
构建类型确定应用程序的打包方式。默认情况下,Gradle的Android插件支持两种不同类型的构建:debug和release。两者都可以在模块构建文件内部的buildTypes块内部进行配置。示例3-1中显示了新项目中模块构建文件中的buildTypes块。
实例3-1。模块构建文件中的默认buildTypes块
在示例中的释放块中,minifyEnabled指在打包的应用程序中自动删除未使用的资源。如果为true,Gradle还会从相关库中删除资源(如果不需要)。这只有在shrinkResources属性也设置为true的情况下才有效。
在示例3-2中,都设置为true。
实例3-2。删除资源和缩减代码
2开始资源萎缩
有关更多详细信息,请参阅“资源缩小”页面。
构建类型中的另一个属性是可调试的。调试生成自动将debuggable设置为true,而所有其他生成默认为false。
为了在单个设备上安装多个构建类型,Android必须能够区分其应用程序ID。 applicationIDsuffix属性允许Gradle生成多个APK,每个都有自己的ID(例3-3)。
实例3-3。为应用程序ID和版本名称添加后缀
图3-1。调试和发行版本都被部署
要区分它们,请选择每个版本,并在“应用信息”设置中查看完整版本名称,如图3-2所示。
图3-2。应用信息设置中的版本名称
更改应用程序的名称涉及合并资源,在3.3中讨论。不同的构建类型还允许为每个构建类型创建单独的源代码树。在3.5中讨论了合并来自不同构建类型(和风格)的源。
问题
您想要自定义调试和发布构建类型,或创建自己的其他类型。
解
android中的buildTypes块用于配置构建类型。
讨论
构建类型确定应用程序的打包方式。默认情况下,Gradle的Android插件支持两种不同类型的构建:debug和release。两者都可以在模块构建文件内部的buildTypes块内部进行配置。示例3-1中显示了新项目中模块构建文件中的buildTypes块。
实例3-1。模块构建文件中的默认buildTypes块
android {
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
示例中显示的唯一的构建类型是发布版本,但是如果要配置默认设置,也很容易添加调试块。任一块支持一系列属性。完整的属性和方法集可以在com.android.build.gradle.internal.dsl.BuildType类的DSL参考中找到。
在示例中的释放块中,minifyEnabled指在打包的应用程序中自动删除未使用的资源。如果为true,Gradle还会从相关库中删除资源(如果不需要)。这只有在shrinkResources属性也设置为true的情况下才有效。
在示例3-2中,都设置为true。
实例3-2。删除资源和缩减代码
android {
buildTypes {
release {
minifyEnabled true //1
shrinkResources true //2
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
1打开代码缩减
2开始资源萎缩
有关更多详细信息,请参阅“资源缩小”页面。
构建类型中的另一个属性是可调试的。调试生成自动将debuggable设置为true,而所有其他生成默认为false。
为了在单个设备上安装多个构建类型,Android必须能够区分其应用程序ID。 applicationIDsuffix属性允许Gradle生成多个APK,每个都有自己的ID(例3-3)。
实例3-3。为应用程序ID和版本名称添加后缀
android {
// ... other properties ...
buildTypes {
debug {
applicationIDsuffix '.debug'
versionNameSuffix '-debug'
}
// .. other build types ...
}
}
现在,应用程序的发布版本和调试版本都可以部署到同一设备。如果您访问设备上的设置并转到应用程序,您可以看到调试版和发行版都在同一个应用程序(图3-1)。
图3-1。调试和发行版本都被部署
要区分它们,请选择每个版本,并在“应用信息”设置中查看完整版本名称,如图3-2所示。
图3-2。应用信息设置中的版本名称
更改应用程序的名称涉及合并资源,在3.3中讨论。不同的构建类型还允许为每个构建类型创建单独的源代码树。在3.5中讨论了合并来自不同构建类型(和风格)的源。