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 함수 모두 되는 것을 파악했습니다.
위 방법으로 해보세요~
오늘도 즐코딩~
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[ JNI ] String Array 관리 (0) | 2012.12.27 |
---|---|
[ Android ] Read Only File System IOException ( EROFS ) (0) | 2012.11.15 |
[ Android ] Native단 Logcat에서 Log 출력 (0) | 2012.10.25 |
[ Android.mk ] Android.mk Setting 후, Compile이 안되는 현상. (0) | 2012.10.18 |
[ Kernel ] system 디버깅 (0) | 2012.09.18 |