AndroidエミュレーターはSQLiteデータベースをどこに保存しますか?


108

SQLiteデータベースにデータを保存するAndroidアプリケーションに取り組んでいます。私の質問は、エミュレータを使用している場合、このデータベースファイルはファイルシステムのどこに保存されるのでしょうか。

それが保存されているのを見てきました

/data/data/package_name/databases

しかし、実際にマップするローカルマシンのハードドライブ上の場所を知る必要があります。マシンをシャットダウンした後でも、データベースはエミュレーターの複数の実行で存続するため、RAMに常駐することはできません...

回答:


55

エミュレータのファイルシステムは、ハードドライブ上のディレクトリにマップされません。エミュレータのディスクイメージはイメージファイルとして保存され、Eclipse(ツールバーのG1に見えるアイコンを探す)またはエミュレータバイナリ自体(オプションの説明については「emulator -help」を実行)のいずれかを介して管理できます。 。

コマンドラインからadbを使用して、実行中のエミュレーターに差し込むのが最善です。特定のディレクトリとファイル名を取得できる場合は、「adb pull」を実行して、データベースファイルをエミュレーターから通常のハードドライブに取得できます。

編集:これはルート化されていないデバイスでも機能するという提案を削除しました-エミュレーターと、ルートとしてadbを操作しているデバイスでのみ機能します。


6
私はEclipseからddms経由でDBを取得しました。変更を加えた後、差し戻しました。魅力のように働いた。
I82多くの

@ I82Muchも私のために働いた、日食の視点をddmsに変更すると、そこのデータファイルを取得できます。ありがとう。
vanzylv 2011

2013更新:Jelly Beanデバイスでは、rootでない場合はadb pull正確なパスを使用しても)できません。
Bill The Ape 2013

これはアップデートではありません。基本的にアプリの最初から、プライベートファイルはセキュリティで保護されたデバイスのadbからプライベートにされています。しかし、この質問は、adbがrootとして実行されるエミュレーターに関するものです。
Chris Stratton

6
ローカルマシンにエミュレータからデータベースを引っ張るための例はあるadb pull /data/data/com.activeandroid.test/databases/Application.db ~/Development/Application.db
ジョシュア・ピンター

123

以下のコメントで言及されている更新:

もうDDMSパースペクティブにいる必要はありません。Eclipse ウィンドウ>ビューの表示>その他...からファイルエクスプローラーを開くだけです。アプリを実行する必要はないようです。別のアプリファイルを参照できます。内容。ADBバージョン1.0.29を実行しています


または、古いアプローチを試すことができます。

Eclipse IDEでDDMSパースペクティブを開きます

ウィンドウ>パースペクティブを開く>その他> DDMS

そして最も重要な:

フォルダとファイルの階層を確認できるように、アプリケーションが実行されている必要があります。

次に、[ファイルエクスプローラ]タブで次のパスをたどります。

data> data> your-package-name> databases> your-database-file

次に、ファイルを選択し、画面の右隅にあるディスケットアイコンをクリックして、.dbファイルをダウンロードします。データベースファイルをエミュレータにアップロードする場合は、電話アイコン(ディスケットアイコンの横)をクリックして、アップロードするファイルを選択します。

.dbファイルの内容を確認したい場合は、ここからダウンロードできるSQLiteデータベースブラウザを使用することをお勧めします。

PS:実際のデバイスからデータベースを表示する場合は、電話をルート化する必要があります。


5
誰かが疑問に思っている場合は、[ファイルエクスプローラー]タブをクリックする必要があります。
MSpeed

こんにちは、サイバーログです。データベースファイルを見つけましたが、このファイルの開き方を教えてください。またはその内容を表示する方法は?
Nilesh Nikumbh 2011年

4
@NileshNikumbhファイルを選択し、ディスケットアイコンをクリックして、保存する場所を選択します。SQLite Browserもダウンロードする必要があります。sourceforge.net/projects/sqlitebrowserインストール後、.dbファイルを開き、[データの参照]タブと表示する列を選択するだけです。
rogcg 2011年

素晴らしいポスト!私はエミュレータデバイスからsqliteのファイルを取得して問題を抱えている:Failed to pull selection (null)
月-テリエ・ソーレンセン

@OckhamsRazor実際のデバイス(エミュレーターではない)からデータベースを表示する場合は、電話をルート化する必要があります。
rogcg 2012年

18

他の回答は非常に古くなっています。Androidのメーカーは、これはそれを行う方法は次のとおりです。

  1. [ ツール]> [Android]> [Androidデバイスモニター]をクリックします

ここに画像の説明を入力してください

  1. ファイルエクスプローラをクリックします

ここに画像の説明を入力してください

  1. dbファイルに移動し、[ 保存 ]ボタンをクリックします。

ここに画像の説明を入力してください


1
「AndroidデバイスモニターはAndroid Studio 3.1で廃止され、Android Studio 3.2から削除されました。Androidデバイスモニターで使用できる機能は、新しい機能に置き換えられました...」developer.android.com/studio/profile/monitor
ピートアルビン

8

Android Studio 3.4.1では、Android Studioの検索機能を使用して「Device File Explorer」を見つけ、エミュレータの/ data / data / package_name / databaseディレクトリに移動できます。


6

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

6

質問はAndroid Studioに限定されていないため、私はVisual Studio 2015(Xamarin用に動作)のパスを示しています。

ツール-Android-Androidデバイスモニター

ここに画像の説明を入力してください

  • 上の画像に示されているデータベースファイルを見つけ、画像2に示すようにPullボタンをクリックします。
  • ファイルを目的の場所に保存します。
  • SQLite StudioまたはDBite for SQLiteを使用してそのファイルを開くことができます。

この質問の他の回答者に特に感謝します。


4

データベースはSQLiteファイルとして/ data / data / PACKAGE / databases / DATABASEFILEに保存されます。

  • PACKAGEは、AndroidManifest.xmlで宣言されたパッケージです(タグ "manifest"、属性 "package")
  • DATABASEFILEは、http://developer.android.com/guide/topics/data/data-storage.html#dbで説明されているように、SQLiteOpenHelperコンストラクターを呼び出すときに渡される名前です。

[ファイルエクスプローラー]タブの[ DDMSパースペクティブ ]を選択するエミュレーターでデータベースファイルを確認(ファイルシステムから/にファイルシステムへ)できます。


3

シンプルなソリューション-エミュレーターと接続デバイスの両方で機能します

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フォルダにデータベースを見つけるでしょう


OS Xを使用している場合、opensslのzlib部分が欠落している可能性があります。:あなたは、この回避策を使用することができます $ 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
マティアス

0

Android docsによると、MonitorはAndroid Studio 3.1で廃止され、Android Studio 3.2から削除されました。ファイルにアクセスするために、Android Studioには、開発ウィンドウの右下にある「デバイスファイルエクスプローラー」と呼ばれるタブがあり、エミュレーターファイルシステムにアクセスできます。ただ従う

/ data / data / package_name / databases

幸運を。

Androidデバイスファイルエクスプローラー


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.