Android中的横幅构建变体
在开发 Android 应用程序时,我们通常需要各种类型的 APK,或者您可以在开发和发布阶段说不同版本的 APK。例如,您可能需要一个不带 proguard 的调试 APK 或一个带 proguard 的调试 APK,或者您可能需要一个供免费用户使用的 APK 和一个供付费用户使用的 APK,或者您可能需要一个供 Android 6 及更高版本使用的 APK 和一个 APK对于低于 6 的 Android 版本,还有许多其他可能性。但问题是,您将如何创建应用程序的这么多版本。对于这些版本,您打算有不同的项目还是只有一个项目就足够了?因为代码几乎保持不变,只是一些 API 或一些构建配置会改变?那么,如何实现呢?这可以通过使用构建变体来实现,即
在这篇中,我们将了解什么是构建变体以及如何在 Android 中创建不同的构建变体。那么,让我们开始吧。
构建类型和构建变体
在构建任何 Android 应用程序时,我们会创建各种构建类型,例如“调试”和“发布”。同时,我们可以为同一个应用创建不同的产品风格,例如免费用户的免费产品风格和付费用户的付费产品风格。因此,Android Studio 提供了 Build Variants 功能,可以将其视为所有构建类型和所有产品风格的笛卡尔积。
您需要做的就是在模块级build.gradle文件中添加各种构建类型,在开发或生产期间,您只需选择要测试或发布的构建变体。
注意:默认情况下,Android Studio 将为您的项目生成“调试”和“发布”构建类型。
Build Variant 选项可以在 Android Studio 的屏幕左侧(主要在资源管理器下方)找到,或者转到Build > Select Build Variant或者您可以简单地按cmd + shift + A并搜索“Build Variant”
因此,要更改构建类型,您只需从构建变体中选择您的构建类型,在项目同步后,您就可以开始了。但是如何创建构建类型呢?让我们来看看。
添加构建类型
在本节中,我们将学习如何在 Android 中添加各种构建类型。
默认情况下,每当您创建任何项目时,Android Studio 都会为该项目创建两种构建类型,即“调试”和“发布”。但是为了添加更多的构建类型,您需要将它们添加到您的模块级build.gradle文件和buildTypes块下。以下是相同的示例:
android {
defaultConfig {
applicationId "com.mindorks"
versionCode 3
versionName "0.0.3"
...
}
buildTypes {
debug {
versionNameSuffix ".dev"
debuggable true
...
}
release {
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
...
}
minifiedDebug {
versionNameSuffix ".dev"
debuggable true
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
...
}
}
...
}
在上面的代码中,共有三种构建类型,即debug、release和minifiedDebug。debug和release与 Android Studio 生成的相同,但还具有一些附加属性,minifiedDebug是debug + proguard 组合的新构建类型。
如果仔细查看代码,您会发现在 defaultConfig 块中,版本名称为“0.0.3”,而在debug和minifedDebug构建类型中,我们在版本名称后添加了“.dev”后缀。这将使 dev APK 与 prod APK 区分开来。
同样,您可以创建名为noMinifedRelease的构建类型,它将是 release + without proguard 的组合。
在某些情况下,您希望使用某些先前构建类型的相同属性并添加或修改某些属性以创建新的构建类型。因此,为此,您可以使用initWith:
newBuildType {
initWith debug
versionNameSuffix ".newbuild"
...
}
以上是新构建类型名称newBuildType的代码。由于我们使用的是initWith debug,所以它将包含debug的所有属性,您可以为其添加更多属性,或者您也可以编辑debug的某些属性并保持其他内容不变。在我们的例子中,我们使用“ .newbuild ”而不是调试中的“ .devversionNameSuffix ”来编辑和设置它。
现在,如果您在 Android Studio 中打开 Build Variants 选项,您会发现有 4 个构建变体,即debug、release、minifiedDebug和newBuildType。您可以为您的构建选择其中任何一个。
注意:如果您在build.gradle文件中使用 Kotlin DSL,那么要添加构建类型,您需要使用create("yourBuildTypeName")buildTypes 块中的方法。
添加产品风味
您可以将 Product Flavors 视为您的应用程序的不同变体。即,如果您向不同的用户提供不同的内容但使用相同的代码库,那么您可以将产品风格添加到您的应用程序中。
例如,您可以添加“开发”和“生产”等产品风味,在这些风味中,您可以为同一工作流程添加不同的 API 密钥。例如,您可以在开发风格中添加开发 API ,在生产风格中添加生产 API。
要添加产品风味,您需要在productFlavors块内添加android块,并且每个产品风味必须具有一些风味维度:
android {
...
defaultConfig {...}
buildTypes {
debug{...}
release{...}
}
flavorDimensions "version"
productFlavors {
development {
dimension "version"
versionNameSuffix ".dev"
}
production {
dimension "version"
versionNameSuffix ".prod"
}
}
}
产品风味最好的部分就是它们与构建类型之间的相关联。例如,如果您现在拥有两种名为“debug”和“release”的构建类型以及两种名为“development”和“production”的产品风格,那么您的构建变体将会是:
- 开发调试
- 开发发布
- 生产调试
- 生产发布
现在,您可以为构建选择所需的任何构建变体。
您可以创建任意数量的产品风味维度,方法是使用逗号 ( ,) 将每个维度与其他维度分开,并使用 . 来使用它dimension "dimensionName"。例如:
flavorDimension "dimensionOne", "dimensionTwo", "dimensionThree"
因此,这就是您如何创建产品风味并在您的应用程序中使用它来制作各种版本的方法。
作者:Sumit Mishra
链接:https://blog.mindorks.com/build-variants-in-android
网友评论