Android 에뮬레이터는 SQLite 데이터베이스를 어디에 저장합니까? 내 질문은 에뮬레이터를 사용할 때이

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

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

/data/data/package_name/databases

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



답변

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

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

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


답변

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

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


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

Eclipse IDE에서 DDMS Perspective 열기

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

그리고 가장 중요한 것 :

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

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

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

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

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

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


답변

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

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

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

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


답변

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


답변

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

답변

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

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

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


답변

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

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