1. 程式人生 > >Android開發中使用.prorperties配置檔案

Android開發中使用.prorperties配置檔案

一、需要配置的地方,和場景

最近公司開發了一個產品,分別賣給了N個客戶,但是每個客戶都是獨立的,所以就有了N套環境。

而每一套環境都有不同,後臺Web 連線, 以及一些圖片,檔案下載都再不同的伺服器上, 所以每次給不同的環境打包的時候都需要分別配置 好幾個地方的URL 或者IP。

經常打錯包,或者地址配錯。 如果你也正遇到這樣的專案,那麼不防跟著我學會使用Android 上面的.Prorperties 配置檔案吧。

二、編寫配置資訊

1.在Android 工程目錄下 res/raw 新建一個 .prorperties  檔案。  2.編寫 配置資訊

如果我們需要配置

UPDATE_PHOTO_URL   修改圖片地址

NOTIC_MSAGES_URL 通知地址

IMAGEPAHT圖片地址

幾個使用者獲取圖片和通知的資訊。

######開發環境配置########
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_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_TEST = http://xxx.xxx.xxx/servlet/MobileServlet
NOTICE_MSAGES_URL_TEST = http://xxx.xxx.xxx/msgPushTxt/
IMAGEPATH_TEST = http://xxx.xxx.xx/img/

配置檔案裡面分別的給這個配置資訊 加上 "_TEST"、"_DEBUG"、"_PRO" 來分別的區分 測試環境、開發環境、以及生產環境。

3.使用配置檔案

a.首先需要再清單檔案AndroidManifest.xml 下面 application 節點下面配置 一個meta-date節點

 	<!-- 開發模式,debug:除錯(開發)模式,test:測試模式,pro:生產模式-->
        <meta-data android:value="debug" android:name="DEV_MODEL"/>

Application 如下
<application
        android:name="com.MyApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <!-- 開發模式,debug:除錯(開發)模式,test:測試模式,pro:生產模式-->
        <meta-data android:value="debug" android:name="DEV_MODEL"/>

 這個屬性下面的 value 對應的 分別是 debug  test pro 就是剛剛我們配置檔案裡面的 3個環境。

b.建立一個Application 類 並新增方法

/**
	 * 載入開發環境的配置檔案
	 * @author wgy
	 * **/	
	private void loadConfig(){
		InputStream in = null;
		try {
			in = getResources().openRawResource(R.raw.config);
			config.load(in);
		} catch (IOException e) {
			Log.e(TAG, "load properties error",e);
		}finally{
			if(in!=null){
				try {
					in.close();
				} catch (IOException e) {
				}
			}
		}
	}

並且在 Application 的onCreate 方法時候 需呼叫載入配置檔案方法(   loadConfig()  );
/**
 * 獲取開發模式
 * @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 (NameNotFoundException e) {
		Log.e(TAG, "獲取開發模式失敗", e);
	}
	
	Properties config = new Properties();
	//將Applicaition裡面配置的(pro,test,debug)拼接成 UPDATE_PHOTO_URL _TEST
 	String configKey = key+"_"+ msg;
	//獲取配置檔案對應的值
	return config.getProperty(configKey.toUpperCase());

}


c.使用Application 新新增的getDevModelValue 方法

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 就可以了。