IT story

Android Studio에서 데이터베이스 파일 내용보기

hot-time 2020. 4. 18. 09:39
반응형

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/

5- 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

Android Studio 3 이상 에서는 Android Studio의 오른쪽 아래에 "장치 파일 탐색기" 섹션이 있습니다.

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

/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 시간 평가판이 있으며 두통 시간에 적합하다는 것을 기억하십시오.


모든 솔루션을 거친 후 제안합니다

Stethos 사용
얼마나 간단한 지 살펴 보겠습니다

build.gradle 파일에 다음 종속성 추가

compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'

그런 다음 mainActivity onCreate 메소드로 이동하여 다음 줄을 추가하십시오.

Stetho.initializeWithDefaults(this);

이것은 당신이 필요합니다

import com.facebook.stetho.Stetho;

이제 android studio, Open Chrome 및 주소 표시 줄 유형 chrome : // inspect / 에서 앱을 실행하는 동안

리소스 탭> 웹 SQL에서 데이터베이스 및 테이블 재생을 실시간으로 쉽게 확인하십시오.


android studio에서 sqlite 데이터베이스가 저장된 위치를 알려면 간단한 단계를 수행해야합니다.

1.Run your application
2.Go to Tools--->Android---->Device Monitor
3.Find your application name in left panel
4.Then click on File Explorer tab
5.Select data folder
6.Select data folder again and find your app or module name
7.Click on your  database name
8.On right-top window you have an option to pull file from device.
9.Click it and save it on your PC
10.Use FireFox Sqlite manager to attach it to your project.

자세한 내용은이 링크가 유용합니다. http://www.c-sharpcorner.com/UploadFile/e14021/know-where-database-is-stored-in-android-studio/

db 파일에 존재하는 데이터를 보려면 sqlite 브라우저를 다운로드하거나 브라우저에서 동일한 플러그인을 추가해야하므로 브라우저에서 파일을 열고 데이터를 봐야합니다.

http://sqlitebrowser.org/ 에서 브라우저를 다운로드 하십시오.

등록 데이터베이스가 포함 된 브라우저를 보여주는 스크린 샷입니다

감사,


가장 간단한 방법은 기기를 연결하고 툴바에서 Android Studio를 실행하는 것입니다.

  1. 보기-> 도구 창-> 장치 파일 탐색기
  2. 데이터 / 데이터로 이동하여 패키지 찾기
  3. 탐색하려는 DB 파일을 찾아서 다운로드하십시오.
  4. 이 온라인 도구 : https://sqliteonline.com/ 에서 db 파일을 탐색하는 것이 좋습니다.

또 다른 방법은 Stetho 라이브러리를 사용하는 것입니다.

  1. build.gradle에 Stello 종속성을 추가하십시오.

    'com.facebook.stetho : stetho : 1.5.0'컴파일

  2. Application 클래스 또는 주요 활동의 onCreate ()에 다음 줄을 넣으십시오.

    Stetho.initializeWithDefaults (this);

  3. 기기를 연결하고 앱을 실행 한 다음 Chrome에서 다음 사이트를 입력하십시오.

    chrome : // inspect / # devices

그게 다야. 이제 테이블을 탐색 할 수 있습니다.

참고 : 프로덕션으로 이동하기 전에 종속성을 제거하는 것이 좋습니다.


ANDROID STUDIO에서 데이터베이스를 탐색하려면 다음을 사용하십시오.

파일 / 설정 / 플러그인으로 이동하여 다음을 찾으십시오.

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

... Android Studio를 다시 시작한 후 다음과 같이 다운로드 한 데이터베이스 파일을 선택할 수 있습니다. 여기에 이미지 설명을 입력하십시오

... Click the "Open SQL Console" icon, and you end up with this nice view of your database inside Android Studio: ! [여기에 이미지 설명 입력


Open the Device File Explore Terminal at the Bottom of the Android Studio.

Open The folder named Data , then inside Data again open the Folder Data .

폴더 데이터를 엽니 다

Scroll Down the list of folders and find the folder with your.package.name. Open folder your.package.name > Database. You get your.databaseName. Right Click your.databaseName and Save as to C:/your/Computer/Directory.

Go to C:/your/Computer/Directory open your.databaseName with DB SQLite

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


For Android Studio 3.X

  1. View -> Tool Windows -> Device File Explorer
  2. In The File Explorer data->data->com.(yourapplication package)->databases
  3. Right Click On The Database And Save on your local machine. To open, the file you can use SQLite Studio by just dragging the Database file on it.

Here is the link to SQLite Studio : https://sqlitestudio.pl/index.rvt?act=download


This is a VERY old question and my answer is similar to some answers above but done MUCH faster. The script below is for Mac but I'm sure someone can modify it for Windows.

1) Open Script Editor on your Mac (you can just search for Script Editor in Spotlight)
2) Copy and paste the text below and modify it with your SDK path, package name, etc. (see below)
3) Save the script!!

Thats's it! Just press the play button on top to get the updated database file, which will be on your desktop.

replace the following things in the script below:

path_to_my_sdk ==>> put full path to your sdk
my_package_name ==>> package name of your application
myDbName.db ==>> file name of your database

set getLocalDb to "path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases && path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases/myDbName.db && path_to_my_sdk/platform-tools/adb shell run-as my_package_name cp databases/myDbName.db /sdcard/myDbName.db && path_to_my_sdk/platform-tools/adb pull /sdcard/myDbName.db /Users/User/Desktop/myDbName.db"
do shell script getLocalDb

Hope this helps someone.


I'm using windows 7, my device is a emulated android device API 23. I suppose it is the same for any real device as long as it is rooted and the API is not above 23

Go to Tools -> Android -> Android Device Monitor. Go to File Explorer. In my case, it is in data/data//app_webview/databases/file_0/1

I have to manually add .db at the end of the file named "1"


I know the question is rather old but I believe this issue is still present.

Viewing databases from your browser

I created a development tool that you can integrate as a lib into your android app project. The tool opens a server socket in your app to communicate via web browser. You can browse through your whole database and download the database file directly through the browser.

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

Integration can be done via jitpack.io:

project build.gradle:

//...
allprojects {
    repositories {
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}
//...

app build.gradle:

//...
dependencies {
    //...
    debugCompile 'com.github.sanidgmbh:debugghost:v1.1'
    //...
}
//...

Setup Application class

In order to only compile DebugGhostLib in certain build-types or product-flavours we need an abstract Application class which will be derived in the special flavours. Put the following class in your main folder (under java > your.app.package):

public class AbstractDebugGhostExampleApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // Do your general application stuff
    }
}

Now, for your release build type (or product flavour), you add the following Application class to your release (or product-flavour) folder (also under java > your.app.package):

public class MyApp extends AbstractDebugGhostExampleApplication {
    @Override
    public void onCreate() {
        super.onCreate();
    }
}

This is the application class that will not reference DebugGhostLib.

Also tell your AndroidManifest.xml that you're using your own application class. This will be done in your main folder:

<manifest package="demo.app.android.sanid.com.debugghostexample" xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- permissions go here -->
    <application android:name=".MyApp"> <!-- register your own application class -->
        <!-- your activities go here -->
    </application>
</manifest>

Now, for your debug build type (or product flavour), you add the following Application class to your debug (or product-flavour) folder (also under java > your.app.package):

public class MyApp extends AbstractDebugGhostExampleApplication {
    private DebugGhostBridge mDebugGhostBridge;

    @Override
    public void onCreate() {
        super.onCreate();

        mDebugGhostBridge = new DebugGhostBridge(this, MyDatabaseHelper.DATABASE_NAME, MyDatabaseHelper.DATABASE_VERSION);
        mDebugGhostBridge.startDebugGhost();
    }
}

You can get the tool here.


I had to pull the database from phone to PC. Now I use this very well made and free app which has a lot of features. It works on API 4.1+with a Rooted device.
Let me know if you find how to make it work without root.

SqlitePrime 스크린 샷

https://play.google.com/store/apps/details?id=com.lastempirestudio.sqliteprime


Its a combination from other answers with a plus

  1. Install DB Browser for SQLite
  2. Get the exact location from Device File Explorer for MyBase.db something like "/data/data/com.whatever.myapp/databases/MyBase.db"
  3. Set the project window from Android to Project - so you can see the files (build.gradle, gradle.properties,...etc)
  4. In Project window right click and chose Open in Terminal
  5. In terminal you are now in the root director of your application from the hardisk so execute: adb pull /data/data/com.whatever.myapp/databases/MyBase.db
  6. Now on the Project window of you Android Studio you have a file "MyBase.db"
  7. Double click your db file from Project and you can now browse/edit your databases in DB Browser
  8. When you are ready just do Write Changes in DB Browser so databases are saved on hardisk
  9. In terminal with the command: adb push MyBase.db /data/data/com.whatever.myapp/databases/MyBase.db you just send from the Hardisk to device the edited database.

This might not be the answer you're looking for, but I don't have a better way for downloading DB from phone. What I will suggest is make sure you're using this mini-DDMS. It will be super hidden though if you don't click the very small camoflage box at the very bottom left of program. (tried to hover over it otherwise you might miss it.)

Also the drop down that says no filters (top right). It literally has a ton of different ways you can monitor different process/apps by PPID, name, and a lot more. I've always used this to monitor phone, but keep in mind I'm not doing the type of dev work that needs to be 120% positive the database isn't doing something out of the ordinary.

Hope it helps

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


I've put together a unix command-line automation of this process and put the code here:

https://github.com/elliptic1/Android-Sqlite3-Monitor

It's a shell script that takes the package name and database name as parameters, downloads the database file from the attached Android device, and runs the custom script against the downloaded file. Then, with a unix tool like 'watch', you can have a terminal window open with a periodically updating view of your database script output.

참고 URL : https://stackoverflow.com/questions/17529766/view-contents-of-database-file-in-android-studio

반응형