Android 中Gradle客户化参数配置

场景:

不同的客户可能初始化的baseUrl不同,如果每次打包都去修改constant里的baseUrl配置就很麻烦。

做法:

  1. 在app的gradle里android标签下增加productFlavors标签,来罗列不同客户(渠道)。
android {
    ...
    flavorDimensions 'version'//命名维度需要加上
    productFlavors{
        normal{//客户1
            buildConfigField('String','BASE_URL_ADDR','"http://www.normal.com"')//注意这里字符串值写法
            dimension 'version'
        }
        axb{//客户2
            buildConfigField('String','BASE_URL_ADDR','"http://www.axb.com"')
            dimension 'version'
        }
    }
}
  1. Sync Now Gradle后,会自动生成一个BuildConfig文件
/**
 * Automatically generated file. DO NOT MODIFY
 */
package com.example.activity;

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.example.activity";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "normal";
  public static final int VERSION_CODE = 3;
  public static final String VERSION_NAME = "1.0";
  // Fields from product flavor: normal
  public static final String BASE_URL_ADDR = "http://www.normal.com";
}
  1. 在代码中使用。我把项目用的常量放在了Constant类,把BuildConfig.BASE_URL_ADDR赋值给BASE_URL
import static com.example.activity.BuildConfig.BASE_URL_ADDR;
/**
 */
public class Constant {
    public static final String BASE_URL = BASE_URL_ADDR;
}
  1. 打包时,选择相应的flavor就可以了。

想深入了解Gradle?官方Gradle Tips在此

你可能感兴趣的:(Android 中Gradle客户化参数配置)