답변:
에뮬레이터의 파일 시스템은 하드 드라이브의 디렉토리에 매핑되지 않습니다. 에뮬레이터의 디스크 이미지는 Eclipse (도구 모음에서 G1 모양 아이콘 찾기) 또는 에뮬레이터 바이너리 자체를 통해 관리 할 수있는 이미지 파일로 저장됩니다 (옵션에 대한 설명은 "emulator -help"실행). .
명령 줄에서 adb를 사용하여 실행중인 에뮬레이터에 연결하는 것이 가장 좋습니다. 특정 디렉토리와 파일 이름을 얻을 수 있으면 "adb pull"을 수행하여 에뮬레이터에서 일반 하드 드라이브로 데이터베이스 파일을 가져올 수 있습니다.
편집 : 이것이 루팅되지 않은 장치에서도 작동한다는 제안을 제거했습니다. 에뮬레이터와 adb를 루트로 작동하는 장치에서만 작동합니다.
adb pull
하더라도 불가능 합니다 .
adb pull /data/data/com.activeandroid.test/databases/Application.db ~/Development/Application.db
아래 댓글에 언급 된 업데이트 :
더 이상 DDMS 관점에있을 필요가 없습니다. Eclipse 창>보기 표시> 기타 에서 파일 탐색기를 엽니 다 . 앱이 실행될 필요가없는 것 같습니다. 다른 앱 파일에서 탐색 할 수 있습니다. 내용. ADB 버전 1.0.29를 실행하고 있습니다.
또는 이전 접근 방식을 시도 할 수 있습니다.
Eclipse IDE에서 DDMS Perspective 열기
( 창> 퍼스펙티브 열기> 기타> DDMS )
그리고 가장 중요한 것 :
폴더와 파일의 계층을 볼 수 있도록 응용 프로그램이 실행되고 있어야 합니다.
그런 다음 파일 탐색기 탭 에서 경로를 따릅니다.
데이터> 데이터> your-package-name> 데이터베이스> your-database-file .
그런 다음 파일을 선택하고 화면 오른쪽 모서리 에있는 디스켓 아이콘 을 클릭 하여 .db 파일 을 다운로드 합니다. 에뮬레이터에 데이터베이스 파일을 업로드하려면 전화 아이콘 (디스켓 아이콘 옆)을 클릭 하고 업로드 할 파일을 선택하면됩니다.
.db 파일 의 내용을 보려면 여기에서 다운로드 할 수있는 SQLite Database Browser를 사용하는 것이 좋습니다 .
추신 : 실제 장치에서 데이터베이스를 보려면 전화를 루팅해야합니다.
Failed to pull selection
(null)
다른 답변은 심각하게 구식입니다. Android Studio를 사용하면 다음과 같이 할 수 있습니다.
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
데이터베이스는 / data / data / PACKAGE / databases / DATABASEFILE에 SQLite 파일로 저장됩니다 .
파일 탐색기 탭에서 DDMS perspective를 선택하여 에뮬레이터에서 데이터베이스 파일을 볼 수 있습니다 (파일 시스템에서 복사) .
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
폴더 에서 데이터베이스를 찾을 수 있습니다.
$ dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
bash: adb: command not found
Android 문서 에 따르면 Monitor는 Android Studio 3.1에서 더 이상 사용되지 않으며 Android Studio 3.2에서 제거되었습니다. 파일에 액세스하려면 에뮬레이터 파일 시스템에 액세스 할 수있는 개발 창의 오른쪽 하단에있는 "Device File Explorer"라는 탭이 Android 스튜디오에 있습니다. 그냥 따라 가라
/ data / data / package_name / databases
행운을 빕니다.
Android Studio 3.5의 경우 https://developer.android.com/studio/debug/device-file-explorer (보기-> 도구 창-> 장치 파일 탐색기->-> 데이터베이스)의 지침을 사용하여 작성하십시오.