286

Android Studioがリリースされて以来、アプリの開発にAndroid Studioを使用しています。

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

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

あまりにも複雑です。Android Studioでこれを行うためのより良い方法はありますか(Eclipseの方が簡単だと思います)?

4

31 に答える 31

206

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

私はAndroid Studioでそれを行う方法を見つけていませんが、毎回ファイルをプルするのではなく、リモートシェルでデータベースにアクセスしています.

ここですべての情報を見つけてください: 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 を実行してデータベースに接続します。

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
    
于 2013-08-16T19:07:19.870 に答える
74

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

$ 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
于 2015-05-15T17:51:00.417 に答える
64

Android Studio 3以降では、Android Studio の右下に「デバイス ファイル エクスプローラー」セクションが表示されます。

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

/data/data/{package_name}/databases/

ここに画像の説明を入力

于 2017-12-28T06:48:21.250 に答える
28

最後に、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、前のコマンドの前に実行してください。

于 2013-12-13T04:32:09.157 に答える
16

Try this android studio plugin SQLScout. you can see and edit your app database realtime.

SQLScout

Edit: Remember it's a paid plugin, but have 24h trial and suitable for headache time.

于 2016-10-10T15:51:26.477 に答える
4

Android Studio 4.1 Canary および Dev previewのリリースにより、次の新しいツールを使用できるようになりました。

データベース インスペクター

DBインスペクター

AS 4.1+ をインストールし、アプリを実行し、データベース インスペクターを開きます。データベース インスペクター パネルの左側にデータベース ファイルを表示し、テーブルを選択してコンテンツを表示できます。

ライブ クエリ

Run SQLオプションを使用してクエリを実行するか、 Roomを使用している場合はデータベース インスペクタを開いてアプリを実行し、@Query注釈の左側にある実行ボタンをクリックして、インターフェイスで DAO クエリを実行できます。

ライブ クエリ

于 2020-04-09T19:39:35.297 に答える
2

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

また、フィルターなしというドロップダウン (右上)。文字通り、PPID、名前などでさまざまなプロセス/アプリを監視できるさまざまな方法があります. 私は常にこれを使用して電話を監視してきましたが、データベースが異常なことをしていないことを 120% 確認する必要があるような開発作業を行っているわけではないことに注意してください。

それが役に立てば幸い

ここに画像の説明を入力

于 2013-08-13T11:18:29.607 に答える
2

これは非常に古い質問であり、私の答えは上記のいくつかの答えに似ていますが、はるかに高速です。以下のスクリプトは 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

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

于 2016-12-27T19:35:21.140 に答える
1

なぜこの解決策がここで言及されなかったのだろうか!

...Android Studio 4.1 以降では...

1.Run your app on an emulator or connected device running API level 26 or higher.

2.Select View > Tool Windows > Database Inspector from the menu bar.

3.Select the running app process from the dropdown menu.

4.The databases in the currently running app appear in the Databases pane. Expand the node for the database that you want to inspect.

ここに画像の説明を入力

于 2021-05-13T19:19:08.907 に答える
0

私はWindows 7を使用しています。私のデバイスはエミュレートされたAndroidデバイスAPI 23です。ルート化されていてAPIが23を超えていない限り、実際のデバイスでも同じだと思います

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

「1」という名前のファイルの最後に.dbを手動で追加する必要があります

于 2017-05-23T03:33:23.473 に答える
0

他の回答とプラスの組み合わせ

  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 Browser でデータベースを参照/編集できるようになります。
  8. 準備ができたら、DB Browser で Write Changes を実行して、データベースがハード ディスクに保存されるようにします。
  9. ターミナルで次のコマンドを実行します: adb push MyBase.db /data/data/com.whatever.myapp/databases/MyBase.db 編集したデータベースをハーディスクからデバイスに送信するだけです。
于 2019-03-17T21:54:53.977 に答える