Android 에뮬레이터는 SQLite 데이터베이스를 어디에 저장합니까?


108

SQLite 데이터베이스에 데이터를 저장하는 Android 애플리케이션을 개발 중입니다. 내 질문은 에뮬레이터를 사용할 때이 데이터베이스 파일이 파일 시스템에 저장되는 위치입니다.

나는 그것이 저장되어 있음을 보았다.

/data/data/package_name/databases

그러나 실제로 매핑되는 로컬 컴퓨터의 하드 드라이브 위치를 알아야합니다. 데이터베이스는 머신을 종료 한 후에도 에뮬레이터를 여러 번 실행해도 유지되므로 RAM에만 상주 할 수 없습니다.

답변:


55

에뮬레이터의 파일 시스템은 하드 드라이브의 디렉토리에 매핑되지 않습니다. 에뮬레이터의 디스크 이미지는 Eclipse (도구 모음에서 G1 모양 아이콘 찾기) 또는 에뮬레이터 바이너리 자체를 통해 관리 할 수있는 이미지 파일로 저장됩니다 (옵션에 대한 설명은 "emulator -help"실행). .

명령 줄에서 adb를 사용하여 실행중인 에뮬레이터에 연결하는 것이 가장 좋습니다. 특정 디렉토리와 파일 이름을 얻을 수 있으면 "adb pull"을 수행하여 에뮬레이터에서 일반 하드 드라이브로 데이터베이스 파일을 가져올 수 있습니다.

편집 : 이것이 루팅되지 않은 장치에서도 작동한다는 제안을 제거했습니다. 에뮬레이터와 adb를 루트로 작동하는 장치에서만 작동합니다.


6
Eclipse에서 ddms를 통해 DB를 가져 왔습니다. 변경 한 다음 다시 밀어 넣었습니다. 매력처럼 작동했습니다.
I82Much 2010 년

@ I82 많이 저에게도 효과가 있었고 이클립스 관점을 ddms로 변경하면 거기의 데이터 파일을 얻을 수 있습니다. 감사합니다.
vanzylv 2011

2013 업데이트 : Jelly Bean 장치에서는 루트 가 아닌 경우 정확한 경로를 사용 adb pull하더라도 불가능 합니다 .
Bill The Ape 2013

그것은 업데이트가 아닙니다. 기본적으로 시작 앱에서 개인 파일은 보안 장치의 adb에서 개인 파일이었습니다. 그러나이 질문은 adb가 루트로 실행되는 에뮬레이터에 관한 것입니다.
Chris Stratton 2014 년

6
에뮬레이터에서 로컬 컴퓨터로 데이터베이스를 가져 오는 예는 다음과 같습니다adb pull /data/data/com.activeandroid.test/databases/Application.db ~/Development/Application.db
Joshua Pinter 2014

123

아래 댓글에 언급 된 업데이트 :

더 이상 DDMS 관점에있을 필요가 없습니다. Eclipse 창>보기 표시> 기타 에서 파일 탐색기를 엽니 다 . 앱이 실행될 필요가없는 것 같습니다. 다른 앱 파일에서 탐색 할 수 있습니다. 내용. ADB 버전 1.0.29를 실행하고 있습니다.


또는 이전 접근 방식을 시도 할 수 있습니다.

Eclipse IDE에서 DDMS Perspective 열기

( 창> 퍼스펙티브 열기> 기타> DDMS )

그리고 가장 중요한 것 :

폴더와 파일의 계층을 볼 수 있도록 응용 프로그램이 실행되고 있어야 합니다.

그런 다음 파일 탐색기 탭 에서 경로를 따릅니다.

데이터> 데이터> your-package-name> 데이터베이스> your-database-file .

그런 다음 파일을 선택하고 화면 오른쪽 모서리 에있는 디스켓 아이콘 을 클릭 하여 .db 파일 을 다운로드 합니다. 에뮬레이터에 데이터베이스 파일을 업로드하려면 전화 아이콘 (디스켓 아이콘 옆)을 클릭 하고 업로드 할 파일을 선택하면됩니다.

.db 파일 의 내용을 보려면 여기에서 다운로드 할 수있는 SQLite Database Browser를 사용하는 것이 좋습니다 .

추신 : 실제 장치에서 데이터베이스를 보려면 전화를 루팅해야합니다.


5
궁금한 사람이 있으면 '파일 탐색기'탭을 클릭해야합니다.
MSpeed

안녕하세요 Cyberrog, 데이터베이스 파일을 찾았지만이 파일을 여는 방법을 알려 주시겠습니까? 또는 그 내용을 보는 방법?
Nilesh Nikumbh 2011 년

4
@NileshNikumbh 파일을 선택하고 디스켓 아이콘을 클릭하고 저장할 위치를 선택합니다. SQLite 브라우저도 다운로드해야합니다. sourceforge.net/projects/sqlitebrowser 설치 후 .db 파일을 열고 Browse Data 탭을 선택하고 보려는 열을 선택하십시오.
rogcg 2011-06-20

그레이트 포스트! 나는 에뮬레이터 장치에서 SQLite는 파일을 받고 문제가 있습니다 :Failed to pull selection (null)
1 월 테르 예 Sørensen은

@OckhamsRazor 실제 장치 (에뮬레이터 아님)에서 데이터베이스를 보려면 휴대폰을 루팅해야합니다.
rogcg

18

다른 답변은 심각하게 구식입니다. Android Studio를 사용하면 다음과 같이 할 수 있습니다.

  1. 도구> Android> Android Device Monitor를 클릭합니다.

여기에 이미지 설명 입력

  1. 파일 탐색기를 클릭하십시오.

여기에 이미지 설명 입력

  1. db 파일로 이동하여 저장 버튼을 클릭 합니다.

여기에 이미지 설명 입력


1
"Android Device Monitor는 Android Studio 3.1에서 더 이상 사용되지 않고 Android Studio 3.2에서 제거되었습니다. Android Device Monitor를 통해 사용할 수있는 기능이 새로운 기능으로 대체되었습니다 ..." developer.android.com/studio/profile/monitor
피트 앨빈

8

Android Studio 3.4.1에서 Android Studio의 검색 기능을 사용하여 "Device File Explorer"를 찾은 다음 에뮬레이터의 / data / data / package_name / database 디렉토리로 이동할 수 있습니다.


6

Android 기기에서 컴퓨터로 데이터베이스를 가져 오는 간단한 bash 스크립트를 작성했습니다 (Linux, Mac 사용자).

filename : android_db_move.sh 사용법 : android_db_move.sh com.example.app db_name.db

#!/bin/bash

REQUIRED_ARGS=2
ADB_PATH=/Users/Tadas/Library/sdk/platform-tools/adb
PULL_DIR="~/"

if [ $# -ne $REQUIRED_ARGS ]
    then
        echo ""
        echo "Usage:"
        echo "android_db_move.sh [package_name] [db_name]"
        echo "eg. android_db_move.sh lt.appcamp.impuls impuls.db"
        echo ""
    exit 1
fi;


echo""

cmd1="$ADB_PATH -d shell 'run-as $1 cat /data/data/$1/databases/$2 > /sdcard/$2' "
cmd2="$ADB_PATH pull /sdcard/$2 $PULL_DIR"

echo $cmd1
eval $cmd1
if [ $? -eq 0 ]
    then
    echo ".........OK"
fi;

echo $cmd2
eval $cmd2

if [ $? -eq 0 ]
    then
    echo ".........OK"
fi;

exit 0

6

질문은 Android Studio에만 국한되지 않기 때문에 Visual Studio 2015 (Xamarin에서 작동)의 경로를 제공합니다.

도구-안드로이드-안드로이드 기기 모니터

여기에 이미지 설명 입력

  • 위 이미지에서 언급 한 데이터베이스 파일을 찾아 이미지 2와 같이 Pull 버튼을 클릭합니다.
  • 원하는 위치에 파일을 저장하십시오.
  • SQLite Studio 또는 SQLite 용 DB 브라우저를 사용하여 해당 파일을 열 수 있습니다.

이 질문에 대한 다른 답변자에게 특별히 감사드립니다.


4

데이터베이스는 / data / data / PACKAGE / databases / DATABASEFILE에 SQLite 파일로 저장됩니다 .

파일 탐색기 탭에서 DDMS perspective를 선택하여 에뮬레이터에서 데이터베이스 파일을 볼 수 있습니다 (파일 시스템에서 복사) .


3

간단한 솔루션-에뮬레이터 및 연결된 장치 모두에서 작동

1 현재 사용 가능한 장치 / 에뮬레이터 목록을 참조하십시오.

$ adb devices

연결된 장치의 목록

G7NZCJ015313309 장치 에뮬레이터 -5554 장치

9885b6454e46383744 장치

2 장치 / 에뮬레이터에서 백업 실행

$ adb -s emulator-5554 backup -f ~/Desktop/data.ab -noapk com.your_app_package.app;

3 data.ab 추출

$ dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -;

/db폴더 에서 데이터베이스를 찾을 수 있습니다.


OS X를 사용하는 경우 openssl의 zlib 부분이 누락 될 수 있습니다. 이 해결 방법을 사용할 수 있습니다. $ dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
Lasse Magnussen

나를 위해 작동하지 않습니다. 내가 받고 있어요bash: adb: command not found
Matthias

0

Android 문서 에 따르면 Monitor는 Android Studio 3.1에서 더 이상 사용되지 않으며 Android Studio 3.2에서 제거되었습니다. 파일에 액세스하려면 에뮬레이터 파일 시스템에 액세스 할 수있는 개발 창의 오른쪽 하단에있는 "Device File Explorer"라는 탭이 Android 스튜디오에 있습니다. 그냥 따라 가라

/ data / data / package_name / databases

행운을 빕니다.

Android 장치 파일 탐색기


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.