Android multi-channel packaging one (beginning to know the charm of gradle)

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

Open Build variants

Choose 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;
}

Guess you like

Origin blog.csdn.net/ff_hh/article/details/107027513