借鉴 http://blog.youkuaiyun.com/myliuyx/article/details/40424455 修改
一、
1.创建properties文件,在Android 工程目录下 res/raw 新建一个 .prorperties 文件;或者在res/assests目录下创建
2.编写 配置信息
如果我们需要配置
UPDATE_PHOTO_URL 修改图片地址
NOTIC_MSAGES_URL 通知地址
IMAGEPAHT 图片地址
几个用户获取图片和通知的信息。
######开发环境配置########
UPDATE_PHOTO_URL_DEBUG = http://xxx.xxx.xxx/servlet/MobileServlet
NOTICE_MSAGES_URL_DEBUG = http://xxx.xxx.xxx/msgPushTxt/
IMAGEPATH_DEBUG = http://xxx.xxx.xx/img/
HOST_DEBUG = 10.0.0.1
######测试环境配置########
UPDATE_PHOTO_URL_TEST = http://xxx.xxx.xxx/servlet/MobileServlet
NOTICE_MSAGES_URL_TEST = http://xxx.xxx.xxx/msgPushTxt/
IMAGEPATH_TEST = http://xxx.xxx.xx/img/
HOST_TEST = 10.0.0.1
######生产环境配置########
UPDATE_PHOTO_URL_PRO = http://xxx.xxx.xxx/servlet/MobileServlet
NOTICE_MSAGES_URL_PRO = http://xxx.xxx.xxx/msgPushTxt/
IMAGEPATH_PRO = http://xxx.xxx.xx/img/
配置文件里面分别的给这个配置信息 加上 "_TEST"、"_DEBUG"、"_PRO" 来分别的区分 测试环境、开发环境、以及生产环境。
二、配置
1.首先需要再清单文件AndroidManifest.xml 下面 application 节点下面配置 一个meta-date节点
<!-- 开发模式,debug:调试(开发)模式,test:测试模式,pro:生产模式-->
<meta-data android:value="debug" android:name="DEV_MODEL"/>
这个属性下面的 value 对应的 分别是 debug test pro 就是刚刚我们配置文件里面的 3个环境。
2.在application类中添加(loadConfig)配置方法和(getDevModelValue)使用方法,
public Properties property = null;//声明变量
/**
* 加载开发环境的配置文件
* @author zzw
* **/
private void loadConfig()
{
InputStream in = null;
property = new Properties();
try {
in = getResources().openRawResource(R.raw.app);
property.load(in);
} catch (IOException e) {
Log.e(TAG, "load properties error",e);
}finally{
if(in!=null){
try {
in.close();
} catch (IOException e) {
}
}
}
}
/**
* 获取开发模式
* @return 配置文件对应 的值。
* **/
public String getDevModelValue(String key){
ApplicationInfo appInfo=null;
String msg = "DEBUG";//默认是开发模式
try {
//获取meta-data 属性
appInfo= this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
//获取meta-data 下面DEV_MODEL 的值
msg = appInfo.metaData.getString("DEV_MODEL");
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "获取开发模式失败", e);
}
//将Applicaition里面配置的(pro,test,debug)拼接成 UPDATE_PHOTO_URL _TEST
String configKey = key+"_"+ msg;
//获取配置文件对应的值
return property.getProperty(configKey.toUpperCase());
}
注:若properties文件放在assets目录下,则
Properties pro = new Properties();
InputStream is = context.getAssets().open("app.properties");
pro.load(is);
三、使用
String UPDATE_PHOTO_URL=MyApplication.getInstance().getDevModelValue("UPDATE_PHOTO_URL");// 图片上传地址
String NOTICE_MSAGES_URL=MyApplication.getInstance().getDevModelValue("NOTICE_MSAGES_URL");// 通知获取地址
使用getDevModelValue 方法的时候 只需要 传入对应的前缀"UPDATE_PHOTO_URL" 、 "NOTICE_MSAGES_URL"参数,getDevModelValue 方法会自动去获取配置在AndroidManifest.xml 下面 application 节点下 meta-date “DEV_MODEL” 的值 并拼接为:"UPDATE_PHOTO_URL_DEBUG" 、 "NOTICE_MSAGES_URL_DEBUG"等,去获取配置文件下面相应的值。
四、总结
1.需要创建配置文件。
2.在AndroidManifest.xml 下面 application 节点 配置下meta-date节点。
3.创建一个Application类,并写一个getDevModelValue 方法,用于获取 application 下meta-date 对应的Value值,并获取对应配置文件的值。
4.在代码中使用getDevModelValue方法即可。
5.每次打包的时候 只需要修改 application 节点 配置下meta-date节点 对应的value 修改成debug test pro 就可以了。