Android Studio에서 데이터베이스 파일 내용보기 파일을 생성하기 위해 디버깅 할 때

앱이 출시 된 후 Android Studio 를 사용하여 앱을 개발해 왔습니다.

최근까지 모든 것이 잘 작동합니다. 데이터베이스 파일 확인과 함께 디버깅해야합니다. 데이터베이스를 직접 보는 방법을 모르기 때문에 데이터베이스 파일을 생성하기 위해 디버깅 할 때 데이터베이스 파일을 휴대폰에서 PC로 내 보내야합니다.

이렇게하려면을 열어야 DDMS > File Explorer합니다. DDMS를 열면 USB를 다시 연결해야하며 디버그 스레드가 손실됩니다. 데이터베이스 파일을 확인한 후 DDMS를 닫고 USB를 다시 연결하여 디버그 모드로 돌아 가야합니다.

너무 복잡합니다. 누구든지 Android Studio 에서이 작업을 수행하는 더 좋은 방법이 있습니까? (Eclipse에서 더 쉽다는 것을 알고 있습니다)?



답변

Android Studio에서 데이터베이스보기 :

편집 : 에뮬레이터에서 데이터베이스를 보려면 다음 단계를 수행하십시오 (실제 장치의 경우 맨 아래로 스크롤).

  1. SQLiteBrowser를 다운로드하여 설치 하십시오 .

  2. 장치에서 PC로 데이터베이스를 복사하십시오.

    • Android Studio 버전 <3.0 :

      • 를 통해 DDMS 열기Tools > Android > Android Device Monitor

      • 왼쪽에서 기기클릭하십시오 .
        응용 프로그램이 표시되어야합니다.
        여기에 이미지 설명을 입력하십시오

      • 이동 탐색기 파일 (오른쪽에있는 탭 중 하나를)로 이동/data/data/databases
        여기에 이미지 설명을 입력하십시오

      • 데이터베이스 를 클릭하여 선택하십시오 .

      • Android 장치 모니터 창의 오른쪽 상단으로 이동하십시오. ‘ 기기에서 파일 가져 오기 ‘버튼을 클릭하십시오.
        여기에 이미지 설명을 입력하십시오

      • 데이터베이스 파일을 저장할 위치를 묻는 창이 열립니다. PC의 원하는 위치에 저장하십시오 .

    • Android Studio 버전> = 3.0 :

      • 다음을 통해 장치 파일 탐색기 를 엽니 다.View > Tool Windows > Device File Explorer

      • 으로 이동하십시오 data > data > PACKAGE_NAME > database. 여기서 PACKAGE_NAME은 패키지 이름입니다 ( 위 예에서 com.Movie 입니다).

      • 데이터베이스를 마우스 오른쪽 단추로 클릭하고을 선택하십시오 Save As.... PC의 원하는 위치에 저장하십시오 .

  3. 이제 설치 한 SQLiteBrowser 를 엽니 다 . ‘ 데이터베이스 열기 ‘를 클릭 하고 데이터베이스 파일을 저장 한 위치로 이동 한 다음를 엽니 다 . 이제 데이터베이스의 내용을 볼 수 있습니다.


모바일 장치에서 데이터베이스를 보려면

Github 리포지토리로 이동 하여 readme의 지침에 따라 장치에서 데이터베이스를 볼 수 있습니다. 당신이 얻는 것은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

그게 다야. 그러나 앱을 게시하기 전에이 단계를 모두 취소해야한다는 것은 말할 것도 없습니다.


답변

ADB Shell을 통해 Sqlite3에 연결

Android Studio에서 그렇게하는 방법을 찾지 못했지만 매번 파일을 가져 오는 대신 원격 쉘로 db에 액세스합니다.

여기에서 모든 정보를 찾으십시오 :
http://developer.android.com/tools/help/adb.html#sqlite

1- 명령 프롬프트에서 platform-tools 폴더로 이동하십시오.

2- adb devices장치 목록을 보려면 명령 을 입력하십시오

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx   device

3- 장치에 쉘을 연결하십시오.

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell

4- db 파일이 들어있는 폴더로 이동하십시오.

cd data/data/<your-package-name>/databases/

sqlite3을 실행하여 DB에 연결하십시오.

sqlite3 <your-db-name>.db

6- 원하는 sqlite3 명령을 실행하십시오. 예 :

Select * from table1 where ...;

참고 : 아래에서 실행할 추가 명령을 찾으십시오.

SQLite 치트 시트

SQLite 데이터베이스에서 테이블을 보려면 몇 가지 단계가 있습니다.

  1. 데이터베이스의 테이블을 나열하십시오.

    .tables
  2. 테이블 모양을 나열하십시오.

    .schema tablename
  3. 전체 테이블을 인쇄하십시오.

    SELECT * FROM tablename;
  4. 사용 가능한 모든 SQLite 프롬프트 명령을 나열하십시오.

    .help

답변

실제로 아무도이 솔루션을 제공하지 않았다는 사실에 매우 놀랐습니다.

Stetho를 살펴 보십시오 .

나는 여러 가지 목적으로 Stetho를 여러 목적으로 사용했습니다 (그중 하나는 데이터베이스 검사). 실제 웹 사이트 에서는 네트워크 검사 기능과 뷰 계층 구조를 살펴 보는 기능에 대해서도 설명합니다.

그것은 약간의 설정 만 필요합니다 : 1 gradle 종속성 추가 (생산 빌드를 위해 주석을 달 수 있음), Stetho를 인스턴스화하는 몇 줄의 코드 및 Chrome 브라우저 (모든 것에 Chrome devtools를 사용하기 때문에).

업데이트 : 이제 Stetho를 사용하여 Realm 파일을 볼 수 있습니다 (SQLite DB 대신 Realm을 사용하는 경우) : https://github.com/uPhyca/stetho-realm

업데이트 # 2 : 이제 Stetho를 사용하여 Couchbase 문서를 볼 수 있습니다 : https://github.com/RobotPajamas/Stetho-Couchbase

업데이트 # 3 : Facebook은 모든 Stetho 기능을 새로운 도구 인 Flipper에 추가하기 위해 노력하고 있습니다. 플리퍼에는 이미 Stetho의 많은 기능이 있습니다. 따라서 이제 전환하기에 좋은시기 일 수 있습니다. https://fbflipper.com/docs/stetho.html


답변

에뮬레이터를 사용하지 않을 때 가장 간단한 방법

$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit
$ cp /data/data/your.package.name/databases/database_name /sdcard
$ run-as your.package.name # Optional
$ chmod 660 databases/database_name # Optional
$ chmod 660 databases # Optional
$ exit # Optional
$ exit
$ adb pull /sdcard/database_name

주의 사항 :

나는 이것을 한동안 테스트하지 않았습니다. API> = 25에서는 작동하지 않을 수 있습니다. cp 명령이 작동하지 않으면 다음 중 하나를 대신 시도하십시오.

# Pick a writeable directory <dir> other than /sdcard
$ cp /data/data/your.package.name/databases/database_name <dir>

# Exit and pull from the terminal on your PC
$ exit
$ adb pull /data/data/your.package.name/databases/database_name

설명:

첫 번째 블록은 데이터베이스의 권한을 읽을 수 있도록 구성합니다. 이를 통해 run-as패키지 사용자를 가장하여 변경할 수 있습니다.

$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit # Closes the shell started with run-as

다음으로 데이터베이스를 월드 읽기 가능 / 쓰기 가능 디렉토리에 복사합니다. 이것은 adb 풀 사용자 액세스를 허용합니다.

$ cp /data/data/your.package.name/databases/database_name /sdcard

그런 다음 기존 읽기 / 쓰기 권한을 바꾸십시오. 이는 앱 보안에 중요하지만 다음 설치시 권한이 대체됩니다.

$ run-as your.package.name
$ chmod 660 databases/database_name
$ chmod 660 databases
$ exit # Exit the shell started with run-as

마지막으로 데이터베이스를 로컬 디스크에 복사하십시오.

$ exit # Exits shell on the mobile device (from adb shell) 
$ adb pull /sdcard/database_name


답변

에서 안드로이드 스튜디오 3 이상 당신은 볼 수 있습니다 “장치 파일 탐색기를” 오른쪽 아래에 섹션이 있습니다.

파일 트리를 열면이 경로에서 응용 프로그램 데이터베이스를 찾을 수 있습니다.

/data/data/{package_name}/databases/

여기에 이미지 설명을 입력하십시오


답변

마지막으로 DDMS를 열 필요가없는 가장 간단한 솔루션을 찾았습니다.

실제로 솔루션은 @Distwo가 언급 한 내용을 기반으로하지만 그렇게 복잡 할 필요는 없습니다.

먼저 , 장치에서 데이터베이스 파일의 경로를 기억하십시오. 예를 들어 광산은 다음과 같습니다./data/data/com.XXX.module/databases/com.XXX.module.database

둘째 , 데이터베이스 파일을 PC로 가져 오는이 명령을 실행하십시오.

 adb pull /data/data/com.XXX.module/databases/com.XXX.module.database /Users/somePathOnYourPC/

이 명령을 복사하여 저장하면 반복해서 사용할 수 있습니다.

셋째 , Permission Denied 또는 이와 유사한 것이 있으면 adb root이전 명령 전에 실행 하십시오.


답변

이 안드로이드 스튜디오 플러그인 SQLScout을 사용해보십시오 . 앱 데이터베이스를 실시간으로보고 편집 할 수 있습니다.

SQLScout

편집 : 유료 플러그인이지만 24 시간 평가판이 있고 두통 시간에 적합하다는 것을 기억하십시오.