티스토리 뷰

반응형

Android Realm 브라우저로 Realm DB 확인하기

RealmSQLite,CoreData을 대체할 수 있는 모바일 데이터 베이스 입니다.Realm 을 사용하다보면 GUI로 현재 저장된 Realm Data를 확인하고 싶을 때가 있습니다. 이러한 불편함을 알았는지 이미 RealmRealm Bowser을 제공하여 사용자가 보다 편리하게 Realm Data을 확인할 수 있도록 도와주고 있습니다. 그렇다면 어떻게 Realm Bowser을 통하여 Realm DataBase을 확인 할 수 있을지 확인해 보겠습니다.


Realm 설치하기

Realm Data를 확인하기 위해서는 .realm 확장자 포멧인 파일을 열어 확인하여야 합니다..realm 확장자 파일은 Realm Browser에서만 열수 있으며 Macbook 사용자는 AppStore에서Realm Browser 을 검색하여 설치할 수 있습니다.

앱스토어 다운로드



Realm Studio 설치 (Windows, iOS)

Windows 환경에서는 Realm Studio를 이용해서 .realm를 확인 할 수 있습니다.

Realm Browser보다 많은 기능(Query 검색, Admin 기능, Realm 서버 동기화)을 제공합니다.

Realm Studio 다운로드


Emulator Realm 데이터 확인하기

Android Studio에서 Emulator에 저장된 Realm 데이터 가져오는 법을 공유하겠습니다.

.realm 파일을 가져오기 위해서는 Emulator가 실행되어 있어야 한다.


첫번째, 저장된 Realm Database 주소 찾기

Realm Dababase(이제부터 DB로 통일하겠습니다.) 을 확인하기 위해서는 우선 저장된 Realm DB을 추출해야 합니다. 추출하기 위해서는 다음과 같이 realm.path 을 활용하여 저장된 Realm 주소를 확인합니다.

저장된 Realm 주소 확인 방법

Log.e(Constants.LOG_TEST, "realm address : " + realm.path)

결과 Log

06-23 23:01:54.413 5969-5969/? E/LOG_LOGIN: realm address : /data/data/com.kcs.sampletodolist/files/UserDTO.realm 


두번째, 터미널에서 adb 명령을 이용해서 .realm 가져오기

adb를 보다 편하게 사용하기 위해서는 adb을 환경변수에 설정하면 편하게 사용할 수 있습니다.

.realm 파일을 가져오기 위해 다음 명령어를 입력합니다.

adb pull /data/data/com.kcs.sampletodolist/files/UserDTO.realm

error: failed to stat remote object
'/data/data/com.kcs.sampletodolist/files/UserDTO.realm ': Permission denied

위와 같이 에러가 발생합니다. Permission denined 에러는 사용자가 수행하려는 작업에 대한 권한이 없을 때 발생하는 에러입니다. 그렇다면 어떻게 권한을 얻을 수 있을까요? 다음 단계를 살펴봅니다.


세번째, adb root로 변경하여 .realm 파일 가져오기.

이전 단계에서 adb pull 시도 시 Permission denied 발생하였습니다. adb의 권한 얻을 수 있는 방법은 adb root로 전환하여 해당 파일을 가져오면 됩니다.

터미널에 다음 명령어를 입력하여 root로 전환합니다.

adb root

restarting adbd as root


위와 같이 나오면 root 계정으로 전환이 완료된 것입니다.

이 상태에서 두번째 항목의 명령어를 입력하면 .realm 파일을 받고 Realm Browser로 실행하면 데이터를 확인할 수 있다.

adb pull /data/data/com.kcs.sampletodolist/files/UserDTO.realm



adb root 명령어 에러 발생 하는 경우

adbd cannot run as root in production builds

adb root 명령어 입력했을 때 다음과 같이 error 발생할 수 있습니다. 저 또한 그 피해자(?) 중 한명으로 원인 찾는데 많은 시간을 보냈습니다. 왜 이런 에러가 발생하는지 원인과 해결 방법에 대해서 공유하겠습니다.

■ 에러 원인

에러가 발생하는 원인은 Emulator에서 TargetGoogle Play로 설정한 경우 다음과 같이 adb root로 변경이 불가능하다. 이 말이 무슨말일까요? Emulator 에서 새로운 Emulator 을 생성하게 되면 Target 을 설정하게 됩니다.

  • Google Play

  • Google APIs

위 두개의 형태로 구성하는데 사용자가 Google PlayEmulator 로 생성하여서 'adbd cannot run as root in production builds' 같은 Error Log을 호출하였습니다.

■ 해결 방법

해결방법은 간단합니다. Emulator 을 다시 생성 시 Target을 Google Play가 아닌 Google APIs로 만들면 가능합니다.

 디바이스 선택 화면



 시스템 이미지 선택 화면 TargetGoogle APIs 인 것으로 선택할 것

□ 최종 디바이스 설정


정리

간단하게 Emulator 에서 생성된 Realm Database을 Realm Bowser에서 확인하는 법을 공유하였습니다Emulator 생성 시 Target만 주의하셔서 위의 방법으로 테스트 하신다면 문제 없이 Realm Database을 Realm Bowser 에서 확인 할 수 있습니다.

반응형
댓글