📅  最后修改于: 2023-12-03 14:52:12.667000             🧑  作者: Mango
在 Android 应用程序中创建不同的构建变体是一种常见的需求。变体可以是不同的版本、不同的渠道、不同的语言或不同的主题。Android SDK 提供了多种生成变体的方式。下面是一些常用的方式:
productFlavors 允许您为您的应用程序创建不同的变体。例如,您可以创建不同的变体,如 development、production、staging 等,以区分不同的构建。productFlavors 允许您在一个项目中创建多个版本,每个版本都可以在编译期间进行更改和选择,从而使您能够同时构建多个版本。
在 app/build.gradle 文件中添加以下代码:
android {
...
defaultConfig {
applicationId "com.example.app"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
productFlavors {
development {
applicationIdSuffix ".dev"
versionNameSuffix "-dev"
}
production {
applicationIdSuffix ""
}
}
}
在上面的代码中,我们创建了两个 flavors,一个是 development,另一个是 production。每个 flavor 都可以定义自己的 applicationId、versionName、以及其他构建属性。在这个例子中,development flavor 后缀的应用程序 ID 是 ".dev",versionName 是以 "-dev" 结尾。production flavor 什么都没有设置,即默认情况下。这个例子还定义了默认的应用程序 ID、版本名称等属性。
在命令行使用以下命令来构建 productFlavors:
./gradlew assembleDevelopmentRelease
./gradlew assembleProductionRelease
在 Android Studio 中,您可以在 "Build Variants" 窗口中选择不同的变体,然后点击 "Run" 按钮来构建它们。
buildTypes 与 productFlavors 有些类似,但是它们是用于区分不同的构建类型,例如 release、debug 等。buildTypes 允许您为不同的构建类型定义不同的构建选项,例如禁用调试选项、启用混淆等。
在 app/build.gradle 文件中添加以下代码:
android {
...
defaultConfig {
applicationId "com.example.app"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug {
debuggable true
minifyEnabled false
signingConfig signingConfigs.debug
}
release {
debuggable false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
}
在上面的代码中,我们创建了两个 buildTypes,一个是 debug,另一个是 release。每个 buildType 都可以定义自己的 debuggable、minifyEnabled、proguardFiles 以及其他选项。在这个例子中,debug buildType 启用了调试功能,禁用了混淆。release buildType 禁用了调试功能,启用了混淆。这个例子还定义了默认的应用程序 ID、版本名称等属性。
要构建 buildTypes,请使用以下命令:
./gradlew assembleDebug
./gradlew assembleRelease
在 Android Studio 中,您可以在 "Build Variants" 窗口中选择不同的构建类型,然后点击 "Run" 按钮来构建它们。
productFlavors 和 buildTypes 可以组合起来创建更多的构建变体。例如,如果您想要为不同的构建类型和不同的渠道创建不同的版本,则可以结合使用它们。
在 app/build.gradle 文件中添加以下代码:
android {
...
defaultConfig {
applicationId "com.example.app"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
productFlavors {
free {
applicationIdSuffix ".free"
}
paid {
applicationIdSuffix ".paid"
}
}
buildTypes {
debug {
debuggable true
minifyEnabled false
signingConfig signingConfigs.debug
}
release {
debuggable false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
}
在上面的代码中,我们创建了两个 flavors,一个是 free,另一个是 paid;又创建了两个 buildTypes,一个是 debug,另一个是 release。free flavor 和 paid flavor 根据应用程序 ID 后缀来定义,debug buildType 启用了调试功能,禁用了混淆,release buildType 禁用了调试功能,启用了混淆。
要构建 Build Flavor 和 Type,请使用以下命令:
./gradlew assembleFreeDebug
./gradlew assemblePaidDebug
./gradlew assembleFreeRelease
./gradlew assemblePaidRelease
在 Android Studio 中,您可以在 "Build Variants" 窗口中选择不同的变体,然后点击 "Run" 按钮来构建它们。
在 Android 中创建不同的构建变体是一种常见需求。productFlavors、buildTypes 以及它们的组合是实现这个目标的常用方式。开发人员可以使用这些功能为不同的版本、不同的渠道、不同的语言、不同的主题等创建不同的构建选项。