android multi-channel packaging one:
常见开发中会有正式环境、测试环境两种配置,可以利用 gradle 进行简单配置,区分不同环境加载的配置
defaultConfig {
applicationId "com.example.cyf.kotlin"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
flavorDimensions "cyf" // 配置flavor 用于添加
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
// 配置自己的渠道
productFlavors {
guanwang {
dimension 'cyf' }
guanwang2 {
dimension 'cyf' }
}
根据环境更改自己配置,buildConfigField配置完成后可以通过 BuildConfig.XXX 找到对应的字段名
android.applicationVariants.all {
variant ->
if(variant.flavorName == "guanwang"){
// BuildConfig 类对应生成 public static int APP_FLAVOR_NAME = 1
buildConfigField("int", "APP_FLAVOR_NAME", "1")
} else if(variant.flavorName == "guanwang2") {
buildConfigField("int", "APP_FLAVOR_NAME", "2")
}
printf("\nversionName $variant.versionName")
// 改版本名称
variant.outputs.each {
output ->
if (variant.buildType.name == "debug") {
output.versionNameOverride = variant.versionName + "t"
}
}
}
How to use android Studio to directly run the corresponding channel
Corresponding to generate BuildConfig class
public final class BuildConfig {
public static final boolean DEBUG = false;
public static final String APPLICATION_ID = "com.example.cyf.kotlin";
public static final String BUILD_TYPE = "release";
public static final String FLAVOR = "guanwang";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
// Fields from the variant
public static final int APP_FLAVOR_NAME = 1;
// Fields from build type: release
public static final boolean LOG_DEBUG = false;
}