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를 사용하면 다음과 같이 할 수 있습니다.
- 도구> Android> Android Device Monitor를 클릭합니다.
- 파일 탐색기를 클릭하십시오.
- 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 파일로 저장됩니다 .
- PACKAGE 는 AndroidManifest.xml에 선언 된 패키지 입니다 (태그 “manifest”, 속성 “package”).
- DATABASEFILE 은 http://developer.android.com/guide/topics/data/data-storage.html#db에 설명 된대로 SQLiteOpenHelper 생성자를 호출 할 때 전달되는 이름입니다.
파일 탐색기 탭에서 DDMS perspective를 선택하여 에뮬레이터에서 데이터베이스 파일을 볼 수 있습니다 (파일 시스템에서 복사) .