본문 바로가기

나의 플랫폼/안드로이드

[ Android ] System property와 관련하여

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

System property를 Setting 하는 방법은 3가지가 있습니다.


1. Native

int property_get(const char *key, char *value, const char *default_value);

int property_set(const char *key, const char *value);

2. Java

String SystemProperties.get(String key);

SystemProperties.set(String key,String value);

3. adb 명령

adb shell 

root# setprop key value

root# getprop key



여기서 java 부분을 빨간색으로 해놓았습니다.


그 이유는  SystemProperties.set 함수를 이용할 때는, 


절대 System에서 공용으로 쓰는 Property가 아니라는 점입니다.!!!!


Application에서 사용할 때는 해당 Application process에 대한 Property값이므로,


System Property값은 변경이 안되고 지정이 안됩니다.


System property는 Application에서 사용하라고 만든 것이 아니라는 의미지요.


https://groups.google.com/forum/?fromgroups=#!topic/android-developers/LXW9jGN6QkU


[ 제가 생각한 해결책]

하지만, Native 단에서는 변경이 가능합니다. 

따라서, java에서 파일로 생성을 하고, 

파일 유무로써 Native 함수 호출 시 변경을 이뤄지게 하는 겁니다.


먼가 다른 좋은 방법이 있으신 분은 댓글 부탁드립니다.


위 내용에 대해 수정이 있었습니다.

android/system/core/init/property_service.c에 보시면 property Key 형태를 잡아 놓은 property_perms[] 배열이 있습니다.

저 형태에 맞춰서 key를 정한 후, AndroidManifest.xml 에 android:sharedUserId="android.uid.system" 정의 되어 있는 

Application에서 변경이 가능합니다.

key 값 예 > persist.security.xxx.xxxx 


get함수와 set 함수 모두 되는 것을 파악했습니다.

위 방법으로 해보세요~


오늘도 즐코딩~