본문 바로가기
Android 개발/Room, Realm, Databases

Android의 Realm 데이터베이스 파일 은 특별한 곳에 있지 않다

by Developer88 2017. 1. 10.
반응형

안드로이드 Realm을 이용한 앱을 만들때, 

데이터가 이미 들어있는 DB파일을 직접 앱에 넣고자 할 때가 있습니다.


CSV파일을 넣고, 앱에서 코드로 읽어들일 수도 있겠지만,

데이터가 커질수록, 그렇게 효율적인 방법은 아닌것 같구요.

역시나, 파일의 위치를 찾아서 직접 replace해주는 것이 가장 좋고 편할 것 같은데요.


사용하는,시나리오를 생각해보면,

Mac의 RealmBrowser에서 만든 데이터를

default.realm으로 export시켜서,

안드로이드에 넣어주는 것이네요.


1. Realm DB파일 위치 찾기


Realm의 경우 환경변수로 DB이름을 주지 않았다면,

생성되는 파일명은 default.realm 입니다.


그런데, 문제는 이 파일이 어디에 있는냐는 거죠.

루팅한 폰이 아니고서는 앱안의 데이터파일을 직접보기도 어렵구요.

에뮬레이터를 띄우고, adb라는 안드로이드 스튜디오가 제공하는 

디버깅툴을 쓰는방법도 있습니다만 이역시도, 파일위치를 알아야 찾을 수 있겠죠.


이럴때 필요한 메소드를 Realm에서는 이미 제공해주고 있는데요.


Realm객체를 얻어온 다음 getPath()라는 메소드를 사용하면 안드로이드 내의 위치를 알 수 있습니다.

해보니 /data/data/<PackageName>/files디렉토리에 존재하네요.

그리고, getConfiguration()을 하시면, 디렉토리외에 환경설정 값까지 추가로 볼 수 있는데요.



getConfiguration()의 log를 보면 아래와 같은 항목에 대해서 경로를 알려 줍니다.




2. 정리


위에서 realm에서 제공되는 getPath()라는 메소드를 사용해서 Realm의 위치를 알아 보았는데요.

사실, 안드로이드 앱내의 파일디렉토리를 알려주는 getFilesDir()를 해보시면, Realm에서 알려주는 Path와 다르지 않습니다.

안드로이드 앱내에 파일 디렉토리와 같다는 애기죠.

사실, Realm의 DB파일도 앱을 삭제하면 사라지는 앱의 로컬파일이니까요.

결론내보자면, "Realm의 DB파일은 특별한 곳에 있지 않다" 가 되겠습니다~.

728x90

댓글