Java/Android

ADB를 이용한 /data 디렉토리 접근

체리필터 2013. 9. 3. 22:42
728x90
반응형

프로젝트 도중 SharedPreference를 사용해서 데이터를 저장하는 부분이 있었다.

그런데 SharedPreference에는 배열 값이 저장이 안되는 듯 해서 정말 그런가 궁금했고, 궁금 증을 해결하기 위해 /data 디렉토리를 뒤져봐야 했다.

하지만 adb나 DDMS를 통한 접근은 Permission denied만 나오고, 접근이 불가한 상태였다.

역시 삽질과 구글링을 통해 해결법을 알아 냈다.


1. 현재 연결되어 있는 장비 알아 낸기


adb devices 명령어를 통해서 연결 된 device 목록을 알아 온다.


2. 해당 장비에 접속하기


adb -s emulator-5554 shell 와 같은 명령어로 해당 장비에 접근한다.


3. 내가 개발 중인 프로젝트 권한으로 변경하기


가령 내가 개발중인 프로젝트의 package 이름이 com.nhnent.project라면, run-as com.nhnent.project 라고 날리면 실행 권한이 app의 권한이 된다. adb로 접속한 유저 권한이 아니라 앱의 권한이므로 app이 접근 가능한 /data 디렉토리 안으로 바로 들어갈 수 있게 된다.


4. shared_prefs 디렉토리 접근하기


보통 SharedPreference 디렉토리는 /data/data/패키지/shared_prefs 이다. 해당 디렉토리로 들어가면, 현재 사용중인 SharedPreference의 xml 파일들이 보인다. 해당 파일을 cat으로 열어봐서 해결하였다.


일단 결론은 SharedPreference에 배열 값은 저장이 안되고 있었다이다.

PUT을 통한 데이터 저장은 xml로 변환이 되지만, 그외 변수에 직접 대입하는 값은 메모리에만 남아 있고, xml로는 변환이 되지 않는다.


오늘 삽질을 통해 얻은 결론!

삽질을 통해야지만, 내 지식이 된다. -.-;;



728x90
반응형