이 글은 제목 그대로 안드로이드 시뮬레이터에 있는 앱의 SQLite DB 파일을 접근하는 방법을 설명하는데, root권한 없이 간단히 할 수 있는 방법을 설명한다.
먼저 안드로이드 시뮬레이터에 콘솔을 연결해야 하는데, 일반적으로 'adb'프로그램을 사용한다. 이 프로그램은 안드로이드 SDK의 번들로 제공되는 프로그램으로 SDK 설치 디렉토리 아래 '.../platform-tools' 디렉토리에 있다. OSX인경우 기본설정으로 설치했다면 SDK의 위치는 '~/Library/Android/sdk' 이다.
'adb'프로그램은 실물 안드로이드 기기에 연결이 될 뿐만 아니라 안드로이드 시뮬레이터에도 접속이 된다. 이 글에서는 시뮬레이터에 대한 부분만 다루기로 한다.
adb devices
시뮬레이터를 구동중이라면 아래 'devices'옵션으로 장비명을 확인할 수 있다.
$ ./adb devices
List of devices attached
emulator-5554 device
adb shell
연결은 시뮬레이터일 경우 'adb shell' 로 간단히 연결이 된다. 연결이 되면 프롬프트가 바뀐다. 접속후 'uname'명령을 실행해 보았다.
$ ./adb shell
generic_x86:/ $
generic_x86:/ $ uname -a
Linux localhost 3.18.48+ #1 SMP PREEMPT Wed Apr 19 00:58:20 UTC 2017 i686
generic_x86:/ $
연결이 된 후 앱의 SQLite 파일들에 접속하려면 '/data/...' 최상위 바로 아래에 있는 'data'디렉토리로 들어가야 하는데 시스템 root사용자가 아니면 읽기등의 권한이 허용되지 않는다. 그래서 자료를 찾아보니 많은 글들이 root권한을 얻는 방법을 설명하고 있다. 참 다양한 방법이 있는데, adb구동시 옵션으로 root를 넣어도 된다. 'adb root'처럼, 그러나 OSX에서는 시뮬레이터 구동시 보안문제로 허용되지 않았다. root권한을 얻는 것은 강력한 방법이긴 하지만, 왠지 꺼름칙하던 중 아주 간단한 방법을 찾게 되었다.
$ run-as <package-name>
'adb'프로그램을 이용 시뮬레이터에 접속 후 'run-as <package-name>' 명령을 사용하면 간단히 원하는 앱의 데이터 파일들에 접근할 수 있다. <package-name>은 개발중인 앱이라면 'src/main'디렉토리에 있는 'AndroidManifest.xml'파일에서 '<manifest>'노드의 'package'속성값을 확인하면 된다. 확인된 이름을 가지고 해당 명령어를 실해하면 해당 앱의 데이터파일들에 접근이 가능해진다.
아래는 adb실행부터 SQLite DB파일 접속까지 간단히 수행해본 것이다.
$ ./adb shell
generic_x86:/ $
generic_x86:/ $ run-as guru.z3.zword
generic_x86:/data/data/guru.z3.zword $
generic_x86:/data/data/guru.z3.zword $ ls
app_dxmaker_cache app_textures app_webview cache code_cache databases files shared_prefs
generic_x86:/data/data/guru.z3.zword $
generic_x86:/data/data/guru.z3.zword $ cd databases
generic_x86:/data/data/guru.z3.zword/databases $ ls
TESTDB TESTDB-journal
generic_x86:/data/data/guru.z3.zword/databases $
generic_x86:/data/data/guru.z3.zword/databases $ sqlite3 TESTDB
SQLite version 3.18.0 2017-03-28 18:48:43
Enter ".help" for usage hints.
sqlite>
'Trouble Shooting' 카테고리의 다른 글
[GIT 정리] 이미 commit/push된 파일을 .gitignore에 등록하기 (0) | 2017.08.30 |
---|---|
[GIT 정리] 여러 조회 방법 및 충돌 파일 간단 처리 (0) | 2017.08.26 |
안드로이드 기기를 사용하는 단위테스트 첫발 (0) | 2017.07.26 |
git 레포지토리에서 변경된 파일들중에서 원하는 파일들만 추리기 (0) | 2017.05.31 |
Windows 10 스토어앱 구동 안되는 문제 (0) | 2017.05.07 |