Android 中Gradle客户化参数配置
2019-11-06 本文已影响0人
乌龙窜白玉
场景:
不同的客户可能初始化的baseUrl不同,如果每次打包都去修改constant里的baseUrl配置就很麻烦。
做法:
- 在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'
}
}
}
- 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";
}
- 在代码中使用。我把项目用的常量放在了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;
}
- 打包时,选择相应的flavor就可以了。