web-dev-qa-db-ja.com

Android Studioでデータベースファイルの内容を表示する

私は Android Studio を使って、それがリリースされてから私のアプリを開発してきました。

最近まで、データベースファイルをチェックしながらデバッグする必要がありました。データベースを直接見る方法がわからないので、データベースファイルを生成するためにデバッグしたときには、データベースファイルを自分の電話機からPCにエクスポートする必要があります。

これを行うには、DDMS > File Explorerを開く必要があります。 DDMSを開くと、USBを再接続する必要があり、デバッグスレッドがなくなります。データベースファイルを確認したら、DDMSを閉じてUSBを再接続してデバッグモードに戻る必要があります。

複雑すぎます。誰もがAndroid Studioでこれを実行するためのより良い方法を持っていますか(私はそれがEclipseでより簡単であることを知っています)?

207
Scott Zhu

最後に、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/

あなたがする必要があるのは単にこのコマンドをコピーして保存することです、そしてあなたはそれを何度も何度も使うことができます。

第3 、もしあなたがPermission Deniedかそのようなものを持っているのなら、前のコマンドの前にadb rootを実行してください。

21
Scott Zhu

Android St​​udioからのデータベースの表示:

編集:エミュレーターでデータベースを表示するには、次の手順を実行します(実際のデバイスの場合は、一番下までスクロールします):

  1. SQLiteBrowser をダウンロードしてインストールします。
  2. データベースをデバイスからPCにコピーします。

    • Android Studioバージョン<3.

      • 開くDDMS via Tools > Android > Android Device Monitor

      • デバイスをクリック左側。
        アプリケーションが表示されます。 enter image description here

      • File Explorer(右側のタブの1つ)に移動し、/data/data/databasesに移動します enter image description here

      • データベースを選択クリックするだけです。

      • Android Device Monitorウィンドウの右上隅に移動します。 「ファイルをプル device」ボタンをクリックします。 enter image description here

      • データベースファイルを保存する場所を尋ねるウィンドウが開きます。 保存 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を開きます。 「open database」をクリックし、データベースファイルを保存した場所に移動して、openを選択します。これで、データベースの内容を表示できます。


モバイルデバイスでデータベースを表示するには:

this Githubリポジトリに移動し、readmeの指示に従って、デバイスでデータベースを表示します。あなたが得るものは次のようなものです:

enter image description here

それでおしまい。ただし、アプリを公開する前にこれらの手順をすべて元に戻す必要があることは言うまでもありません。

278

ADBシェル経由でSqlite 3に接続する

私は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-あなたのdbに接続するためにsqlite3を実行します。

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
    
184
Distwo

エミュレータを使用しない場合の最も簡単な方法

$ 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 pullユーザーアクセスが許可されます。

$ 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
68
diedthreetimes

私は実際には誰もがこの解決策を与えていないことに非常に驚いています。

Stetho をご覧ください。

私はさまざまな目的でStethoを何度か使用しました(その1つがデータベース検査です)。実際の ウェブサイト で、彼らはまたネットワーク検査とビュー階層を通して見るための機能について話します。

1つのグラドル依存関係の追加(本番ビルドではコメントアウトできます)、Stethoをインスタンス化するための数行のコード、およびChromeブラウザ(すべてにChrome開発ツールが使用されているため)が必要です。

更新 :Stethoを使ってRealmファイルを閲覧できるようになりました(SQLite DBの代わりにRealmを使っている場合): https://github.com/uPhyca/stetho-realm

Update#2 :Stethoを使ってCouchbaseのドキュメントを閲覧できるようになりました: https://github.com/RobotPajamas/Stetho-Couchbase

更新#3 :FacebookはStethoのすべての機能を新しいツールFlipperに追加することに力を注いでいる。 FlipperはStethoが持っている多くの機能を既に持っています。それで、今は切り替えをする良い時期かもしれません。 https://fbflipper.com/docs/stetho.html

67
w3bshark

Android Studio 3 以上の上Android Studioの右下側に "Device File Explorer" セクションがあります。

それを開くと、ファイルツリーが表示され、このパスにアプリケーションデータベースを見つけることができます。

/data/data/{package_name}/databases/

enter image description here

39
Ali Zeynali

このAndroidスタジオプラグインを試してみてください SQLScout 。アプリデータベースをリアルタイムで表示および編集できます。

SQLScout

編集: これは有料のプラグインですが、24時間トライアルで頭痛の時間に適しています。

15

すべての解決策を通過した後に私はお勧めします

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スタジオ、Open Chrome、およびアドレスバータイプからアプリを実行中
chrome:// inspect/

[リソース]タブ> [Web SQL]で、データベースとテーブルの再生をリアルタイムで簡単に確認できます。

6
ShankPossible

SqliteデータベースがAndroid Studioであなたによって作成された場所を知るためには、簡単な手順に従う必要があります。

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/ からブラウザをダウンロードしてください。

これは登録データベースを含むブラウザを示すスクリーンショットです。

ありがとう、

5
MD05

最も簡単な方法は、デバイスを接続してAndroid Studioを起動し、次にツールバーから実行することです。

  1. 表示 - >ツールウィンドウ - >デバイスファイルエクスプローラ
  2. Data/dataに行き、あなたのパッケージを見つけてください
  3. 調べたいDBファイルを見つけてダウンロードします。
  4. 私はこのオンラインツールをお勧めします: https://sqliteonline.com/ / dbファイルを探索する

別の方法はStethoライブラリを使うことです。

  1. Build.gradleにStello依存関係を追加します。

    'com.facebook.stetho:stetho:1.5.0'をコンパイルしてください。

  2. アプリケーションクラスのonCreate()またはメインアクティビティに次の行を追加します。

    Stetho.initializeWithDefaults(this);

  3. デバイスを接続してアプリを実行し、Chromeで次のサイトに入ります。

    chrome:// inspect /#devices

それがそれです。今すぐあなたのテーブルを探索することができます。

注:本番に移行する前に依存関係を削除することをお勧めします。

4
Gal Rom

Android Studioの下部にあるDevice File Exploreターミナルを開きます。

という名前のフォルダ データ その後、データ内でフォルダをもう一度開きます。 データ

Open the folder data

フォルダーのリストを下にスクロールして、 your.package.nameでフォルダーを見つけます。 フォルダを開く your.package.name > データベース your.databaseName となります。 your.databaseName を右クリックし、C:/ your/Computer/Directoryに名前を付けて保存します。

Cに移動します:/あなたの/コンピュータ/ディレクトリオープン your.databaseName with DB SQLite

enter image description here

2
eLi

Android Studio 3.Xの場合

  1. 表示 - >ツールウィンドウ - >デバイスファイルエクスプローラ
  2. ファイルエクスプローラーでデータ - >データ - > com。(yourapplicationパッケージ) - >データベース
  3. データベースを右クリックしてローカルマシンに保存します。開くには、データベースファイルをドラッグするだけでSQLite Studioを使用できます。

これはSQLite Studioへのリンクです: https://sqlitestudio.pl/index.rvt?act=download

2
Jawad Zeb

私は質問がかなり古いことを知っていますが、この問題はまだ存在していると思います。

ブラウザからデータベースを表示する

Androidアプリプロジェクトにlibとして統合できる開発ツールを作成しました。このツールは、アプリでサーバーソケットを開き、Webブラウザー経由で通信します。データベース全体を閲覧し、ブラウザから直接データベースファイルをダウンロードできます。

enter image description here

統合は、jitpack.ioを介して実行できます。

プロジェクトbuild.gradle:

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

アプリbuild.gradle:

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

セットアップアプリケーションクラス

特定のビルドタイプまたは製品フレーバーでDebugGhostLibのみをコンパイルするには、特別なフレーバーで派生する抽象Applicationクラスが必要です。次のクラスをmainフォルダー(Java> your.app.packageの下)に配置します。

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

リリースビルドタイプ(または製品フレーバー)の場合、次のApplicationクラスをrelease(または製品フレーバー)フォルダー(Java> your.app.packageの下)に追加します。

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

これは、DebugGhostLibをnot参照するアプリケーションクラスです。

また、独自のアプリケーションクラスを使用していることをAndroidManifest.xmlに伝えます。これはmainフォルダーで行われます:

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

ここで、デバッグビルドタイプ(または製品フレーバー)について、次のApplicationクラスをdebug(または製品フレーバー)フォルダー(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();
    }
}

tool here を取得できます。

1
TheSmile

私はwindows 7を使用しています、私のデバイスはエミュレートされたAndroidデバイスAPI 23です。

[ツール] - > [Android] - > [Android Device Monitor]に移動します。ファイルエクスプローラに移動します。私の場合は、data/data // app_webview/databases/file_0/1にあります。

"1"という名前のファイルの末尾に手動で.dbを追加する必要があります。

1
Asyraf Arifin

私はデータベースを電話からPCに引っ張らなければなりませんでした。今、私は多くの機能を持っているこの非常によくできていて無料のアプリを使います。それは Rooted deviceでAPI 4.1+上で動作します。
rootなしで動かす方法を見つけたら教えてください。

Screenshot SqlitePrime

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

1
vovahost

これは非常に古い質問です、そして私の答えは上のいくつかの答えに似ていますがはるかに速くしました。下記のスクリプトはMac用ですが、誰かがWindows用に修正できると確信しています。

1)Mac上でScript Editorを開きます(SpotlightでScript Editorを検索できます)。
2)以下のテキストをコピーして貼り付け、SDKのパス、パッケージ名などを使用して変更します(下記参照)。
3)スクリプトを保存してください。

それはそれだ!上部にある再生ボタンを押すだけで、更新されたデータベースファイルがデスクトップに表示されます。

以下のスクリプトで以下のものを置き換えます。

path_to_my_sdk == >>あなたのsdkへのフルパスを入れる
my_package_name == >>アプリケーションのパッケージ名
myDbName.db == >>データベースのファイル名

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

これが誰かに役立つことを願っています。

プラスと他の答えからのその組み合わせ

  1. インストール SQLite用DBブラウザ
  2. 「/data/data/com.whatever.myapp/databases/MyBase.db」のように、MyBase.dbのデバイスファイルエクスプローラから正確な場所を取得します。
  3. プロジェクトウィンドウをAndroidからProjectに設定します - ファイルを見ることができます(build.gradle、gradle.propertiesなど)。
  4. プロジェクトウィンドウで右クリックしてターミナルで開くを選択
  5. 端末では、ハードディスクからアプリケーションのルートディレクタに移動したので、次のコマンドを実行します。adb pull /data/data/com.whatever.myapp/databases/MyBase.db
  6. Android Studioのプロジェクトウィンドウに、 "MyBase.db"というファイルがあります。
  7. Projectからdbファイルをダブルクリックすると、DBブラウザでデータベースを閲覧/編集できます。
  8. データベースがハードディスクに保存されるように準備ができたら、DBブラウザでWrite Changesを実行します。
  9. Adb Push MyBase.db /data/data/com.whatever.myapp/databases/MyBase.dbを編集したデータベースを作成するためにハードディスクから送信するだけです。
0
laurghita

あなたがAndroid STUDIOの中からあなたのデータベースを閲覧したいならば、ここに私が使っているものがあります:

Files/Settings/Pluginsに行き、これを探してください。

enter image description here

... Android Studioを再起動したら、ダウンロードしたデータベースファイルを次のように選択できます。 ( enter image description here

... [SQLコンソールを開く]アイコンをクリックすると、Android Studio内でこのデータベースのナイスビューが表示されます。 ( ![enter image description here

0
j3App

私はこのプロセスのunixコマンドライン自動化をまとめて、ここにコードを入れました:

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

これは、パッケージ名とデータベース名をパラメータとして受け取り、接続されているAndroidデバイスからデータベースファイルをダウンロードし、ダウンロードしたファイルに対してカスタムスクリプトを実行するシェルスクリプトです。それから、 'watch'のようなunixツールを使うと、ターミナルスクリプトウィンドウを開いてデータベーススクリプトの出力を定期的に更新することができます。

0
elliptic1

これはあなたが探している答えではないかもしれませんが、私は電話からDBをダウンロードするためのより良い方法を持っていません。私が提案するのは、このミニDDMSを使用していることを確認することです。あなたがプログラムの一番下の左の非常に小さいcamoflageボックスをクリックしないなら、それは非常に隠されるでしょう。 (そうでなければあなたはそれを見逃すかもしれません)

ドロップダウンリストにはフィルターがありません(右上)。それは文字通りあなたがPPID、名前、そしてもっとたくさんのものによってあなたが異なるプロセス/アプリを監視することができる異なる方法のトンを持っています。私はいつも電話を監視するためにこれを使っていました、しかし私はデータベースが普通のことから何かをしていない120%の肯定的である必要があるタイプの開発作業をしていないことを覚えておいてください。

それが役に立てば幸い

enter image description here

0
nocommit