Android開發中使用.prorperties配置檔案
阿新 • • 發佈:2019-02-19
一、需要配置的地方,和場景
最近公司開發了一個產品,分別賣給了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"等,去獲取配置檔案下面相應的值。