在進行環(huán)境切換時候休建,我們可以有多種方式乍恐,比如
- 直接適用常量管理類
- 利用Gradle實現(xiàn)app的環(huán)境分離
- 使用配置文件的形式
其中,
第一種方式比較適合環(huán)境穩(wěn)定/單一的情況测砂,如果涉及多種環(huán)境茵烈,比如Alpha/UAT/Production等的情況,管理起來就不是很方便了砌些,所以要考慮第二和第三種方式呜投,用Gradle的方式,可以參考Multi-flavor variants,下面以properties文件為例.
1.在assets文件夾下存璃,新建環(huán)境配置文件apiurl.properties,如下:
以Alpha和UAT為例仑荐,切換時只需注釋掉不用的環(huán)境,即可.
#### Alpha ####
#versionName=A
#memberApp=http://xxx.alpha.com/member-app/v1/api
#designApp=http://xxx.alpha/design-app/v1/api
#### UAT ####
versionName=A
memberApp=http://xxx.uat.com/member-app/v1/api
designApp=http://xxx.uat.com/design-app/v1/api
2. 讀取apiurl.properties
/**
* 運行環(huán)境的管理切換類.
* @author liuhea
* @date 2016-6-6 .
*/
public class ApiManagerV2 {
public static final String PROPERTY_PATH = "apiurl.properties";
private static final String MEMBER_APP = "memberApp";
private static final String DESIGN_APP = "designApp";
private static final String VERSION_NAME = "versionName";
/*登錄地址*/
public final static String LOGIN_PATH = getUrlPath(LOGIN_URL);
/*member-app*/
public final static String MEMBER_PATH = getUrlPath(MEMBER_APP);
/*design-app*/
public final static String DESIGN_PATH = getUrlPath(DESIGN_APP);
/**
* 獲取配置文件中對應(yīng)的URL地址
*
*/
private static String getUrlPath(String propKey) {
String urlPath = (String) PropUtil.loadAssetsProperties(AdskApplication.getInstance(), PROPERTY_PATH).get(propKey);
return urlPath;
}
}
/**
* 讀取配置文件的工具類 .
* @author liuhea .
* @date 2016-6-6 .
*/
public class PropUtil {
/**
* 讀取assets文件夾下的文件
*/
public static Properties loadAssetsProperties(Context context, String arg) {
Properties prop = null;
prop = new Properties();
//first load default properties
try {
prop.load(context.getAssets().open(arg));
} catch (IOException e) {
e.printStackTrace();
}
return prop;
}
/**
* 讀取Res文件夾的文件
*/
public static Properties loadResProperties(Context context, int id) {
Properties prop = new Properties();
//first load default properties
try {
prop.load(context.getResources().openRawResource(id));
} catch (IOException e) {
e.printStackTrace();
}
return prop;
}
}