Linux

Android property 설정하는 3가지 방법.

raulyo 2014. 7. 30. 10:02
안드로이드에서 프로퍼티를 설정하는 방법에 여러가지가 있겠지만 그 중에 세가지를 정리하려고 한다. 

1) Property 설정.
일반저인 안드로이드 어플에서 Property를 설정하는 방법으로  아래와 같이 할 수 있다. 

private static Properties mProperty;
private static final String PROPERTY_NAME = "max_person_count";
private static final String PROPERTY_FILE = "/data/data/com.test.test/set.properties";
private static File mPropertyFile   = null;
private static FileInputStream mFIs  = null;
private static FileOutputStream mFOs = null;
 
mProfile = new File(PROPERTY_FILE);
mProperty = new Properties();
Log.e("test", "Start getMaxPersonCountProperty222");
try {
if(!mProfile.exists()) {
mPropertyFile.createNewFile();
mFIs = new FileInputStream( mPropertyFile);
mProperty.load(mFIs);
mFOs = new FileOutputStream( mPropertyFile);
mProperty.setProperty(PROPERTY_NAME, "500");
mProperty.store(mFOs, "maximum person num in db");
Log.e("test", " Create profile ");
} else {
mFIs = new FileInputStream( mPropertyFile);
mProperty.load(mFIs);
String proValue = mProperty.getProperty(PROPERTY_NAME);
Log.e("test", " Get property  " + PROPERTY_FILE + " : "  + proValue);
}
} catch(Exception e) {
Log.e("test", " Load or Create error " + e.getMessage());
}
 

위와 같이 할 경우 아래와 set.properties 가 다음과 같이 생성된다. 


#maximum person num in db
#Wed Feb 01 07:54:12 GMT+00:00 2012
max_person_count=500 
 



 
2) system properties 설정

System property를 이용하는 방법으로 별도의 파일을 만들 필요없이 아래와 같이 등록하고 가져올 수 있다. 

 String properties = System.getProperty("property_name");
System.setProperty("property_name", "value"); 
 


3) Dalvik property 이용.

adb shell 을 하고 접근해서 프로퍼티를 만들면 그 프로퍼티를 가져다가 쓸수 있다.

#getprop property_name //프로퍼티를 가져오는 것.
#setprop property_name 300 //프로퍼티를 설정하는 것.

full build를 할 경우 makefile 에서 설정가능하다고는 하는데 실제 해보지는 않았다. 
그러면 이것을 어떻게 가져오는가?
사실 개발자용 SDK 에서는 가져오기 위한 API가 없다. 이는 framework에서의 설정이기 때문에 
full build 시 포함되는 어플리케이션이 아니면 가져올 수 없기 때문이다. 

그럼에도 설정하는 것이 필요하다면 아래와 같이 full source 에서  SystemProperties 파일을 가져와 import를 시키면 된다. 이때 android.os 패키지도 똑같이 만들어 두어야 한다. 이 파일은 컴파일시 링크를 위해서 필요한 것으로 실제 동작은 framework 내에 SystemProperties가 한다.

 import android.os.SystemProperties; 

 String  properties = SystemProperties.get("property_name");