Android 中的产品口味配置
Product Flavors Configurations in Android
我是 Product Flavors
的新手,我浏览了很多链接来理解它。但也有一些疑点尚不清楚。我有 3 种产品口味,即:qa
、dev
和 prod
。我只创建了这三种产品口味,因为我需要为不同的口味更改 URL 和一些 API 键,我通过创建 3 个不同的包并放置相同的 java
(具有 URL)文件来完成在 app/src
目录中。我的build.gradle
就是这样。我需要在每种口味中添加哪些强制性的东西?相关内容:proguard
、signingConfigs
:
android {
useLibrary 'org.apache.http.legacy'
compileSdkVersion 26
buildToolsVersion '26.0.2'
flavorDimensions "default"
defaultConfig {
applicationId "com.sagar.demo"
minSdkVersion 21
targetSdkVersion 25
multiDexEnabled true
versionCode 67
versionName "1.0.0" //Update Version build number
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags ""
}
}
}
signingConfigs {
release {
storeFile file("myKeystore")
storePassword "Keystore2017"
keyAlias "SagarSuri"
keyPassword "Keystore2020"
}
}
buildTypes {
debug {
debuggable true
minifyEnabled false // shrink
useProguard false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
debuggable false
minifyEnabled true
useProguard true
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
productFlavors {
qa {
dimension "default"
}
prod {
dimension "default"
signingConfig signingConfigs.release
}
dev {
dimension "default"
}
}
}
产品口味的工作方式是,您最终会得到每个 dimension
中的口味数量乘以 buildTypes
的数量,在您的情况下,您有 3 种口味尺寸和 2 种构建类型,以 3x2=6 构建变体结束,如下所示:
- qaDebug
- qa发布
- 产品调试
- 产品发布
- 开发调试
- 开发版本
每个组合都是相关产品风格配置和相关构建类型配置的实际组合。变体 qaDebug
的含义,它的配置来自 qa
下定义的和 debug
下定义的组合。因此,如果 debug
已经定义了 proguardFiles
,那么通常不需要在 qa
中定义它,除非如果 qa
需要额外的混淆器配置用于它自己的代码,那么这是另一回事需要决定,因此应该针对每种风格而不是在构建类型中定义混淆器。
我想指出的另一个方面是signingConfig
,这里为prod
和release
定义了相同的值。这意味着任何以 prod
开头或以 Release
结尾的组合都将设置 signingConfig
,在本例中为:qaRelease
、prodDebug
、prodRelease
和 devRelease
.
因此配置完全取决于您的选择和设计,并非所有项目都具有相同的配置。
我是 Product Flavors
的新手,我浏览了很多链接来理解它。但也有一些疑点尚不清楚。我有 3 种产品口味,即:qa
、dev
和 prod
。我只创建了这三种产品口味,因为我需要为不同的口味更改 URL 和一些 API 键,我通过创建 3 个不同的包并放置相同的 java
(具有 URL)文件来完成在 app/src
目录中。我的build.gradle
就是这样。我需要在每种口味中添加哪些强制性的东西?相关内容:proguard
、signingConfigs
:
android {
useLibrary 'org.apache.http.legacy'
compileSdkVersion 26
buildToolsVersion '26.0.2'
flavorDimensions "default"
defaultConfig {
applicationId "com.sagar.demo"
minSdkVersion 21
targetSdkVersion 25
multiDexEnabled true
versionCode 67
versionName "1.0.0" //Update Version build number
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags ""
}
}
}
signingConfigs {
release {
storeFile file("myKeystore")
storePassword "Keystore2017"
keyAlias "SagarSuri"
keyPassword "Keystore2020"
}
}
buildTypes {
debug {
debuggable true
minifyEnabled false // shrink
useProguard false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
debuggable false
minifyEnabled true
useProguard true
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
productFlavors {
qa {
dimension "default"
}
prod {
dimension "default"
signingConfig signingConfigs.release
}
dev {
dimension "default"
}
}
}
产品口味的工作方式是,您最终会得到每个 dimension
中的口味数量乘以 buildTypes
的数量,在您的情况下,您有 3 种口味尺寸和 2 种构建类型,以 3x2=6 构建变体结束,如下所示:
- qaDebug
- qa发布
- 产品调试
- 产品发布
- 开发调试
- 开发版本
每个组合都是相关产品风格配置和相关构建类型配置的实际组合。变体 qaDebug
的含义,它的配置来自 qa
下定义的和 debug
下定义的组合。因此,如果 debug
已经定义了 proguardFiles
,那么通常不需要在 qa
中定义它,除非如果 qa
需要额外的混淆器配置用于它自己的代码,那么这是另一回事需要决定,因此应该针对每种风格而不是在构建类型中定义混淆器。
我想指出的另一个方面是signingConfig
,这里为prod
和release
定义了相同的值。这意味着任何以 prod
开头或以 Release
结尾的组合都将设置 signingConfig
,在本例中为:qaRelease
、prodDebug
、prodRelease
和 devRelease
.
因此配置完全取决于您的选择和设计,并非所有项目都具有相同的配置。