Android环境配置之使用properties文件

在进行环境切换时候,我们可以有多种方式,比如

  • 直接适用常量管理类
  • 利用Gradle实现app的环境分离
  • 使用配置文件的形式

其中,
第一种方式比较适合环境稳定/单一的情况,如果涉及多种环境,比如Alpha/UAT/Production等的情况,管理起来就不是很方便了,所以要考虑第二和第三种方式,用Gradle的方式,可以参考Multi-flavor variants,下面以properties文件为例.

1.在assets文件夹下,新建环境配置文件apiurl.properties,如下:
以Alpha和UAT为例,切换时只需注释掉不用的环境,即可.

#### 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

/**
 * 运行环境的管理切换类.
 * @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);
  
    /**
     * 获取配置文件中对应的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;

    }
}

你可能感兴趣的:(Android环境配置之使用properties文件)